NEW AUTO 3,1 *-------------------------------------- * PAGE ZERO VARIABLES *-------------------------------- * $00 THRU $1F RESERVED FOR USER *---Apple Monitor, mostly-------- MON.WIDTH .EQ $21 CH80 .EQ $57B CH .EQ $24 CV .EQ $25 BASL .EQ $28 YSAVE .EQ $2F ESCAPE.FLAG .EQ $30 MON.MODE .EQ $31 MON.INVFLG .EQ $32 MON.YSAV .EQ $34 HOOK.OUT .EQ $36,37 HOOK.IN .EQ $38,39 A0L .EQ $3A A0H .EQ $3B A1L .EQ $3C A1H .EQ $3D A2L .EQ $3E A2H .EQ $3F *-------------------------------- * ProDOS USES $40-4F *-------------------------------- A3L .EQ $40 A3H .EQ $41 A4L .EQ $42 A4H .EQ $43 *-------------------------------- .DUMMY .OR $50 *-------------------------------- * * Following needed at all times * *-------------------------------- SCREEN.WIDTH .BS 1 INFLAG .BS 1 LO.MEM .BS 2 START OF SYMBOL TABLE EOT .BS 2 END OF SYMBOL TABLE PP .BS 2 START OF SOURCE PROGRAM HI.MEM .BS 2 END OF SOURCE CODE *-------------------------------- PAGE.NUMBER .BS 2 PAGE.LENGTH .BS 1 =0 means no titles LINE.COUNT .BS 1 DGTCNT .BS 1 INCREMENT.VALUE .BS 2 FOR AUTO-LINE-NUMBERING (INIT=10) CURLNO .BS 2 NUMBER OF LAST-SUBMITTED LINE (INIT=990) PASS .BS 1 PASS NUMBER (0=PASS 1, 1=PASS 2) CHAR.PNTR .BS 1 CURRENT.CHAR .BS 1 CURRENT CHARACTER FROM 'GNC' CURRENT.MAJOR.LABEL .BS 2 PNTR TO CURRENT MAJOR LABEL EXP.NEW .BS 1 NEW EXPRESSION FLAG STPNTR .BS 2 SYMBOL TABLE WORKING POINTER TPTR .BS 2 SYMBOL TABLE TEMP POINTER BASE.INDEX .BS 1 used in EXPR LC.MODE .BS 1 EXP.VALUE .BS 4 EXP.VALUE64 .BS 4 SYM.VALUE .BS 4 EXP.UNDEF .BS 1 UNDEFINED TERM FLAG EMIT.COLUMN .BS 1 KEEPS TRACK OF COLUMN FOR EMIT ORGN .BS 4 RPTCHR .BS 1 (NML, NTKN) RPTCNT .BS 1 (NML, NTKN) PNTR .BS 2 SEARCH STRING PNTR INSAVE .BS 8 *-------------------------------- CALL.NUM .BS 2 CURRENT MACRO CALL NUMBER MACLBL .BS 2 CONV.CTRL .BS 1 CONTROL FLAG INSIDE CONVERT.LINE.NUMBER MACRO.LEVEL .BS 1 PARAM.PNTR .BS 1 PARAM.CNT .BS 1 *-------------------------------- PROMPT.FLAG .BS 1 NULL, "H", OR "I" HIDE.HIMEM .BS 2 SAVES HIMEM DURING "HIDE" CURRENT.LINE.NUMBER .BS 2 LF.ALL .BS 1 =0 TO LIST, <0 TO NOT LIST LF.MACRO .BS 1 =0 TO LIST MACRO EXPANSIONS FLAG.SPEED .BS 1 DLIM .BS 1 ".AS" DELIMITER, also ASM SRCP .BS 2 POINTER TO CURRENT SOURCE LINE ENDP .BS 2 POINTER TO END OF LINE RANGE EXP.FWDREF .BS 1 AUTOLN.FLAG .BS 1 +=MANUAL, -=AUTO LINE NUMBERS LINE.START .BS 2 LINE.END .BS 2 *-------------------------------- ZP.COMMON .EQ * *-------------------------------- * * Variables used only during SPECIFIC commands * *-------------------------------- BLKSIZ .BS 1 used in MOVE.TEXT.UP and MOVE.TEXT.DOWN MOVE.DISTANCE .BS 2 used in NML, COPY, and MOVE.TEXT.UP AUTO.FLAG .BS 1 +=VERIFY, -=AUTO REPLACE CHANGE.CNT .BS 1 # OF REPLACEMENTS IN THIS LINE ED.FCOL .BS 1 ED.FKEY .BS 1 ED.PNTR .BS 1 ED.BEGLIN .BS 1 TEXT.OPTIONS .BS 1 used in TEXT command only REPLACE.LENGTH .BS 1 SOURCE.LENGTH .BS 1 WBUF.LENGTH .BS 1 KEY.PNTR .BS 2 USED IN FIND, REPLACE BUF.PNTR .BS 2 USED IN FIND, REPLACE KEY.ADDR .BS 2 SEARCH KEY ADDRESS MATCH.END .BS 1 LC.FLAG .BS 1 +=AS IS, -=ACCEPT BOTH CASES *-------------------------------- .OR ZP.COMMON *-------------------------------- * * Variables used only during Assembly * *-------------------------------- SEARCH.KEY .BS 3 USED BY OPCODE SEARCH ROUTINE OPTBL.PNTR .BS 2 USED BY OPCODE SEARCH ROUTINE DO.INDEX .BS 1 DO level: =0 if empty, else 1-63 DO.STACK .BS 8 64 bits, =1 if true DO.SKIP.CNT .BS 1 COUNTS .DO NESTS WHEN SKIPPING NYBBLE.FLAG .BS 1 .AC DIRECTIVE BYTE .BS 1 .AC DIRECTIVE PHASE.FLAG .BS 1 +=NORMAL, -=IN PHASE DUMMY.FLAG .BS 1 +=NORMAL, -=IN DUMMY SECTION TF.FLAG .BS 1 TRGT .BS 2 TARGET ADDRESS MACSTK .BS 2 MACRO STACK POINTER ERROR.COUNT .BS 2 *-------------------------------- OBJ.BYTE .BS 1 ADDR.LENGTH .BS 1 LF.CONDITIONAL .BS 1 =0 TO LIST FALSE SETS LF.XTRA.BYTES .BS 1 =0 TO LIST XTRA BYTES ON XTRA LINES EMIT.MARGIN .BS 1 COLUMN FOR LINE NUMBER TO START IN MACRO.SAVEX .BS 1 DUMMY.ORGN .BS 4 ORIGIN.SAVE .BS 4 FLAG.MA .BS 1 CALL.CNTR .BS 2 TOTAL # OF MACRO CALLS *-------------------------------- *---ONLY IN .BS DIRECTIVE-------- BS.COUNT .BS 2 # BYTES TO RESERVE *---ONLY IN .AS & .AT DIRECTIVES AS.HIBIT .BS 1 BIT 7 VALUE FOR .AS/.AT AT.HIBIT .BS 1 BIT 7 TOGGLE FOR LAST BYTE BIT 7 *-------------------------------- * *---$EB reserved for ECHO TEXTALKER software--- * *---$F0-FF reserved for ASM.PARTICULAR--- * *-------------------------------- .ED *-------------------------------- * CHARACTER CODES *-------------------------------- CHR.CTRL.I .EQ $89 CHR.RETURN .EQ $8D CHR.BLANK .EQ $A0 CHR.DOLLAR .EQ $A4 CHR.STAR .EQ $AA CHR.DASH .EQ $AD CHR.PERIOD .EQ $2E CHR.BSLASH .EQ $DC *-------------------------------- * MISCELLANEOUS SYMBOLS *-------------------------------- SYMBOL .EQ $0100 SYMBOL PACK AREA HSHTBL .EQ $0130 HASH POINTER TABLE KBUF .EQ $0170 - $01BF KEY STRING WBUF .EQ $0200 WORKING BUFFER WBUF.MAX .EQ 248 AND ITS LENGTH PATHNAME .EQ $2CE (LAST 50 BYTES) *-------------------------------- * ROM-BASED ROUTINES *-------------------------------- MON.PRNTAX .EQ $F941 MON.PRBL2 .EQ $F94A PRINT (X) BLANKS MON.INIT .EQ $FB2F TEXT MODE, FULL WINDOW MON.ADVANC .EQ $FBF4 MON.BS .EQ $FC10 MON.UP .EQ $FC1A MON.VTAB .EQ $FC22 MON.CLREOP .EQ $FC42 MON.HOME .EQ $FC58 MON.LF .EQ $FC66 MON.CLREOL .EQ $FC9C MON.DELAY .EQ $FCA8 MON.RDKEY .EQ $FD0C READ NEXT CHAR MON.READCH .EQ $FD18 MON.PHEX .EQ $FDDA PRINT BYTE IN HEX MON.COUT .EQ $FDED MON.BL1 .EQ $FE00 MON.SETKBD .EQ $FE89 MON.SETVID .EQ $FE93 MON.OUTPORT .EQ $FE95 SET NEW PR#N OUTPUT MON.BELL .EQ $FF3A RING THE BELL MON.RTS .EQ $FF58 ONLY AN "RTS" MNTR .EQ $FF69 CALL-151 ENTRY INTO MONITOR MON.GETNUM .EQ $FFA7 MON.TOSUB .EQ $FFBE MON.CHRTBL .EQ $FFCC MONITOR COMMAND CHAR TABLE *-------------------------------- MON.RESET .EQ $3F2 THRU 3F4 *-------------------------------- .MA INCD INC ]1 BNE :1 INC ]1+1 :1 .EM *-------------------------------- RDMAIN .EQ $C002 RDAUX .EQ $C003 RDROM .EQ $C082 RDRAM .EQ $C083 WRMAIN .EQ $C004 WRAUX .EQ $C005 AUX.CODE .EQ $DF00 *-------------------------------- .MA SYM .DO AUXMEM JSR ]1.]2 .ELSE ]1 (]2),Y .FIN .EM *-------------------------------------- MAN SAVE usr/src/scmasm.31/scmasm.s.data LOAD usr/src/scmasm.31/scmasm.s ASM