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
