1000 *******TL/1************* 1010 GAME EQU $B503 1020 TXTTOP EQU $FB7E 1030 BASE EQU $FB 1040 DPAGE EQU BASE*$100 1050 SETDP BASE 1060 MSTACK EQU $FE52-$100 1070 INEEE EQU $B003 1080 OUTEEE EQU $B006 1090 ** DPAGE DEFINE 1100 ORG DPAGE+$10 1110 INDN RMB 1 1120 OUTDN RMB 1 1130 LB RMB 2 1140 GB RMB 2 1150 MHIGH RMB 1 1160 MOD RMB 1 1170 WT1 RMB 1 1180 WT2 RMB 1 1190 RNDH RMB 1 1200 RNDL RMB 1 1210 DREG RMB 1 1220 DBUF RMB 3 1230 XR RMB 2 1240 YR RMB 2 1250 ZR RMB 2 1260 PFTBEG RMB 2 1270 PC RMB 2 1280 SREG RMB 2 1290 SP RMB 2 1300 PFMAX RMB 2 1310 LSW RMB 1 1320 SY RMB 1 1330 CH RMB 1 1340 VAL RMB 1 1350 GL RMB 1 1360 OPER RMB 1 1370 GLL RMB 1 1380 INDEX RMB 1 1390 RMCODE RMB 1 1400 ACC RMB 1 1410 LSIZE RMB 1 1420 TCOUNT RMB 1 1430 TEND RMB 2 1440 WEND RMB 2 1450 AMODE RMB 1 1460 RSW RMB 1 1470 GEND RMB 2 1480 SSW RMB 1 1490 1500 ORG $5000 1510 ** 1520 COMP LDA #BASE 1530 TFR A,DP 1540 CLRA 1550 STA OUTDN 1560 STA LSW 1570 STA INDEX 1580 STA AMODE 1590 STA LSIZE 1600 STA RSW 1610 STA PFMAX 1620 LDX #MSTACK 1630 STX SP 1640 LEAX 2,x 1650 STX PFTBEG 1660 CLRB 1670 C1 STA ,X+ 1680 DECB 1690 BNE C1 1700 INCA 1710 STA TCOUNT 1720 LDA #' ' 1730 STA CH 1740 LDX TXTTOP 1750 LEAX 2,X 1760 STX SREG 1770 LEAX WTBLE,PCR 1780 STX TEND 1790 LEAX OBJECT,PCR 1800 STX PC 1810 STX OBJMP+1,PCR 1820 ** 1830 LBSR CRLF 1840 BSR REG0 1850 LBSR WORD 1860 CMPA #$30 PROC? 1870 BNE *+4 1880 BSR REGNAM 1890 BSR REG0 1900 CMPA #$31 FUNC? 1910 BNE *+4 1920 BSR REGNAM 1930 CLR LSIZE 1940 BSR REG0 1950 LBSR PROG 1960 LBSR STPOUT 1970 LDX TEND 1980 STX GEND 1990 PLOOP LDA SY 2000 CMPA #$8F /END CODE 2010 LBEQ ENDL 2020 CMPA #$4 2030 BCC ERR4 2040 DECA 2050 STA AMODE 2060 LDA VAL 2070 LBSR DEFPF 2080 LBSR PUTHS 2090 FDB $03BD 2100 FDB PSHLB 2110 BSR REG0 2120 CLR LSIZE 2130 LBSR WORD 2140 CMPA #$37 2150 BNE PL1 2160 BSR REGNAM 2170 LDA #$38 ) 2180 LBSR CHECK 2190 PL1 BSR PROG 2200 LDB AMODE 2210 CMPB #1 2220 BNE *+5 2230 LBSR RETP 2240 LDX GEND 2250 STX TEND 2260 LDB #5 2270 STB TCOUNT 2280 BRA PLOOP 2290 ** 2300 * REGIST ZERO 2310 ** 2320 REG0 LDX TEND 2330 CLR ,X+ 2340 STX TEND 2350 INC TCOUNT 2360 RTS 2370 ** 2380 * REGIST NAME 2390 ** 2400 REGNAM COM RSW 2410 LBSR WORD 2420 LDB RSW 2430 BEQ *+5 2440 ERR4 LBRA ERROR 2450 LDX TEND 2460 LDA LSIZE 2470 STA ,X 2480 INC LSIZE 2490 LDX WEND 2500 STX TEND 2510 BSR WORD1 2520 CMPA #$36 2530 BNE REG2 2540 BSR WORD1 2550 BNE ERR4 2560 LDA VAL 2570 ADDA LSIZE 2580 BSR WORD1 2590 LDA #$3A 2600 LBSR CHECK 2610 REG2 CMPA #$3C 2620 BEQ REGNAM 2630 RTS 2640 ** 2650 * PROGRAM 2660 ** 2670 PROG CMPA #$32 VAR? 2680 BNE *+4 2690 BSR REGNAM 2700 BSR REG0 2710 CMPA #$33 ARRAY? 2720 BNE *+4 2730 BSR REGNAM 2740 LDB #-1 2750 STB INDEX 2760 ** 2770 * STATEMENT 2780 ** 2790 STAT BSR SSTAT 2800 LDB SSW 2810 BEQ RTS1 2820 LBRA ERROR 2830 ** 2840 * STATEMENTS LIST 2850 ** 2860 STLIST BSR SSTAT 2870 LDB SSW 2880 BEQ STLIST 2890 RTS1 RTS 2900 ** 2910 * SINGLE STATEMENT 2920 ** 2930 SSTAT CLRA 2940 STA ACC 2950 STA SSW 2960 LDA SY 2970 ** 2980 * MULTIPLE STATEMENTS 2990 ** 3000 SS1 CMPA #$34 3010 BCS SS2 3020 CMPA #$38 3030 BCC SS2 3040 ADDA #4 3050 PSHS A 3060 BSR WORD1 3070 BSR STLIST 3080 PULS A 3090 CLR SSW 3100 LBRA CHECK 3110 ** 3120 * STOP 3130 ** 3140 SS2 CMPA #$50 3150 BNE SS3 3160 BSR STPOUT 3170 WORD1 LBRA WORD 3180 ** 3190 STPOUT LBSR PUTHS 3200 FCB 3,$7E 3210 FDB MONIT 3220 RTS 3230 ** 3240 * RETURN 3250 ** 3260 SS3 CMPA #$51 3270 BNE SS4 3280 LDB AMODE 3290 LBEQ ERR4 3300 PSHS B 3310 BSR WORD1 3320 PULS B 3330 DECB 3340 BEQ RETP 3350 LBSR EXPR 3360 RETP LBSR PUTHS 3370 FDB $037E 3380 FDB PULLB 3390 RTS 3400 ** 3410 * PROC CALL 3420 ** 3430 SS4 CMPA #2 3440 LBEQ PFCALL 3450 CMPA #$E0 3460 BCS SS5 3470 LBRA PFCALL 3480 ** 3490 * ASSIGNMENT STATEMENT 3500 ** 3510 SS5 CMPA #7 3520 BCS ASSIGN 3530 LBRA SS6 3540 ASSIGN LDB GL 3550 PSHS B 3560 LDB VAL 3570 PSHS B 3580 CMPA #5 3590 BNE ASS1 3600 LBSR SUBSC1 3610 LDB ,S 3620 LDA LSW 3630 BNE AS0 3640 LDA #$8B 3650 LBSR PUTAB 3660 LDA #1 3670 BRA AS2 3680 AS0 ADDB OPER 3690 STB ,S 3700 CLR LSW 3710 BRA AS1 3720 ASS1 CMPA #6 3730 BNE ASS2 3740 LBSR DSUBSC 3750 LDA #2 3760 BRA AS2 3770 ASS2 CMPA #4 3780 BEQ *+5 3790 LBRA ERROR 3800 LBSR WORD 3810 AS1 CLRA 3820 AS2 PSHS A 3830 LDA SY 3840 CMPA #$3C 3850 BNE *+9 3860 LBSR WORD 3870 BSR ASSIGN 3880 BRA AS3 3890 LDA #$3D 3900 LBSR CHECK 3910 LDA #$27 3920 LBSR CHECK 3930 LBSR EXPR 3940 AS3 PULS D 3950 STB OPER 4-- 3960 PULS B 3970 STB GLL 3980 TSTA 3990 BNE AS4 4000 LBSR PUTX 4010 LDA #$A7 4020 LDB OPER 4030 LBRA PUTAB 4040 AS4 DECA 4050 BNE AS5 4060 LBSR PUTX 4070 LDA #$33 4080 LBSR PUTA 4090 LBRA STABX 4100 AS5 LBSR PUTHS 4110 FCB 10 4120 FDB $33D7 PULB; STB WT2 4130 FCB WT2 4140 FDB $33D7 PULB; STB WT 4150 FCB WT1 $DE,WT2 LDX WT2 4160 FDB $A700 STA X 4170 CLR INDEX 4180 RTS 4190 ** 4200 ** NON-STATEMENT 4210 ** 4220 SSEND COM SSW 4230 RTS 4240 ** 4250 SS6 CMPA #$58 4260 BCC SSEND 4270 CMPA #$52 4280 BCS SSEND 4290 SUBA #$51 4300 PSHS A 4310 LBSR WORD 4320 PULS B 4330 ** 4340 * REPEAT UNTIL 4350 ** 4360 DECB 4370 BNE SS7 4380 STB INDEX 4390 BSR ASTOUT 4400 LBSR STLIST 4410 LDA #$60 4420 LBSR CHECK 4430 LBSR EXPR 4440 LBSR PUTHS 4450 FCB 2 4460 FDB $2603 4470 CLR SSW 4480 BRA MINOUT 4490 ** 4500 * FOR-TO 4510 ** 4520 SS7 DECB 4530 BNE SS8 4540 CMPA #4 4550 BEQ *+5 4560 LBRA ERROR 4570 LDB VAL 4580 PSHS B 4590 LDB GL 4600 PSHS B 4610 LBSR ASSIGN 4620 LDA #$61 4630 LBSR CHECK 4640 CLR ACC 4650 LBSR EXPR 4660 LDA #$64 4670 LBSR CHECK 4680 BSR ASTOUT 4690 LDA #$36 4700 LBSR PUTA 4710 CLR INDEX 4720 LBSR STAT 4730 LDA #$32 4740 LBSR PUTA 4750 PULS D 4760 STA GLL 4770 STB OPER 4780 LDA #$A1 4790 LBSR PUTABX 4800 LBSR PUTHS 4810 FCB 2 4820 FDB $2305 4830 LDA #$6C 4840 LDB OPER 4850 LBSR PUTAB 4860 MINOUT LBRA PULJMP 4870 ASTOUT LBRA PSHDEF 4880 ** 4890 * WHILE-DO 4900 ** 4910 SS8 DECB 4920 BNE SS9 4930 STB INDEX 4940 BSR ASTOUT 4950 LBSR EXPR 4960 LDA #$64 4970 LBSR CHECK 4980 LBSR PUTHS 4990 FCB 2 5000 FDB $2603 5010 BSR SLAOUT 5020 LDB INDEX 5030 PSHS B 5040 LBSR STAT 5050 PULS B 5060 STB INDEX 5070 BSR PEROUT 5080 BSR MINOUT 5090 PLUOUT LBRA PULDEF 5100 ** 5110 ** IF—THEN 5120 ** 5130 SS9 DECB 5140 BNE SS10 5150 LBSR EXPR 5160 LDA #$65 5170 LBSR CHECK 5180 LBSR PUTHS 5190 FCB 2 5200 FDB $2603 5210 BSR SLAOUT 5220 LDB INDEX 5230 PSHS B 5240 LBSR STAT 5250 PULS B 5260 CMPB INDEX 5270 BEQ *+4 5280 CLR INDEX 5290 BRA PLUOUT 5300 SLAOUT LBRA PSHJMP 5310 PEROUT LBRA STCHG 5320 *** 5330 * CASE—OF 5340 SS10 DECB 5350 BNE SS11 5360 LBSR EXPR 5370 LDA #$66 5380 LBSR CHECK 5390 CLRB 5400 S10A INCB 5410 PSHS B 5420 STB ACC 5430 LBSR LEXPR 5440 LDA #$81 5450 LBSR AOPER 5460 LBSR PUTHS 5470 FCB 2 5480 FDB $2703 5490 BSR SLAOUT 5500 LDB INDEX 5510 PSHS B 5520 LBSR STAT 5530 BSR SLAOUT 5540 BSR PEROUT 5550 BSR PLUOUT 5560 PULS B 5570 STB INDEX 5580 PULS B 5590 LDA SY 5600 CMPA #$67 5610 BNE S10A 5620 PSHS B 5630 LBSR WORD 5640 LBSR STAT 5650 CLR INDEX 5660 PULS A 5670 LBRA PLDFN 5680 ** 5690 * WRITE STATEMENT 5700 ** 5710 SS11 LDA #$37 5720 LBSR CHECK 5730 LBSR EXPR 5740 LBSR PUTHS 5750 FDB $0297 5760 FCB OUTDN 5770 LDA #$3D 5780 LBSR CHECK 5790 WTLP CLR ACC 5800 BSR WTERM 5810 LDA SY 5820 CMPA #$3C 5830 BNE WTEN 5840 LBSR WORD 5850 BRA WTLP 5860 WTEN LDA #$36 5870 LBRA CHECK 5880 ** 5890 WTERM CMPA #$6C 5900 BNE WR1 5910 LBSR PUTHS 5920 FDB $03BD 5930 FDB PUTSTR 5940 LDA CH 5950 WR01 CMPA #'"' 5960 BEQ WR02 5970 LBSR PUTA 5980 LBSR GETCH 5990 BRA WR01 6000 WR02 CLRA 6010 STA INDEX 6020 LBSR PUTA 6030 LBSR GETCH 6040 LBRA WORD 6050 ** 6060 WR1 CMPA #$6B 6070 BNE WR3 6080 LBSR WORD 6090 CMPA #$37 6100 BEQ WR2 6110 LBSR PUTHS 6120 FDB $03BD 6130 FDB CRLFA 6140 RTS 6150 ** 6160 WR2 LBSR WEXPR 6170 BSR WTEN 6180 LBSR PUTHS 6190 FDB $03BD 6200 FDB CRLFA 6210 RTS 6220 ** 6230 WR3 CMPA #$6A 6240 BNE WR4 6250 LBSR SUBSC 6260 LBSR PUTHS 6270 FDB $03BD 6280 FDB SPACEA 6290 RTS 6300 ** 6310 WR4 CMPA #$A9 6320 BNE WR5 6330 LBSR SUBSC 6340 LBSR PUTHS 6350 FDB $03BD 6360 FDB PUTCA 6370 RTS 6380 ** 6390 WR5 CMPA #$26 6400 BNE WR6 6410 LBSR DSUBSC 6420 LBSR PUTPLB 6430 LBSR PUTHS 6440 FDB $03BD 6450 FDB PUTDA+1 6460 BRA WR66 6470 ** 6480 WR6 LBSR EXPR 6490 LBSR PUTHS 6500 FDB $03BD 6510 FDB PUTDA 6520 WR66 CLR INDEX 6530 RTS11 RTS 6540 ** 6550 * PUTX & PUTB 6560 ** 6570 PUTABX PSHS D 6580 BSR PUTX 6590 PULS D 6600 BRA PUTAB 6610 ** 6620 * PUT LP, OR GB BY INDEX 6630 ** 6640 PUTX LDB GLL 6650 CMPB INDEX 6660 BEQ RTS11 6670 STB INDEX 6680 ADDB #LB+1 6690 LDA #$DE 6700 *** 6710 * PUT ACC A&B 6720 ** 6730 PUTAB BSR PUTA 6740 TFR B,A 6750 ** 6760 * PUT ACCA RS AN OBJECT 6770 ** 6780 PUTA STX RNDH 6790 LBSR AOUT 6800 LDX RNDH 6810 RTS 6820 ** 6830 * PUTHS STRING 6840 ** 6850 PUTHS LDX ,S++ 6860 LDB ,X+ 6870 PS1 LDA ,X+ 6880 BSR PUTA 6890 DECB 6900 BNE PS1 6910 JMP ,X 6920 ** 6930 ** CHECK ACC 6940 ** 6950 CHECK CMPA SY 6960 BEQ WORD 6970 ** 6980 * ERROR 6990 ** 7000 ERROR LBSR PUTSTR 7010 FDB $0D0A 7020 FCC "ERROR ",0 7030 LDX TEND 7040 LEAX 1,X 7050 NEG ,X 7060 ER0 LDA ,X+ 7070 LBSR PUTCA 7080 CMPX WEND 7090 BNE ER0 7100 JMP GAME 7110 ** 7120 * WORD DECORDER 7130 ** 7140 WORD BSR WORDS 7150 LDA SY 7160 RTS 7170 WORDS CLRB 7180 STB SY 7190 STB VAL 7200 LDA CH 7210 ** SKIP CONT ,SPACE.; 7220 WD1 CMPA #$21 7230 BCS SKIP 7240 CMPA #'.' 7250 BEQ SKIP 7260 CMPA #';' 7270 BNE WD2 7280 SKIP BSR GETCH 7290 BRA WD1 7300 ** 7310 * COMMENT 7320 ** 7330 WD2 CMPA #'%' 7340 BNE WD3 7350 BSR GETCH 7360 CMPA #$20 7370 BCC *--4 7380 BRA WD1 7390 ** 7400 * ASCC CONST 7410 ** 7420 WD3 CMPA #'\'' 7430 BNE WD4 7440 BSR GETCH 7450 STA VAL 7460 BSR GETCH 7470 GETCH PSHS X 7480 LBSR MEMIN 7490 STA CH 7500 PULS X,PC 7510 * HEX CONSTANT 7520 WD4 CMPA #'$' 7530 BNE WD5 7540 WD40 BSR GETCH 7550 BSR TSTNA 7560 BEQ WD41 7570 BCC RTS2 7580 CMPA #'F'+1 7590 BCC RTS2 7600 SUBA #7 7610 WD41 SUBA #'0' 7620 LDB VAL 7630 ASLB 7640 ASLB 7650 ASLB 7660 ASLB 7670 PSHS B 7680 ADDA ,S+ 7690 STA VAL 7700 BRA WD40 7710 ** 7720 * TEST ALPHA NUMERIC 7730 TSTNA CMPA #'0' 7740 BCS NAF 7750 CMPA #'9'+1 7760 BCS NT 7770 CMPA #'A' 7780 BCS NAF 7790 CMPA #'Z'+1 7800 BCS AT 7810 NAF CLRB CLEAR C 7820 AT LDB #-1 7830 RTS2 RTS 7840 NT CLRB 7850 RTS 7860 ** DECIMAL CONSTANT 7870 WD5 BSR TSTNA 7880 BNE WD6 7890 WD50 SUBA #'0' 7900 PSHS A 7910 LDA VAL 7920 LDB #10 7930 MUL 7940 ADDA ,S+ 7950 STA VAL 7960 BSR GETCH 7970 BSR TSTNA 7980 BEQ WD50 7990 RTS 8000 * THE OTHER WORDS 8010 WD6 LDX TEND 8020 PSHS A 8030 NEGA 8040 LEAX 1,X 8050 BSR STAONE 8060 PULS A 8070 BSR TSTNA 8080 BCC TLOOK1 8090 WD61 LDA CH 8100 BSR TSTNA 8110 BCS *+4 8120 BNE TLOOK1 8130 BSR STAONE 8140 BRA WD61 8150 STAONE STA ,X+ 8160 STX WEND 8170 BRA GETCH 8180 TLOOK1 LDA RSW 8190 BEQ TLOOK 8200 COM RSW 8210 RTS 8220 ** 8230 * WORD TABLE SEARCH 8240 ** 8250 TLOOK LDA TCOUNT 8260 STA SY 8270 LDX TEND 8280 S01 LDU WEND 8290 S02 LDA ,-U 8300 CMPA ,-X 8310 BEQ S06 8320 S03 TST ,X 8330 BEQ S05 8340 BMI S04 8350 LEAX -1,X 8360 BRA S03 8370 S04 LEAX -1,X 8380 BRA S01 8390 S05 DEC SY 8400 BNE S01 8410 LBRA ERROR 8420 S06 TSTA 8430 BPL S02 8440 LDB ,-X 8450 STB VAL 8460 LDA SY 8470 CMPA #1 8480 BNE *+6 8490 TFR B,A 8500 BRA S07 8510 CMPA #4 8520 BCS RTSS 8530 LDB #1 8540 TST AMODE 8550 BEQ *+6 8560 CMPA #6 8570 BCS *+3 8580 NEGB 8590 STB GL 8600 ANDA #$FD 8610 S07 STA SY 8620 RTSS RTS 8630 ** 8640 * ARITHMATIC EXPRESSION 8650 ** 8660 WEXPR LBSR WORD 8670 EXPR BSR LEXPR 8680 BSR OLOAD 8690 RTE RTS 8700 ** WORD * LEXPR 8710 WLEXPR LBSR WORD 8720 ** 8730 * LOGICAL EXPRESSION 8740 ** 8750 LEXPR BSR REXPR 8760 LE1 LDY SY 8770 CMPA #$82 8780 BCS RTE 8790 CMPA #$8A+1 8800 BCC RTE 8810 PSHS A 8820 LBSR WORD 8830 BSR REXPR 8840 LDB LSW 8850 BNE LE2 8860 LBSR PUTHS 8870 FDB $0397 8880 FCB WT1 8890 FCB $32 8900 PULS A 8910 ADDA #$10 8920 LDB #WT1 8930 LBSR PUTAB 8940 BRA LE1 8950 LE2 PULS A 8960 BSR OCORD 8970 BRA LE1 8980 ** 8990 * RELATIONAL EXPRESS 9000 ** 9010 REXPR BSR AEXPR 9020 RE1 LDA SY 9030 CMPA #$21 9040 BCS RTE 9050 CMPA #$30 9060 BCC RTE 9070 PSHS A 9080 LBSR WORD 9090 ASR AEXPR 9100 LDA #$80 9110 BSR AOPER 9120 PULS A 9130 LBSR PUTHS 9140 FCB 6 9150 FCB $3,$4F,$20,$02,$86,$FF 9160 BRA RE1 9170 ** ADDING OPERATFR 9180 AOPER LDB LSW 9190 BNE OCORD 9200 PSHS A 9210 CMPA #$80 9220 BEQ *+5 9230 BSR PUTPUL 9240 FCB $8C 9250 BSR PUTPLB 9260 PULS A 9270 SUBA #$70 9280 PUTA1 LBRA PUTA 9290 ** OUTPUT SAVED L-CC 9300 OLOAD LDA LSW 9310 BEQ RTE 9320 LDA ACC 9330 BEQ *+6 9340 LDA #$36 9350 BSR PUTA1 9360 LDA #$86 9370 OCORD PSHS A 9380 CLRA 9390 STA LSW 9400 COMA 9410 STA ACC 9420 LDA AMODE 9430 CMPA #$20 9440 BNE *+5 9450 LBSR PUTX 9460 CLR LSW 9470 PULS A 9480 ADDA AMODE 9490 LDB OPER 9500 LBRA PUTAB 9510 * PUT 'TAB:PULS A' 9520 PUTPUL LBSR PUTHS 9530 FCB 2 9540 FDB $1632 9550 RTE1 RTS 9560 * PUT 'PULS B' 9570 PUTPLB LDA #$33 9580 BRA PUTA1 9590 ** 9600 * ADDING EXPRESSION 9610 ** 9620 AEXPR BSR MEXPR 9630 AE1 LDA SY 9640 CMPA #$80 9650 BEQ AE2 9660 CMPA #$8B 9670 BNE RTE1 9680 AE2 PSHS A 9690 LBSR WORD 9700 BSR MEXPR 9710 PULS A 9720 BSR AOPER 9730 BRA AE1 9740 ** 9750 * MUTIPLYING EXPRESSION 9760 ** 9770 MEXPR BSR TERM 9780 ME1 LDA SY 9790 CMPA #$8E 9800 BEQ ME2 9810 CMPA #$8F 9820 BNE RTE1 9830 ME2 PSHS A 9840 LBSR WORD 9850 BSR TERM 9860 LDB LSW 9870 BEQ ME3 9880 LDA #$C6 9890 BSR OCORD 9900 FCB $8C 9910 ME3 BSR PUTPUL 9920 PULS A 9930 CMPA #$8E 9940 BHS ME4 9950 LBSR PUTHS 9960 FCB 3 9970 FCB $BD 9980 FDB MULT 9990 BRA ME1 10000 ME4 LBSR PUTHS 10010 FCB 3 10020 FCB $BD 10030 FDB DIV 10040 BRA ME1 10050 ** 10060 * TERM 10070 ** 10080 TERM LDA SY 10090 BNE TM1 10100 * SAVE L-COMMAND 10110 SLOAD PSHS A 10120 LBSR OLOAD 10130 LDA VAL 10140 STA OPER 10150 LDA GL 10160 STA GLL 10170 PULS A 10180 STA AMODE 10190 COM LSW 10200 LBRA WORD 10210 * CONST TRUE & FALSE 10220 TM1 CMPA #$A0 10230 BEQ TM01 10240 CMPA #$A1 10250 BNE TM2 10260 TM01 SUBA #$A1 10270 STA VAL 10280 CLRA 10290 BRA SLOAD 10300 * SYSTEM VAR MHIGH & MOD 10310 TM2 CMPA #$16 10320 BRA *+6 10330 CMPA #$17 10340 BNE TM3 10350 STA VAL 10360 LDA #$10 10370 BRA SLOAD 10380 * SIMPLE VARIABLE 10390 TM3 CMPA #4 10400 BNE TM4 10410 LDA #$20 10420 BRA SLOAD 10430 * ( EXPTRSSION ) 10440 TM4 CMPA #$35 10450 BCS TM5 10460 CMPA #$38 10470 BCC TM5 10480 PSHS A 10490 LBSR WLEXPR 10500 PULS A 10510 ADDA #4 10520 LBRA CHECK 10530 ** FUNCTION CALL 10540 TM5 CMPA #3 10550 BMI *+6 10560 CMPA #$E0 10570 BCS TM6 10580 BSR OLP 10590 PFCALL LDA VAL 10600 PSHS A 10610 LBSR WORD 10620 CMPA #$37 10630 BNE PFC1 10640 LDA LSIZE 10650 PSHS A 10660 INC LSIZE 10670 PFC2 INC LSIZE 10680 LBSR WEXPR 10690 CLRB 10700 STB ACC 10710 DECB 10720 STB GLL 10730 LDA #$A7 10740 LDB LSIZE 10750 LBSR PUTABX 10760 LDA SY 10770 CMPA #$3C 10780 BEQ PFC2 10790 PULS A 10800 STA LSIZE 10810 LDA #$3B 10820 LBSR CHECK 10830 PFC1 LDB #-1 10840 STB ACC 10850 STB INDEX 10860 LDA #$86 10870 LDB LSIZE 10880 LBSR PUTAB 10890 PULS A 10900 CMPA #$C0 10910 BCC *+5 10920 LBRA CALPF 10930 LDX #LIBR 10940 SUBA #$C0 10950 PFC3 BEQ PFC4 10960 LEAX 2,X 10970 DECA 10980 BRA PFC3 10990 PFC4 LDA #$BD 11000 LBSR PUTA 11010 LDD ,X 11020 LBRA PUTAB 11030 ** 11040 OLP LBSR OLOAD 11050 LDB ACC 11060 BEQ RTS4 11070 LDA #$36 11080 LBSR PUTA 11090 CLR ACC 11100 RTS4 RTS 11110 ** FUNCTION RND 11120 TM6 CMPA #$70 11130 BNE TM61 11140 BSR SUBSC 11150 LBSR PUTHS 11160 FCB $03BD 11170 FDB RND 11180 RTS 11190 * FUNTION GET 11200 TM61 CMPA #$71 11210 BNE TM62 11220 BSR SUBSC 11230 LBSR PUTHS 11240 FDB $0597 11250 FCB INDN,$BD 11260 FDB GETCH 11270 RTS 11280 * FUNCTION READ 11290 TM62 CMPA #$72 11300 BNE TM7 11310 BSR SUBSC 11320 LBSR PUTHS 11330 FDB $0597 11340 FDB INDN 11350 FCB $8D 11360 FDB GETDA 11370 RTS 11380 * FUNCTION NOTASL ET AL 11390 TM7 CMPA #$40 11400 BCS TM8 11410 CMPA #$49+1 11420 BCC TM8 11430 PSHS A 11440 BSR SUBSC 11450 PULS A 11460 LBRA PUTA 11470 * ARRAY 11480 TM8 CMPA #$5 11490 BNE TM9 11500 LDB VAL 11510 PSHS B 11520 LDB GL 11530 PSHS B 11540 BSR SUBSC1 11550 PULS B 11560 STB GLL 11570 PULS B 11580 LDA LSW 11590 BEQ ARY1 11600 ADDB OPER 11610 STB OPER 11620 LDA #$20 11630 STA AMODE 11640 RTS 11650 ARY1 LDA #$8B 11660 LBSR PUTABX 11670 LBRA LDAAX 11680 ** 11690 DSUBSC LDA #$3C 11700 BSR SUBS1 11710 LDA #$3B 11720 PSHS A 11730 BRA SUBS2 11740 SUBSC LDA #$3E 11750 SUBS1 PSHS A 11760 LBSR WORD 11770 LDA #$37 11780 LBSR CHECK 11790 SUBS2 LBSR EXPR 11800 PULS A 11810 LBRA CHECK 11820 SUBSC1 LBSR WORD 11830 LDA #$36 11840 LBSR CHECK 11850 LBSR LEXPR 11860 LDB LSW 11870 BEQ SBS5 11880 LDB AMODE 11890 BEQ SBS5 11900 LBSR OLOAD 11910 SBS5 LDA #$3A 11920 LBRA CHECK 11930 * MEM FUNCTION 11940 TM9 CMPA #6 11950 BNE TM10 11960 BSR DSUBSC 11970 LBSR PUTHS 11980 FDB $0997 11990 FCB WT2 12000 FDB $3297 12010 FCB WT1,$DE,WT1 12020 FDB $A600 12030 CLR INDEX 12040 RTS 12050 ** FOR EXPANTION 12060 TM10 LBRA ERROR 12070 ** 12080 * LIBRARY ADDRESSS TABLE 12090 ** 12100 LIBR RMB 80 12110 ** 12120 * ADDRESS DEPENDENT CODE 12130 * GENARATION 12140 ** 12150 * SET PRC—FUNC TABLE 12160 ** 12170 SETPFT PSHS A 12180 LDB #3 12190 MUL 12200 ADDD PFTBEG 12210 STD XR 12220 PULS A,PC 12230 ** 12240 TWICE LBSR PUTSTR 12250 FCB $0D,$0A 12260 FCC "TWICE!",0 12270 JMP GAME 12280 ** 12290 * DEF PROC-FUNC 12300 ** 12310 DEFPF BSR SETPFT 12320 LDX XR 12330 TST ,X 12340 BNE TWICE 12350 COM ,X 12360 LDX 1,X 12370 STX YR 12380 LDX XR 12390 LEAX 1,X 12400 BSR PCST 12410 LDX YR 12420 DP1 BEQ RT10 12430 LDX ,X 12440 STX ZR 12450 LDX YR 12460 BSR PCST 12470 LDX ZR 12480 STX YR 12490 BRA DP1 12500 ** 12510 * CALL PORC-FUNC 12520 ** 12530 CALPF BSR SETPFT 12540 INCA 12550 CMPA PFMAX 12560 BCS *+4 12570 STA PFMAX 12580 LDA #$BD 12590 BSR AOUT 12600 LDX XR 12610 LDD 1,X 12620 LDX PC 12630 BSR STAABX 12640 LDX XR 12650 TST ,X 12660 BNE PC2ADD 12670 LEAX 1,X 12680 BSR PCST 12690 BRA PC2ADD 12700 ** 12710 * PUL-DEF N TIMES 12720 ** 12730 PLDFN PSHS A 12740 BSR PULDEF 12750 DEC ,S 12760 BNE *-4 12770 PULS A,PC 12780 ** 12790 * PULL AND DEFINE 12800 ** 12810 PULDEF BSR PULSTK 12820 PCST LDD PC 12830 STAABX STD ,X 12840 RT10 RTS 12850 ** 12860 JMPOUT LDA #$7E 12870 AOUT LDX PC 12880 STA ,X 12890 BRA INCPC1 12900 ** 12910 PULSTK LDX SP 12920 LEAX 2,x 12930 STX SP 12940 LDD ,X 12950 LDX ,X 12960 RTS 12970 ** 12980 * PUL STACK & Jump 12990 ** 13000 PULJMP BSR JMPOUT 13010 BSR PULSTK 13020 PCST2 LDX PC 13030 BSR STAABX 13040 INCPC LEAX 1,X 13050 INCPC1 LEAX 1,X 13060 SETPC STX PC 13070 RTS 13080 ** 13090 * PUSH STACK & JUMP 13100 ** 13110 PSHJMP BSR JMPOUT 13120 BSR PSHDEF 13130 PC2ADD LDX PC 13140 BRA INCPC 13150 ** 13160 * PUSH STRCK & DEFINE 13170 ** 13180 PSHDEF LDX SP 13190 BSR PCST 13200 LEAX -2,X 13210 STX SP 13220 RTS 13230 ** 13240 OUTPC3 BSR AOUT 13250 LDD PC 13260 ADDD #3 13270 BRA PCST2 13280 ** 13290 * LDA R,X 13300 LDAAX LDA #$B7 13310 BSR OUTPC3 13320 LDA #$A6 13330 LA1 BSR AOUT 13340 BRA INCPC1 13350 ** 13360 * STA B,X 13370 STABX LDA #$F7 13380 BSR OUTPC3 13390 LDA #$A7 13400 BRA LA1 13410 ** 13420 * STACK TOP CHANGE 13430 ** 13440 STCHG LDU SP 13450 LEAU 2,U 13460 PULU D,X 13470 EXG D,X 13480 PSHU D,X 13490 RTS 135n0 ** 13510 * END OF LOAD 13520 ** 13530 ENDL LDX PFTBEG 13540 LDA PFMAX 13550 EL1 BEQ EL 13560 TST ,X 13570 BEQ UDERR 13580 EL2 LEAX 3,X 13590 DECA 13600 BRA EL1 13610 UDERR PSHS A 13620 STA ZR 13630 SUBA PFMAX 13640 NEGA 13650 PSHS A 13660 LBSR PUTSTR 13670 FDB $0D0A 13680 FCC "UNDEF",0 13690 PULS A 13700 LBSR PUTCA 13710 PULS A 13720 LDX ZR 13730 BRA EL2 13740 EL LDX PC 13750 STX VARPTR+1,PCR 13760 JMP GAME 13770 ** 13780 * INPUT ROUTINE 13790 * GET ONE CHR FORM MEMORY 13800 ** 13810 MEMIN LDX SREG 13820 LDA ,X+ 13830 BEQ LEND 13840 MEM1 STX SREG 13850 MEM2 LBRA PUTCA 13860 LEND LDA #$D 13870 BSR MEM2 13880 LDA #$A 13890 TST ,X++ 13900 BPL MEM1 13910 LDA #'/' 13920 RTS 13930 ********************** 13940 * ADVANCE WORD 13950 ** 13960 WTABLE FCB 0 END MARK 13970 FCB $30,-'P' 13980 FCC "ROC" 13990 FCB $31,-'F' 14000 FCC "UNC" 14010 FCB $32,'V' 14020 FCC "AR" 14030 FCB $33,-'A' 14040 FCC "RRAY" 14050 FCB $34,-'B' 14060 FCC "EGIN" 14070 FCB $35,';' 14080 FCB $36,-'[' 14090 FCB $37,-'(' 14100 FCB $38,-'E' 14110 FCC "ND" 14120 FCB $39,-'=' 14130 FCB $3A,-']' 14140 FCB $3B,-')' 14150 FCB $3C,-',' 14160 FCB $3D,-':' 14170 FCB $50,-'S' 14180 FCC "TOP" 14190 FCB $51,-'R' 14200 FCC "ETURN" 14210 FCB $55,-'I' 14220 FCC "F" 14230 FCB $65,-'T' 14240 FCC "HEN" 14250 FCB $53,-'F' 14260 FCC "OR" 14270 FCB $61,-'T' 14280 FCC "O" 14290 FCB $52,-'R' 14300 FCC "EPEAT" 14310 FCB $60,-'U' 14320 FCC "NTIL" 14330 FCB $54,-'W' 14340 FCC "HILE" 14350 FCB $64,-'D' 14360 FCC "O" 14370 FCB $56,-'C' 14380 FCC "ASE" 14390 FCB $66,-'O' 14400 FCC "F" 14410 FCB $67,-'E' 14420 FCC "LSE" 14430 FCB $57,-'W' 14440 FCC "RITE" 14450 FCB $69,-'A' 14460 FCC "SCII" 14470 FCB $6A,-'S' 14480 FCC "PACE" 14490 FCB $68,-'C' 14500 FCC "RLF" 14510 FCB $6C,-'"' 14520 FCB $8B,-'+' 14530 FCB $80,-'-' 14540 FCB $8E,-'*' 14550 FCB $8F,-'/' 14560 FCB $82,-'S' 14570 FCC "BC" 14580 FCB $84,-'A' 14590 FCC "ND" 14600 FCB $88,-'E' 14610 FCC "OR" 14620 FCB $89,-'A' 14630 FCC "DC" 14640 FCB $8A,-'O' 14650 FCC "R" 14660 FCB $22,-'>' 14670 FCB $25,-'<' 14680 FCB $26,-'#' 14690 FCB $27,-'=' 14700 FCB $2D,-'L','T' 14710 FCB $2E,-'G','T' 14720 FCB $40,-'N','E','G' 14730 FCB $43,-'N','O','T' 14740 FCB,$43,-'C','O','M' 14750 FCB $44,-'L','S','R' 14760 FCB $46,-'R','O','R' 14770 FCB $47,-'A','S','R' 14780 FCB $48,-'A','S','L' 14790 FCB $49,-'R','O','L' 14800 FCB $06,-'M','E','M' 14810 FCB $A0,-'T' 14820 FCC "RUE" 14830 FCB $A1,-'F' 14840 FCC "ALSE" 14850 FCB $16,-'M' 14860 FCC "HIGH" 14870 FCB $17,-'M' 14880 FCC "OD" 14890 FCB $70,-'R','N','D' 14900 FCB $71,-'G','E','T' 14910 FCB $72,-'R' 14920 FCC "EAD" 14930 ****** 14940 WTBLE RMB $500 14950 ****** 14960 * SUPORTING ROUTINES 14970 * & I/0 CONTROL 14980 ** 14990 SYSTEM EQU $8837 15000 RUB EQU $8 15010 STACK EQU $FE00 15020 ** OBJECT START 15030 C LDS #STACK 15040 VARPTR LDX #0 15050 STX GB 15060 STX LB 15070 OBJMP JMP >0 15080 ** 15090 * PUSH LB & SET NEW LP 15100 ** 15110 PSHLB CLRB 15120 ADDD LB 15130 STD WT1 15140 LDX WT1 15150 LDD LB 15160 STD ,X++ 15170 STX LB 15180 RTS 15190 ** 15200 * PULL LB 15210 ** 15220 PULLB LDX LB 15230 LDX ,--X 15240 STX LB 15250 TSTA 15260 RTS 15270 ** 15280 * RND FUNCTION 15290 ** 15300 RND PSHS A 15310 LDA RNDL 15320 LDB #125 15330 MUL 15340 ADDD #1 15350 STA RNDL 15360 PSHS A 15370 LDA RNDH 15380 LDB #125 15390 MUL 15400 ADDA ,S+ 15410 STA RNDH 15420 PULS B 15430 MUL 15440 INCA 15450 RTS 15460 ** 15470 * DVISITION SET MOD 15480 ** 15490 DIV STB WT1 15500 BEQ ERDIV 15510 TFR A,B 15520 CLRA 15530 STA WT2 15540 DV0 INC WT2 15550 ASL WT1 15560 BCC DV0 15570 DV1 ROR WT1 15580 CMPB WT1 15590 BCS DV2 15600 SUBB WT1 15610 ORCC #1 15620 BRA *+4 15630 DV2 ANDCC #$FE CLR C 15640 ROLA 15650 DEC WT2 15660 BNE DV1 15670 STB MOD 15680 TSTA 15690 RTS 15700 ** 15710 ERDIV STB OUTDN 15720 LBSR CRLF 15730 LBSR PUTSTR 15740 FCC "ERR DIV 0",0 15750 MONIT JMP SYSTEM 15760 ** 15770 MULT MUL 15780 STA MHIGH 15790 TFR B,A 15800 RTS 15810 ** 15820 * PUT A IN DECIMAL 15830 ** 15840 PUTDA CLRB 15850 PUTDR STB DREG 15860 LEAX ,S 15870 LEAS -4,S 15880 CLR 1,X 15890 LDB #3 15900 P0 PSHS B 15910 LDB #10 15920 BSR DIV 15930 ADDB #$30 15940 STB ,X 15950 LEAX -1,X 15960 PULS B 15970 DECB 15980 BNE P0 15990 COM 3,X 16000 LDA #'0' 16010 LDB #4 16020 P1 LEAX 1,X 16030 DECB 16040 CMPA ,X 16050 BEQ P1 16060 COM 4,S 16070 LDA DREG 16080 PSHS B 16090 SUBA ,S+ 16100 BCS PRX 16110 BSR SPACEA 16120 PRX LDB ,X 16130 BEQ P4 16140 BSR PUTCA 16150 LEAX 1,X 16160 BRA PRX 16170 P4 LEAS 4,S 16180 CL1 RTS 16190 ** 16200 * GET IN A DECIMAL 16210 ** 16220 GETDA CLRA 16230 PSHS A 16240 BSR GETCA 16250 CMPA #RUB 16260 BNE GD1 16270 PULS A 16280 LDB #10 16290 LBSR DIV 16300 BRA GETDA+1 16310 GD1 SUBA #'0' 16320 BCS GD2 16330 CMPA #10 16340 BCC GD2 16350 STA DBUF 16360 PULS A 16370 LDB #10 16380 MUL 16390 ADDB DBUF 16400 TFR B,A 16410 BRA GETDA+1 16420 GD2 PULS A,PC 16430 ** 16440 * SPACE A TIMES 16450 ** 16460 SPACEA BEQ CL1 16470 PSHS A 16480 LDA #' ' 16490 BSR PUTCA 16500 PULS A 16510 DECA 16520 BRA SPACEA 16530 ** 16540 * STR OUT 16550 ** 16560 PUTSTR PSHS X 16570 LDX 2,S 16580 STR1 LDA ,X+ 16590 BEQ STR2 16600 LBSR PUTCA 16610 BRA STR1 16620 STR2 STX 2,S 16630 PULS X,PC 16640 ** 16650 * CRLF 16660 ** 16670 CRLF LDA #$0D 16680 BSR PUTCA 16690 LDA #$0A 16700 BRA PUTCA 16710 ** 16720 * CRLF A TIMES 16730 ** 16740 CRLFA BEQ CL1 16750 PSHS A 16760 BSR CRLF 16770 PULS A 16780 DECA 16790 BRA CRLFA 16800 ** 16810 * PUTCHR A 16820 ** 16830 PUTCA PSHS X 16840 LDB OUTDN 16850 LEAX OUTAT,PC 16860 ASLB 16870 JSR [B,X] 16880 PULS X,PC 16890 ** 16900 * GET ACCA ONE CHR 16910 ** 16920 GETCA PSHS X 16930 LDB INDN 16940 LEAX INAT,PC 16950 ASLB 16960 JSR [B,X] 16970 PULS X,PC 16980 ** 16990 * INPUT ROUTINE ADDRESS 17000 ** 17010 INAT FDB INEEE 17020 RMB 4 17030 RMB 14 17040 ** 17050 * OUTPUT AOUTINE ADDRESS 17060 ** 17070 OUTAT FDB OUTEEE 17080 RMB 6 17090 RMB 12 17100 17110 * OBJECT PG AREA 17120 17130 OBJECT NOP 17140 END