commit - 604985fff53a8b294b083d0edde3cdcb70a46cfc
commit + a818d5ffd729b0b3c9253d30d20a32964634607e
blob - 233780dc2f1d7a621bd37396919e4741cd3a0526
blob + 6b8d83420498126b8fafe2d41aed1485164f430a
Binary files LINEUTIL.B,PRG and LINEUTIL.B,PRG differ
blob - 9e604aedf27456965a03b2ec3306fa3dc707b213
blob + f44362a35f3657799cb9ee508a4fc93acaea5d88
--- LINEUTIL.B.lst
+++ LINEUTIL.B.lst
-0 REM BASASM - A SIMPLISTIC ASSEMBLER
-1 REM MADE IN BASIC. PESCO 2026
-2 REM
-3 REM 10 VARIABLES 700 *SAVE TO PRG
-4 REM 100 LOAD OPCODES 720 *PRINT SEQ F
-5 REM 130 SUBROUTINES 740 *MEMSTAT
-6 REM 200 MAIN LOOP 750 *READ IO ERR
-7 REM 300 FORWARD REFS 800 *HEXDUMP MEM
-8 REM 400 .DIRECTIVES 900 OPCODE TABLE
-9 REM 1000 ASSEMBLY PGM
-10 O = 49152 :REM STARTING POSITION
-11 P = O :REM CURRENT POSITION
-13 UN = 0 :REM UNDEF SYMBOL COUNT
-20 MN% = 150 :REM MNEMONIC MAX
-21 DIM MN$(MN%) :REM INST MNEMONICS
-22 DIM OP%(MN%) :REM INST OPCODES
-23 DIM LN%(MN%) :REM OPERAND LENGTHS
-24 DIM MI%(26) :REM ALPH. MNEM. INDEX
-25 SY% = 0 :REM SYMBOL COUNT
-26 SM% = 511 :REM SYMBOL MAX
-27 DIM SY$(SM%) :REM SYMBOL NAMES
-28 DIM SY(SM%) :REM SYMBOL VALUES
-30 PA% = 0 :REM PATCH COUNT
-31 PM% = 255 :REM PATCH MAX
-32 DIM PA(PM%) :REM PATCH POSITION
-33 DIM PA%(PM%) :REM PATCH LENGTH
-34 DIM PA$(PM%) :REM PATCH MODE (INST)
-35 DIM PS(PM%) :REM PATCH SYMBOL (IDX)
-99 REM
-100 REM - READ OPCODE TABLE FROM DATA -
-105 PRINT "LOAD OPCODES...";
-107 I = 0: A = 0
-110 READ O%: IF O% = -1 THEN 125
-112 OP%(I) = O%
-115 READ MN$(I), X%: LN%(I) = X% - 1
-117 B = ASC(MN$(I)) - 64
-118 IF B = A THEN 120
-119 A = A + 1: MI%(A) = I: GOTO 118
-120 I = I + 1: GOTO 110
-125 PRINT: IF I = MN% + 1 THEN 200
-127 PRINT "INVALID OPCODE DATA": END
-128 REM
-129 REM SUB: PARSE NUMBER, DEC OR HEX
-130 A = VAL(A$)
-132 IF LEFT$(A$,1) <> "$" THEN RETURN
-138 A$ = MID$(A$,2)
-139 IF A$ = "" THEN RETURN
-140 A = A * 16 + ASC(A$) - 48
-145 IF ASC(A$) > 64 THEN A = A - 7
-146 GOTO 138
-148 REM
-149 REM SUB: PARSE OPERAND, SYM OR NUM
-150 IF ASC(A$) > 64 THEN 152 :REM "A"
-151 A% = 0: GOTO 130 :REM PARSE NUM
-152 PRINT "["; A$; "] ";
-155 GOSUB 170: IF SY(A) <> -1 THEN 160
-157 A% = 1: RETURN :REM FAIL; A = IDX
-160 A = SY(A) :REM GET SYM. VALUE
-165 A% = 0: RETURN :REM SUCCESS
-168 REM
-169 REM SUB: LOOK UP SYMBOL
-170 A = 0
-171 IF A = SY% THEN 174 :REM NOT FND
-172 IF SY$(A) = A$ THEN RETURN
-173 A = A + 1: GOTO 171
-174 IF SY% < SM% + 1 THEN 176
-175 PRINT "TOO MANY SYMBOLS": END
-176 SY% = SY% + 1: UN = UN + 1
-177 SY$(A) = A$: SY(A) = -1: RETURN
-178 REM
-179 REM SUB: DEFINE SYMBOL
-180 GOSUB 170
-181 IF SY(A) = -1 THEN UN = UN - 1
-182 SY(A) = P: RETURN
-188 REM
-189 REM SUB: WRITE OPERAND
-190 IF M$ = "R" THEN A = A - P - 1
-191 IF L% < 1 THEN RETURN
-192 FOR J = 0 TO L% - 1
-193 R=A: A=INT(A/256): R=R-A*256 :REM/Q
-194 POKE P + J, R
-195 PRINT MID$(STR$(R), 2); "CLOSE";
-196 NEXT: RETURN
-199 REM
-200 REM - ASSEMBLE REST OF DATA -
-201 P=O: UN=0: SY%=0: PA%=0
-205 PRINT "ASSEMBLE..."
-210 READ M$
-211 IF ASC(M$) = 46 THEN 410 :REM "."
-215 IF ASC(M$) = 39 THEN 223 :REM "'"
-216 IF ASC(M$) = 36 THEN 219 :REM "$"
-217 IF ASC(M$) < 48 THEN 240 :REM "0"
-218 IF ASC(M$) > 57 THEN 240 :REM "9"
-219 A$ = M$: GOSUB 130 :REM NUM
-220 C = A: L% = 0: GOTO 270
-223 A$ = MID$(M$,2): GOSUB 180
-225 PRINT P; TAB(12); M$ :REM SYMDEF
-227 GOTO 210
-230 REM SEARCH FOR MNEMONIC
-240 A = ASC(M$) - 64
-242 FOR I = MI%(A) TO MN%
-245 IF MN$(I) = M$ THEN 260
-250 NEXT
-255 PRINT P; " UNKNOWN", M$: END
-260 C = OP%(I): L% = LN%(I)
-265 REM OUTPUT CODE
-270 PRINT P; C; TAB(13); M$; " ";
-275 POKE P, C: P = P + 1
-276 M$ = MID$(M$, 4) :REM ADDRESS MODE
-277 IF L% > 0 THEN GOSUB 290
-279 PRINT: GOTO 210
-288 REM
-289 REM SUB: OUTPUT OPERAND
-290 READ A$: GOSUB 150 :REM PARSE -> A
-291 IF A% = 0 THEN 295
-292 GOSUB 390 :REM RECORD PATCH
-293 A = 0 :REM DUMMY VALUE
-294 IF M$ = "R" THEN A = P :REM -> 0
-295 GOSUB 190 :REM WRITE OPERAND
-296 P = P + L%
-297 RETURN
-298 REM
-299 REM - AFTER END OF INPUT -
-300 PRINT "PATCH FWD REFS..."
-305 GOSUB 370 :REM PATCH FWD REFS
-310 IF UN = 0 THEN 340
-320 PRINT "UNDEFINED SYMBOLS:"
-325 FOR I = 0 TO SY%
-330 IF SY(I) = -1 THEN PRINT SY$(I),;
-335 NEXT: PRINT
-340 END
-368 REM
-369 REM SUB: PATCH FWD SYMBOL REFS
-370 IF PA% = 0 THEN RETURN
-371 FOR I = 0 TO PA% - 1
-372 P = PA(I): L% = PA%(I)
-373 A = PS(I): M$ = PA$(I)
-374 IF SY(A) = -1 THEN 378
-375 PRINT P + 1; TAB(13);
-376 PRINT "["; SY$(A); "] ";
-377 A = SY(A): GOSUB 190: PRINT
-378 NEXT
-380 FOR I = PA% - 1 TO 0 STEP -1
-382 IF SY(PS(I)) <> -1 THEN RETURN
-384 NEXT: RETURN
-388 REM
-389 REM SUB: RECORD SYM REF TO PATCH
-390 IF PA% <= PM% THEN 392
-391 PRINT "TOO MANY FWD REFS": END
-392 PA(PA%) = P: PA%(PA%) = L%
-393 PA(PA%) = P: PA%(PA%) = L%
-394 PS(PA%) = A: PA$(PA%) = M$
-395 PA% = PA% + 1: RETURN
-400 REM
-401 REM - ASSEMBLER DIRECTIVES -
-408 REM
-409 REM DISPATCH
-410 PRINT P; TAB(12); M$;
-420 IF M$ = ".DW" THEN 550
-430 IF M$ = ".DB" THEN 530
-440 IF M$ = ".DS" THEN 570
-441 IF M$ = ".DSZ" THEN 570
-445 IF M$ = ".DZ" THEN 580
-450 IF M$ = ".=" THEN 520
-490 IF M$ = ".END" THEN 510
-495 PRINT " UNRECOGNIZED"
-496 END
-499 GOTO 210 :REM HDLRS RET HERE
-500 REM
-509 REM .END - TERMINATE INPUT
-510 PRINT: GOTO 300
-518 REM
-519 REM .= - CHANGE CURRENT POSITION
-520 READ A$: GOSUB 150: PRINT A
-521 P = A
-522 GOTO 499
-528 REM
-529 REM .DB - OUTPUT RAW DATA BYTE
-530 M$ = "": L% = 1: GOSUB 290
-531 PRINT: GOTO 499
-548 REM
-549 REM .DW - OUTPUT 2-BYTE WORD
-550 M$ = "": L% = 2: GOSUB 290
-551 PRINT: GOTO 499
-567 REM
-568 REM .DS - OUTPUT PETSCII STRING
-569 REM .DSZ - OUTPUT ZERO-TERMINATED
-570 READ A$
-571 IF A$ = "" THEN 575
-572 X = ASC(A$): PRINT STR$(X);
-573 POKE P,X: P=P+1: A$ = MID$(A$,2)
-574 GOTO 571
-575 IF M$ = ".DS" THEN 577
-576 PRINT " 0";: POKE P,0: P=P+1
-577 PRINT: GOTO 499
-578 REM
-579 REM .DZ - OUTPUT N ZERO BYTES
-580 READ A$: GOSUB 150: N=A
-582 IF A <= 0 THEN PRINT N: GOTO 499
-584 POKE P,0: P=P+1
-586 A=A-1: GOTO 582
-699 REM
-700 REM *RUN 700* WRITE MEM TO PRG FILE
-701 REM
-702 FA = PEEK(186) :REM CURRENT DEVICE
-703 PRINT "DRIVE ["; FA; "]";
-704 D=0: INPUT D: IF D=0 THEN D=FA
-705 INPUT "FILE"; F$
-706 INPUT "START"; A$: GOSUB 130: P=A
-707 INPUT "STOP"; A$: GOSUB 830: Q=A
-708 PRINT "LOAD ["; P; "]";
-709 A$="": INPUT A$: GOSUB 130: L=A
-710 IF L=0 THEN L=P
-713 OPEN 1,D,2, F$ + ",PRG,W"
-714 H = INT(L / 256): L = L - H*256
-715 PRINT# 1, CHR$(L); CHR$(H);
-716 IF P >= Q THEN CLOSE 1: END
-717 PRINT# 1, CHR$(PEEK(P));
-718 P=P+1: GOTO 716
-719 REM
-720 REM *RUN 720* PRINT SEQ FILE
-721 REM
-722 INPUT "DRIVE"; D
-723 IF D=0 THEN D = PEEK(186)
-724 INPUT "FILE"; F$
-728 OPEN 1,D,2,F$ + ",SEQ,R"
-729 IF ST THEN CLOSE 1: END
-732 GET# 1, A$: PRINT A$;: GOTO 729
-737 REM
-738 REM *RUN 740* PRINT MEM STATS/PTRS
-739 REM
-740 PRINT 43,"TXTTAB",PEEK(43)+PEEK(44)*256
-741 PRINT 45,"VARTAB",PEEK(45)+PEEK(46)*256
-742 PRINT 47,"ARYTAB",PEEK(47)+PEEK(48)*256
-743 PRINT 49,"STREND",PEEK(49)+PEEK(50)*256
-744 PRINT 51,"FRETOP",PEEK(51)+PEEK(52)*256
-745 PRINT 53,"FRESPC",PEEK(53)+PEEK(54)*256
-746 PRINT 55,"MEMSIZ",PEEK(55)+PEEK(56)*256
-747 END
-748 REM *RUN 750* READ IO ERROR CHANNEL
-749 REM
-750 FA = PEEK(186)
-751 PRINT "DRIVE [";FA;"]";: INPUT A$
-752 A=FA: IF A$ <>"" THEN A=VAL(A$)
-753 OPEN 15, A, 15
-754 INPUT# 15, A, B$, C, D
-755 CLOSE 15
-756 PRINT A; B$; C; D
-757 END
-799 REM
-800 REM *RUN 800* HEXDUMP MEMORY
-801 REM
-802 INPUT "START"; A$: GOSUB 130: P=A
-803 INPUT "STOP "; A$: GOSUB 830: Q=A
-804 IF P >= Q THEN PRINT: END
-805 X=P: IF X > 32767 THEN X=X-65536
-806 IF X AND 7 THEN 809
-807 PRINT " "; S$: S$ = ""
-808 PRINT MID$(STR$(P),2); TAB(5)
-809 X = PEEK(P): C$ = CHR$(X)
-810 IF X < 32 OR X > 93 THEN C$ = " "
-811 S$ = S$ + C$
-812 H = INT(X/16): L = X AND 15
-813 IF H=0 THEN H=32: GOTO 815
-814 H = 48+H: IF H > 57 THEN H = H+7
-815 L = 48+L: IF L > 57 THEN L = L+7
-816 PRINT " "; CHR$(H); CHR$(L);
-817 P=P+1: GOTO 804
-828 REM
-829 REM SUB: PARSE NUM OR OFFSET (+N)
-830 IF LEFT$(A$,1) <> "+" THEN 130
-831 A = A + VAL(MID$(A$,2))
-832 RETURN
-899 REM
-901 REM - OPCODE TABLE -
-902 REM
-910 DATA 6, ASLZ, 2, 10, ASLA, 1
-911 DATA 14, ASL, 3, 22, ASLZX,2
-912 DATA 30, ASLX, 3, 33, AND(X,2
-913 DATA 37, ANDZ, 2, 41, AND#, 2
-914 DATA 45, AND, 3, 49, AND(Y,2
-915 DATA 53, ANDZX,2, 61, ANDX, 3
-916 DATA 97, ADC(X,2, 101,ADCZ, 2
-917 DATA 105,ADC#, 2, 109,ADC, 3
-918 DATA 113,ADC(Y,2, 117,ADCZX,2
-919 DATA 121,ADCY, 3, 125,ADCX, 3
-920 DATA 57, ANDY, 3
-921 DATA 0, BRK, 1, 16, BPLR, 2
-922 DATA 36, BITZ, 2, 44, BIT, 3
-923 DATA 48, BMIR, 2, 80, BVCR, 2
-924 DATA 112,BVSR, 2, 144,BCCR, 2
-925 DATA 176,BCSR, 2, 208,BNER, 2
-926 DATA 240,BEQR, 2
-927 DATA 24, CLC, 1, 88, CLI, 1
-928 DATA 184,CLV, 1, 192,CPY#, 2
-929 DATA 193,CMP(X,2, 196,CPYZ, 2
-930 DATA 197,CMPZ, 2, 201,CMP#, 2
-931 DATA 204,CPY, 3, 205,CMP, 3
-932 DATA 209,CMP(Y,2, 213,CMPZX,2
-933 DATA 216,CLD, 1, 217,CMPY, 3
-934 DATA 221,CMPX, 3, 224,CPX#, 2
-935 DATA 228,CPXZ, 2, 236,CPX, 3
-936 DATA 136,DEY, 1, 198,DECZ, 2
-937 DATA 202,DEX, 1, 206,DEC, 3
-938 DATA 214,DECZX,2, 222,DECX, 3
-939 DATA 65, EOR(X,2, 69, EORZ, 2
-940 DATA 73, EOR#, 2, 77, EOR, 3
-941 DATA 81, EOR(Y,2, 85, EORZX,2
-942 DATA 89, EORY, 3, 93, EORX, 3
-943 DATA 200,INY, 1, 230,INCZ, 2
-944 DATA 232,INX, 1, 238,INC, 3
-945 DATA 246,INCZX,2, 254,INCX, 3
-946 DATA 32, JSR, 3, 76, JMP, 3
-947 DATA 108,JMP(, 3
-948 DATA 70, LSRZ, 2, 74, LSRA, 1
-949 DATA 78, LSR, 3, 86, LSRZX,2
-950 DATA 94, LSRX, 3, 160,LDY#, 2
-951 DATA 161,LDA(X,2, 162,LDX#, 2
-952 DATA 164,LDYZ, 2, 165,LDAZ, 2
-953 DATA 166,LDXZ, 2, 169,LDA#, 2
-954 DATA 172,LDY, 3, 173,LDA, 3
-955 DATA 174,LDX, 3, 177,LDA(Y,2
-956 DATA 180,LDYZX,2, 181,LDAZX,2
-957 DATA 182,LDXZY,2, 185,LDAY, 3
-958 DATA 188,LDYX, 3, 189,LDAX, 3
-959 DATA 190,LDXY, 3
-960 DATA 234,NOP, 1
-961 DATA 1, ORA(X,2, 5, ORAZ, 2
-962 DATA 9, ORA#, 2, 13, ORA, 3
-963 DATA 17, ORA(Y,2, 21, ORAZX,2
-964 DATA 25, ORAY, 3, 29, ORAX, 3
-965 DATA 8, PHP, 1, 40, PLP, 1
-966 DATA 72, PHA, 1, 104,PLA, 1
-967 DATA 38, ROLZ, 2, 42, ROLA, 1
-968 DATA 46, ROL, 3, 62, ROLX, 3
-969 DATA 64, RTI, 1, 96, RTS, 1
-970 DATA 102,RORZ, 2, 106,ROLA, 1
-971 DATA 110,ROR, 3, 118,RORZX,2
-972 DATA 126,RORX, 3, 54, ROLZX,2
-973 DATA 120,SEI, 1, 133,STAZ, 2
-974 DATA 134,STXZ, 2, 140,STY, 3
-975 DATA 141,STA, 3, 142,STX, 3
-976 DATA 145,STA(Y,2, 148,STYZX,2
-977 DATA 149,STAZX,2, 150,STXZY,2
-978 DATA 153,STAY, 3, 157,STAX, 3
-979 DATA 225,SBC(X,2, 229,SBCZ, 2
-980 DATA 233,SBC#, 2, 237,SBC, 3
-981 DATA 241,SBC(Y,2, 245,SBCZX,2
-982 DATA 248,SED, 1, 249,SBCY, 3
-983 DATA 253,SBCX, 3, 56, SEC, 1
-984 DATA 129,STA(X,2, 132,STYZ, 2
-985 DATA 138,TXA, 1, 152,TYA, 1
-986 DATA 154,TXS, 1, 168,TAY, 1
-987 DATA 170,TAX, 1, 186,TSX, 1
-990 DATA -1
-991 REM
-992 REM = APPEND PROGRAM CODE BELOW =
-999 REM
1000 REM
1001 REM =LINEUTIL=
1002 REM LINE-ORIENTED TOOLS TO EASE
1500 REM
1501 REM - SYMBOL DEFINITIONS -
1502 REM
+1510 DATA CHROUT=, $FFD2
+1520 DATA GETIN=, $FFE4
+1530 DATA SETLFS=, $FFBA
+1540 DATA SETNAM=, $FFBD
+1550 DATA LOAD=, $FFD5
+1560 DATA SAVE=, $FFD8
+1600 DATA TXTTAB=, 43
+1601 DATA VARTAB=, 45
+1602 DATA ARYTAB=, 47
+1603 DATA STREND=, 49
+1604 DATA FRETOP=, 51
+1605 DATA FRESPC=, 53
+1606 DATA MEMSIZ=, 55
+1610 DATA FA=, 186: REM CURRENT DEV
+1620 DATA BLNSW=, 204: REM CURSOR BLNK
+1999 REM
2000 DATA 'LINECNT
-2001 DATA LDXZ, 43: REM TXTTAB
-2002 DATA LDYZ, 44
+2001 DATA LDXZ, TXTTAB
+2002 DATA LDYZ, TXTTAB+
2003 DATA STXZ, 251
2004 DATA STYZ, 252
2005 DATA LDA#, 0
2006 DATA STA, CNT
-2007 DATA STA, $C401: REM XXX CNT+
+2007 DATA STA, CNT+
2008 DATA STA, CNT.REM
-2009 DATA STA, $C403: REM XXX +
+2009 DATA STA, CNT.REM+
2010 DATA STA, CNT.DATA
-2011 DATA STA, $C405: REM XXX +
+2011 DATA STA, CNT.DATA+
2012 DATA STA, CNT.JUNK
-2013 DATA STA, $C407: REM XXX +
+2013 DATA STA, CNT.JUNK+
2014 DATA STA, CNT.SPC
-2015 DATA STA, $C409: REM XXX +
+2015 DATA STA, CNT.SPC+
2020 DATA 'LOOP
2021 DATA LDA#, 1
2022 DATA TAY
2027 DATA LDA, CNT.JUNK
2028 DATA ADC#, 2
2029 DATA STA, CNT.JUNK
-2030 DATA LDA, $C407: REM XXX +
+2030 DATA LDA, CNT.JUNK+
2031 DATA ADC#, 0
-2032 DATA STA, $C407
+2032 DATA STA, CNT.JUNK+
2034 DATA JMP, DONE: REM FAR BRANCH
2035 DATA 'NOTDONE
2040 DATA INC, CNT
2050 DATA BNER, LC0
-2060 DATA INC, $C401: REM XXX CNT+
+2060 DATA INC, CNT+
2070 DATA 'LC0
2080 REM COUNT DIFFERENT TYPES OF LINE
2090 REM 1. SKIP SPACES (UNNECESSARY!?)
2140 DATA BNER, LC1.1:REM EXIT LOOP
2141 DATA INC, CNT.SPC
2142 DATA BNER, LC1: REM NO OVERFLOW
-2143 DATA INC, $C409: REM XXX +
+2143 DATA INC, CNT.SPC+
2148 DATA JMP, LC1: REM REPEAT
2149 DATA 'LC1.1
2150 REM 2. CHECK TOKEN
2170 DATA BNER, LC2
2180 DATA INC, CNT.REM
2181 DATA BNER, LC3
-2182 DATA INC, $C403: REM XXX +
+2182 DATA INC, CNT.REM+
2183 DATA JMP, LC3
2190 DATA 'LC2
2200 DATA CMP#, $83: REM DATA-TOKEN
2210 DATA BNER, LC3
2220 DATA INC, CNT.DATA
2221 DATA BNER, LC3
-2222 DATA INC, $C405: REM XXX +
+2222 DATA INC, CNT.DATA+
2223 DATA JMP, LC3
2229 REM 3. SCAN REST OF LINE
2230 DATA 'LC3
2240 DATA BNER, LC3.1
2241 DATA INC, CNT.SPC
2242 DATA BNER, LC3
-2243 DATA INC, $C409: REM XXX +
+2243 DATA INC, CNT.SPC+
2248 DATA JMP, LC3
2250 DATA 'LC3.1
2251 DATA CMP#, $22: REM QUOTE (")
2413 DATA ADC, CNT.JUNK
2414 DATA STA, CNT.JUNK
2415 DATA LDA#, 0
-2416 DATA ADC, $C407: REM XXX +
-2417 DATA STA, $C407
+2416 DATA ADC, CNT.JUNK+
+2417 DATA STA, CNT.JUNK+
2420 REM ADVANCE (DEREF) LINE PTR
2421 DATA LDA#, 0
2422 DATA TAY
2509 REM CALCULATE TOTAL BYTES
2510 DATA SEC
2511 DATA LDAZ, 251
-2512 DATA SBCZ, 43
+2512 DATA SBCZ, TXTTAB
2513 DATA STA, CNT.BS
2514 DATA LDAZ, 252
-2515 DATA SBCZ, 44
-2516 DATA STA, $C40B: REM XXX +
+2515 DATA SBCZ, TXTTAB+
+2516 DATA STA, CNT.BS+
2520 REM CALCULATE JUNK = BS - "JUNK"
2525 DATA SEC
2527 DATA LDA, CNT.BS
2530 DATA SBC, CNT.JUNK
2535 DATA STA, CNT.JUNK
-2540 DATA LDA, $C40B: REM XXX BS+
-2550 DATA SBC, $C407: REM XXX JUNK+
-2560 DATA STA, $C407
+2540 DATA LDA, CNT.BS+
+2550 DATA SBC, CNT.JUNK+
+2560 DATA STA, CNT.JUNK+
2600 REM PRINT COUNTERS AND EXIT
2620 DATA LDX, CNT
-2630 DATA LDY, $C401: REM XXX CNT+
+2630 DATA LDY, CNT+
2640 DATA JSR, PRINTNAT
2650 DATA LDX#, S.LINES
-2651 DATA LDY#, $C5: REM XXX HI
+2651 DATA LDY#, S.LINES^
2652 DATA JSR, PUTSTR
2660 DATA LDX, CNT.REM
-2661 DATA LDY, $C403: REM XXX +
+2661 DATA LDY, CNT.REM+
2662 DATA JSR, PRINTNAT
2670 DATA LDX#, S.REM
-2671 DATA LDY#, $C5: REM XXX HI
+2671 DATA LDY#, S.REM^
2672 DATA JSR, PUTSTR
2680 DATA LDX, CNT.DATA
-2681 DATA LDY, $C405: REM XXX +
+2681 DATA LDY, CNT.DATA+
2682 DATA JSR, PRINTNAT
2690 DATA LDX#, S.DATA
-2691 DATA LDY#, $C5: REM XXX HI
+2691 DATA LDY#, S.DATA^
2692 DATA JSR, PUTSTR
2695 DATA LDA#, 13: REM CR
-2696 DATA JSR, $FFD2: REM CHROUT
+2696 DATA JSR, CHROUT
2700 DATA LDX, CNT.BS
-2701 DATA LDY, $C40B: REM XXX +
+2701 DATA LDY, CNT.BS+
2702 DATA JSR, PRINTNAT
2710 DATA LDX#, S.BYTES
-2711 DATA LDY#, $C5: REM XXX HI
+2711 DATA LDY#, S.BYTES^
2712 DATA JSR, PUTSTR
2720 DATA LDX, CNT.SPC
-2721 DATA LDY, $C409: REM XXX +
+2721 DATA LDY, CNT.SPC+
2722 DATA JSR, PRINTNAT
2725 DATA LDX#, S.SPC
-2726 DATA LDY#, $C5: REM XXX HI
+2726 DATA LDY#, S.SPC^
2727 DATA JSR, PUTSTR
2730 DATA LDX, CNT.JUNK
-2731 DATA LDY, $C407: REM XXX +
+2731 DATA LDY, CNT.JUNK+
2732 DATA JSR, PRINTNAT
2735 DATA LDX#, S.JUNK
-2736 DATA LDY#, $C5: REM XXX HI
+2736 DATA LDY#, S.JUNK^
2737 DATA JSR, PUTSTR
2990 DATA LDA#, 13: REM CR
-2991 DATA JMP, $FFD2: REM XXX CHROUT
+2991 DATA JMP, CHROUT
3000 REM
3001 REM - SUBROUTINES -
3002 REM
3120 DATA 'PS1
3130 DATA LDA(Y, 251
3135 DATA BEQR, PS2
-3140 DATA JSR, $FFD2: REM CHROUT
+3140 DATA JSR, CHROUT
3150 DATA INY
3160 DATA JMP, PS1
3170 DATA 'PS2
3403 REM
3404 REM CLOBBERS: A, X, Y, 2, 251-252
3405 REM
-3410 DATA LDA#, 16: REM 10000...
+3410 DATA LDA#, 10000
3411 DATA STAZ, 251
-3412 DATA LDA#, 39
+3412 DATA LDA#, 10000^
3413 DATA STAZ, 252
3420 DATA JSR, QUOTREM
3430 DATA ADC#, $30: REM "0"
-3440 DATA JSR, $FFD2: REM CHROUT
-3450 DATA LDA#, 232: REM 1000...
+3440 DATA JSR, CHROUT
+3450 DATA LDA#, 1000
3451 DATA STAZ, 251
-3452 DATA LDA#, 3
+3452 DATA LDA#, 1000^
3453 DATA STAZ, 252
3460 DATA JSR, QUOTREM
3470 DATA ADC#, $30
-3480 DATA JSR, $FFD2
-3490 DATA LDA#, 100: REM 100...
+3480 DATA JSR, CHROUT
+3490 DATA LDA#, 100
3491 DATA STAZ, 251
3492 DATA LDA#, 0
3493 DATA STAZ, 252
3500 DATA JSR, QUOTREM
3510 DATA ADC#, $30
-3520 DATA JSR, $FFD2
-3530 DATA LDA#, 10: REM 10...
+3520 DATA JSR, CHROUT
+3530 DATA LDA#, 10
3531 DATA STAZ, 251
3532 DATA LDA#, 0
3533 DATA STAZ, 252
3540 DATA JSR, QUOTREM
3550 DATA ADC#, $30
-3551 DATA JSR, $FFD2
-3560 DATA TXA: REM 1...
+3551 DATA JSR, CHROUT
+3560 DATA TXA
3570 DATA ADC#, $30
-3571 DATA JSR, $FFD2
+3571 DATA JSR, CHROUT
3580 DATA RTS
3599 REM
3600 DATA 'GETSTR
3610 DATA STXZ, 251
3611 DATA STYZ, 252
3620 DATA LDY#, 0
-3625 DATA STYZ, 204: REM CURSOR ON
+3625 DATA STYZ, BLNSW: REM CURSOR ON
3630 DATA 'GS1
3635 DATA STYZ, 2: REM SAVE Y
-3640 DATA JSR, $FFE4: REM GETIN
+3640 DATA JSR, GETIN
3641 DATA BEQR, GS1
3645 DATA LDYZ, 2: REM RESTORE Y
3650 DATA CMP#, 13: REM CR
3671 DATA BEQR, GS1
3672 DATA DEY
3673 DATA LDA#, 20
-3674 DATA JSR, $FFD2: REM CHROUT
+3674 DATA JSR, CHROUT
3675 DATA JMP, GS1
3680 DATA 'GS2
3681 DATA CMP#, 32: REM SPC
3684 DATA BCSR, GS1
3690 DATA STA(Y, 251
3691 DATA INY
-3695 DATA JSR, $FFD2
+3695 DATA JSR, CHROUT
3696 DATA JMP, GS1
3700 DATA 'GS3
3710 DATA LDA#, 0
3720 DATA STA(Y, 251
3721 DATA STYZ, 2
3722 DATA LDA#, 1
-3723 DATA STAZ, 204: REM CURSOR OFF
+3723 DATA STAZ, BLNSW: REM CURSOR OFF
3724 DATA LDA#, 32: REM ERASE CRSR
-3725 DATA JSR, $FFD2
+3725 DATA JSR, CHROUT
3726 DATA LDA#, 13
-3727 DATA JSR, $FFD2
+3727 DATA JSR, CHROUT
3730 DATA LDAZ, 2
3731 DATA LDXZ, 251
3732 DATA LDYZ, 252
4003 REM A OUT: LENGTH CONSUMED
4004 REM
4010 DATA LDX#, BUF
-4011 DATA LDY#, $C7: REM XXX HI
+4011 DATA LDY#, BUF^
4020 DATA JSR, GETSTR
4025 DATA JSR, ATOI
4026 DATA CMP#, 0: REM LEN -> FLAGS
4204 REM CLOBBERS: A, X, Y, 2, 251-254
4205 REM
4210 DATA LDX#, S.START
-4211 DATA LDY#, $C5: REM XXX HI
+4211 DATA LDY#, S.START^
4212 DATA JSR, PUTSTR
4220 DATA JSR, READNAT
4221 DATA STX, NSTART
-4222 DATA STY, $C40D: REM XXX +
+4222 DATA STY, NSTART+
4230 DATA LDX#, S.STOP
-4231 DATA LDY#, $C5: REM XXX HI
+4231 DATA LDY#, S.STOP^
4232 DATA JSR, PUTSTR
4240 DATA JSR, READNAT
4241 DATA STX, NSTOP
-4242 DATA STY, $C40F: REM XXX +
+4242 DATA STY, NSTOP+
4249 REM CMP NSTOP, NSTART
-4250 DATA CPY, $C40D: REM XXX NSTART+
+4250 DATA CPY, NSTART+
4251 DATA BCCR, GSS1
4252 DATA BNER, GSS1
4253 DATA CPX, NSTART
4305 REM
4306 REM CLOBBERS: A, X, Y, 251-254
4307 REM
-4310 DATA LDAZ, 43: REM TXTTAB
+4310 DATA LDAZ, TXTTAB
4311 DATA STAZ, 251: REM -> 251
-4312 DATA LDAZ, 44
+4312 DATA LDAZ, TXTTAB+
4313 DATA STAZ, 252
4319 REM ...
4320 DATA 'FINDNEXT
4405 REM
4409 DATA PHA: REM SAVE FILE NO
4410 DATA LDX#, S.DRVBRA
-4411 DATA LDY#, $C5: REM XXX HI
+4411 DATA LDY#, S.DRVBRA^
4412 DATA JSR, PUTSTR
-4413 DATA LDAZ, 186: REM CURRENT DEV
+4413 DATA LDAZ, FA: REM CURRENT DEV
4414 DATA CLC
4415 DATA ADC#, 48: REM XXX PRINTBYTE
-4416 DATA JSR, $FFD2: REM CHROUT
+4416 DATA JSR, CHROUT
4417 DATA LDX#, S.KETCOL
-4418 DATA LDY#, $C5: REM XXX HI
+4418 DATA LDY#, S.KETCOL^
4419 DATA JSR, PUTSTR
4420 DATA JSR, READNAT
4421 DATA BNER, GF1: REM LEN <> 0
-4422 DATA LDXZ, 186: REM DEFAULT
+4422 DATA LDXZ, FA: REM DEFAULT
4423 DATA 'GF1
4424 DATA PLA: REM FILE NO
4425 DATA LDY#, 0: REM SEC ADDR
-4426 DATA JSR, $FFBA: REM SETLFS
+4426 DATA JSR, SETLFS
4430 DATA LDX#, S.FILE
-4431 DATA LDY#, $C5: REM XXX HI
+4431 DATA LDY#, S.FILE^
4432 DATA JSR, PUTSTR
4433 DATA LDX#, BUF
-4434 DATA LDY#, $C7: REM XXX HI
+4434 DATA LDY#, BUF^
4435 DATA JSR, GETSTR
-4437 DATA JSR, $FFBD: REM SETNAM
+4437 DATA JSR, SETNAM
4440 DATA RTS
4499 REM
4500 DATA 'FINDLAST
4504 REM
4505 REM CLOBBERS: A, X, Y, 251-254
4506 REM
-4510 DATA LDXZ, 43: REM TXTTAB
-4511 DATA LDYZ, 44
+4510 DATA LDXZ, TXTTAB
+4511 DATA LDYZ, TXTTAB+
4512 DATA STXZ, 251
4513 DATA STYZ, 252
4520 DATA LDY#, 1
4579 REM
4580 DATA 'PUTNL
4581 DATA LDA#, 13
-4582 DATA JMP, $FFD2: REM CHROUT
+4582 DATA JMP, CHROUT
4589 REM
4590 DATA 'PRINTNATLN
4591 DATA JSR, PRINTNAT
5030 DATA 'LCU2
5060 REM LOCATE START -> PTR IN 251
5061 DATA LDX, NSTART
-5062 DATA LDY, $C40D: REM XXX NSTART+
+5062 DATA LDY, NSTART+
5063 DATA JSR, FINDLINE
5064 DATA TXA
5065 DATA PHA
5067 DATA PHA
5070 REM LOCATE STOP LINE -> PTR IN 253
5071 DATA LDX, NSTOP
-5072 DATA LDY, $C40F: REM XXX NSTOP+
+5072 DATA LDY, NSTOP+
5073 DATA JSR, FINDNEXT
5074 DATA STXZ, 253
5075 DATA STYZ, 254
5253 DATA STA, DELTA
5254 DATA LDAZ, 254
5255 DATA SBCZ, 252
-5256 DATA STA, $C411: REM XXX DELTA+
+5256 DATA STA, DELTA+
5260 REM SCAN AFTER STOP, ADJUST PTRS
5270 DATA LDXZ, 253
5271 DATA LDYZ, 254
5280 DATA STX, TMP: REM SAVE PSTOP
-5281 DATA STY, $C413: REM XXX +
+5281 DATA STY, TMP+
5290 DATA 'LCU9
5300 DATA LDY#, 1
5301 DATA LDA(Y, 253
5341 DATA INY
5350 DATA LDA(Y, 253
5351 DATA STAZ, 2: REM SAVE HI(PNEXT)
-5360 DATA SBC, $C411: REM XXX DELTA+
+5360 DATA SBC, DELTA+
5370 DATA STA(Y, 253
5380 DATA LDYZ, 2
5381 DATA STXZ, 253: REM NEXT LINE
5390 DATA JMP, LCU9
5391 DATA 'LCU10
5392 DATA LDX, TMP: REM SAVED PSTOP
-5393 DATA LDY, $C413: REM XXX +
+5393 DATA LDY, TMP+
5394 DATA STXZ, 253
5395 DATA STYZ, 254
5400 REM COPY THE REMAINING DATA DOWN
5410 DATA SEC: REM LEN=STREND-PSTOP
-5411 DATA LDAZ, 49
+5411 DATA LDAZ, STREND
5412 DATA SBCZ, 253
5413 DATA TAY: REM Y = LO BYTE!
-5414 DATA LDAZ, 50
+5414 DATA LDAZ, STREND+
5415 DATA SBCZ, 254
5416 DATA TAX: REM X = HI BYTE!
5420 DATA JSR, MEMCPY
5430 REM ADJUST VARTAB, ARYTAB, STREND
5440 DATA SEC
-5441 DATA LDAZ, 45: REM VARTAB
+5441 DATA LDAZ, VARTAB
5442 DATA SBC, DELTA
-5443 DATA STAZ, 45
-5444 DATA LDAZ, 46
-5445 DATA SBC, $C411: REM XXX +
-5446 DATA STAZ, 46
+5443 DATA STAZ, VARTAB
+5444 DATA LDAZ, VARTAB+
+5445 DATA SBC, DELTA+
+5446 DATA STAZ, VARTAB+
5450 DATA SEC
-5451 DATA LDAZ, 47: REM ARYTAB
+5451 DATA LDAZ, ARYTAB
5452 DATA SBC, DELTA
-5453 DATA STAZ, 47
-5454 DATA LDAZ, 48
-5455 DATA SBC, $C411: REM XXX +
-5456 DATA STAZ, 48
+5453 DATA STAZ, ARYTAB
+5454 DATA LDAZ, ARYTAB+
+5455 DATA SBC, DELTA+
+5456 DATA STAZ, ARYTAB+
5460 DATA SEC
-5461 DATA LDAZ, 49: REM STREND
+5461 DATA LDAZ, STREND
5462 DATA SBC, DELTA
-5463 DATA STAZ, 49
-5464 DATA LDAZ, 50
-5465 DATA SBC, $C411: REM XXX +
-5466 DATA STAZ, 50
+5463 DATA STAZ, STREND
+5464 DATA LDAZ, STREND+
+5465 DATA SBC, DELTA+
+5466 DATA STAZ, STREND+
5470 DATA RTS
5999 REM
6000 DATA 'LINECAT
6030 DATA LDA#, 1: REM FILE NO
6031 DATA JSR, GETFILE
6040 DATA SEC
-6041 DATA LDAZ, 45: REM VARTAB
+6041 DATA LDAZ, VARTAB
6042 DATA SBC#, 2: REM CUT NULL OFF
6043 DATA STAZ, 251: REM PSTART
6044 DATA TAX
-6045 DATA LDAZ, 46
+6045 DATA LDAZ, VARTAB+
6046 DATA SBC#, 0
6047 DATA STAZ, 252
6048 DATA TAY
6049 DATA LDA#, 0: REM L/V
-6050 DATA JSR, $FFD5: REM LOAD
+6050 DATA JSR, LOAD
6051 DATA BCCR, LCA1.1
6055 DATA LDX#, S.ERROR
-6056 DATA LDY#, $C5: REM XXX HI
+6056 DATA LDY#, S.ERROR^
6057 DATA JSR, PUTSTR
6058 DATA RTS
6060 DATA 'LCA1.1
6189 REM ADJUST VARTAB &C AND RET PSTOP
6190 DATA LDXZ, 253
6191 DATA LDYZ, 254
-6192 DATA STXZ, 45: REM VARTAB
-6193 DATA STYZ, 46
-6194 DATA STXZ, 47: REM ARYTAB
-6195 DATA STYZ, 48
-6196 DATA STXZ, 49: REM STREND
-6197 DATA STYZ, 50
+6192 DATA STXZ, VARTAB
+6193 DATA STYZ, VARTAB+
+6194 DATA STXZ, ARYTAB
+6195 DATA STYZ, ARYTAB+
+6196 DATA STXZ, STREND
+6197 DATA STYZ, STREND+
6198 DATA RTS
6200 DATA 'LCACHK
6210 REM COMPARE VS LAST LINE NUMBER
6244 DATA INY
6245 DATA STA(Y, 251
6270 DATA LDX#, S.ECLASH
-6271 DATA LDY#, $C5: REM XXX HI
+6271 DATA LDY#, S.ECLASH^
6272 DATA JSR, PUTSTR
6280 DATA LDX#, S.ABORT
-6281 DATA LDY#, $C5: REM XXX HI
+6281 DATA LDY#, S.ABORT^
6282 DATA JSR, PUTSTR
6283 DATA RTS
6290 DATA 'LCACOK
6411 DATA BCCR, LCLRET
6412 DATA BEQR, LCLRET
6420 DATA LDX, NSTART
-6421 DATA LDY, $C40D: REM XXX +
+6421 DATA LDY, NSTART+
6425 DATA JSR, FINDLINE
6430 DATA TXA
6431 DATA PHA
6432 DATA TYA
6433 DATA PHA
6440 DATA LDX, NSTOP
-6441 DATA LDY, $C40F: REM XXX +
-6442 DATA JSR, FINDLINE: REM XXX FNEXT
+6441 DATA LDY, NSTOP+
+6442 DATA JSR, FINDNEXT
6445 DATA TXA
6446 DATA PHA
6447 DATA TYA
6480 DATA ADCZ, 254
6481 DATA TAY
6482 DATA LDA#, 251
-6483 DATA JSR, $FFD8: REM SAVE
+6483 DATA JSR, SAVE
6484 DATA LDY#, 1
6485 DATA PLA: REM PNEXT HI
6486 DATA STA(Y, 253: REM -> PSTOP[1]
6489 DATA STA(Y, 253: REM -> PSTOP[0]
6490 DATA BCCR, LCLRET
6491 DATA LDX#, S.ERROR
-6492 DATA LDY#, $C5: REM XXX HI
+6492 DATA LDY#, S.ERROR^
6493 DATA JSR, PUTSTR
6495 DATA 'LCLRET
6496 DATA RTS