ASM64 by High Society [web]
asm64 - the first multi-pass assembler for the n64(tm) (mips(tm) r4xxx) by Stage of HiGH SOCiETY Starting point : 20.03.1997 win32 V.995 : 5.10.1997 ***************************************************************************** Note that this is "own-risc" software. The author is not responsible for the use or misuse of this program. All trademarks are ofcourse owned be their respective owners.;) THIS IS NO SHRINK-TO-FIT-SOFTWARE! ***************************************************************************** Attention: If you do not know how to use this software, don't use it! What kind of software is it? asm64 is freeware unless you want money for it! What's it? asm64 is a three-pass-assembler, developed for the MIPS r4xxx processor found in some sgi(tm) workstations, but nowadays also found in most video- consoles (if they come from big-n). asm64 is a three-pass-assembler and the reason for taking 3 passes is for letting include (.include) files, and I really didn't know how to handle instead! But take a closer look yourself! What's it for? asm64 might be used to code fascinating demos & intros, whole games, or - ?? - the first table-calculation for the n64. Use it for whatever u want (and ofcoz whatever it can) and if you're happy using it I'll be happy too! Complete command listing ***************************************************************************** OPCODES ******* All opcodes implemented. Must be lowercase. But please take care: Some opcodes may differ from your manual. <break> must have a parameter: a 20bit value. <syscall> --"-- <teq> must have a third parameter : a 10bit value <tge> --"-- <tgeu> --"-- <tlt> --"-- <tltu> --"-- <tne> --"-- Why? Because all these commands have the possibility to contain data! If you don't need it: $0 might be the solution! OPERANDS ******** Are going like this: Registers Value 5bit with/without leading r like r01,$01,%0100 Immediates Value 16bit with/without leading # Offsets Value 16bit -$10, START (=label) Shift-Amounts Value 5bit with/without leading # Targets value 26bit $19201, START (=label) Base/Offsets dualvalue offset(base) $10(r02) 16bit (register) OPERATORS ********* equ defines value for constant (like "REG01 equ $01") + plus - minus * multiply / divide | boolean or & boolean and () parathensis Big thx's to ZEN for his code! NUMERIC SYSTEMS *************** % is for binary numbers. $ is for hexadecimal numbers. LABELS ****** End with ":" (doublepoint) like "startup:" Must not exceed 32 characters can contain A-z,"_",0-9 CONSTANTS ********* Must not exceed 32 characters can contain A-z,"_",0-9 NOTE! Labels and Constants are both treatened as "symbols" and so you can't use a name for a label AND for a constant. You might want to type your Constants uppercase for better readability and it'll be possible that I only allow uppercase constants in future!?!?!? And: Don't let your symbols begin with "__" (double underscore/line) 'cause in the upcoming (when?) developing libraries there will be much reserved names beginning with "__". PSEUDO-OPCODES ************** Are many and like.... .org n defines base address (max 32bit) (<- now only supports 31bit) .file "file" inserts <file> at current address .nochangebytes makes a BIGENDIAN target-file (01 02 03 04) .changebytes makes a ... (02 01 04 03) .byte n,... stores n BYTES at current position Actually the only which supports string in quotes like .byte "hello world" .hword n,... stores n HWORDS (16bit) at current address .word n,... stores n WORDS (32bit) at current address .block n,m create memory block with n*BYTE m .align2 stores null-bytes till address is divisible by 2 .align4 --"-- 4 .align8 --"-- 8 .wantsize n stores null-bytes till file-size is n .v64header enables generating of a doctorV64 header... .romname "xx.." only when generating v64header: Name of rom (max 20byte) .romid "xx" only..........................: ID of rom (max 2byte) .romcountry "x" only..........................: CountryCode (max 1byte) .manufacturer "x" only..........................: Maker-ID (max 1byte) SOURCE_AFFECTING PSEUDO-OPCODES ******************************* .include "file" To include some of your file(s) for declaration or startup- code! REMARKS ******* Remarks begin with ";" and end each line. ***************************************************************************** What can you do to help me? *************************** First, I need information for ROM-Headers to implement them with pseudo- opcodes. Please contact me if you know more than I do. (Wich isn't really much!) What will the future bring? *************************** If the world keeps on turning the next future will bring you a "win95 developing environment" ;-) More rom-formats (if anyone provides me the information) macros more pseudo-opcodes (like #define -yep) a hundred bugfixes (no, hopefully not!) ***************************************************************************** Please contact me for any information except "Do u have commercial roms?" We just want to stay legal guyz..... If you have self-made roms, I'm ofcourse interested. I also suggest you to tell me whether you like this tool or not! Newest versions are available on: http://members.ping.at/stage/asm64.html The only real THANKYOUs go out to Actraiser and his stunning dextrose site, Jovis, Asgard and Hartec, and especially to Zen, everyone on the channels! Yours, Stage eMail: stage@ping.at
[ back to the prod ]