;KOWALSKI SIMULATOR ASSEMBLER DIRECTIVES — BigDumbDinosaur 2012/07/01 ; IO_AREA ;define console I/O area address (no leading dot in IO_AREA) .ASCII .BYTE .DB ;generate static data, such as strings, tables, etc. .ASCIS ;generate character string w/bit 7 of last byte set .DBYTE .DD ;assemble big-endian word .DCB ;equivalent to * = * + N, where N is arg to .DCB,... ;w/optional initialization pattern, e.g., .DCB 10,$FF, which will ;reserve 10 bytes & fill them with $FF .DS .RS ;equivalent to * = * + N, where N is arg to .DS or .RS .DW .WORD ;assemble little-endian word .ELSE ;conditional assembly directive .END ;mark end of source file, optional .ENDIF ;mark end of conditional assembly .ENDM ;mark end of macro definition .ENDR ;mark end of repeated text .ERROR ;emit an error message & halt assembly,... ;e.g., .ERROR "!!! operand out of range !!!" .EXITM ;halt macro expansion .IF ;start conditional assembly .INCLUDE ;insert contents of named source file... ;e.g., .INCLUDE "include\atomic.65s" .IO_WND ;define console I/O window size (cols, rows) .MACRO ;mark start of macro definition, w/optional comma-separated parameters .OPT ;set global assembly options .ORG ;set start of assembly address, same as * = .PARAMTYPE ;determine macro parameter type: 1 = numeric, 2 = string,... ;.IF .PARAMTYPE(.op) == 1 .REF ;determine if label/symbol was defined,... ;e.g., .IF .REF(ABC) evaluates true if... ;ABC has been defined; logic can be reversed... ;with !.REF (ABC) .REPEAT .REPT ;repeat following text N times .ROM_AREA ;set simulator's write-protected address range .SET ;(re)define variable value, e.g., .SET .= .START ;set simulator start of execution address .STR .STRING ;generate text string, 1st byte is length, 255 bytes maximum .STRLEN ;determine macro parameter string length ;.IF evaluations can use the following binary operators: ; ; == is equal to ; != is not equal to ; > is greater than ; < is less than ; ;.IF .op means "if .op is non-zero".