changeset 117:f8f44153f8c1

add TL1 source
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Jan 2019 07:39:19 +0900
parents 6be44b5de445
children 8f2154d95a04
files TL1/TL1.txt TL1/toasm.pl
diffstat 2 files changed, 1612 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TL1/TL1.txt	Fri Jan 04 07:39:19 2019 +0900
@@ -0,0 +1,1605 @@
+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 2 
+1320 SY RMB 2
+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 PMODE RMB 1
+1450 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
+5005  STA OUTDN
+5006  STA LSW
+1570  STA INDEX
+1580  STA PMODE
+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
+1790  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
+1340  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  PMODE
+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 PMODE
+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 **
+2330 * 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
+2575  STA 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
+2310  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  LDY SY
+2970 **
+2980 *  MULTIPLE STATEMENTS
+2990 **
+3000 SS1 CMPA #$34
+3010  BCS SS2
+3020  CMPA #$38
+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 PMODE
+3290  LBEQ ERR4
+3300  PSHS B
+3310  BSR WORD1
+3320  PULS B
+3330  DECB 
+3340  BEQ RETP
+3350  LBSR EXPR
+3360 RETP ,_BSR 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 * ASS I GMENT 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
+5590  BNE ASS1
+5600  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  CMPA #4
+3780  BEQ *+5 
+3790  LBRA ERROR 
+3800  LBSR WORD 
+3810 AS1 CLRA 
+3820 AS2 PSHS  A 
+3830  LDA SY
+3840  CMPA #S3C
+3850  BNE  *+9
+3860  LBSR  WORD 
+3870  BSR   ASSIGN
+3680  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 
+3390  BNE   AS4
+4000  LBSR  PUTX 
+4010  LDA   #$A7 
+4020  LDS   OPER 
+4030  LBRA  PUTAB
+4040 AS4   DECA 
+4050  BNE   AS5
+4050  LBSR  PUTX 
+4070  LDA   #$33 
+4080  LBSR  PUTA 
+4090  LBRA  STABX 
+4100 AS5 LBSR  PUTHS
+4110  FCB  10
+4120  FDB   $33D7 
+4130  FCB   WT2
+4140  FDB   $33D7
+4150  FCB   WT1 $DE,WT2
+4160  FDB   $A700 
+4170  CLR   INDEX
+4180  RTS
+4190 **
+4200 ** NON-STATEMENT
+4210 **
+4220 SSEND COM SSW
+4230  RTS
+4242 **
+4250  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
+4531  BEQ   *+5
+4560  LBRA ERROR
+4370  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 PUTABSX
+4800  LBSR PUTHS
+4610  FCB 2
+4020  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  LDS INDEX 
+5130  PSHS B
+5040  LBSR STAT
+5500  PULS B
+5060  STB INDEX
+5070  BSR PEROUT 
+5080  BSR MINOUT
+5090 PLUOUT LBRA PULDEF
+5100 **
+5110 ** IF—THEN
+5120 **
+5130 SS9 DECB
+3140  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
+5340  LBSR STAT
+5250  PULS B
+5260  CMPB INDEX 
+5270  BEQ *+4
+5280  CLRB 
+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
+3400 S10A INCB
+5410  PSHS B
+5420  STB ACC 
+5430  LBSR LEXPR 
+5440  LDA #$81 
+5450  LBSR ROPER
+5460  LBSR PUTHS
+5470  FCB 2
+5480  FDB $2703
+5490  BSR SLAOUT
+5500  LDB INDEX
+5510  PSHS B
+5520  LBSR STAT
+5540  BSR PEROUT
+5550  BSR PLUOUT
+5560  PULS B
+5570  STB INDEX 
+5580  PULS B
+5590  LDA SY
+5600  CMPA #$XX
+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
+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 **
+3890 WTERM CMPA #$6C
+3900  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 GFTCH
+5390  BRA WRO1
+6000 WRO2 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
+6121  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
+6300 **
+6310 WR4 CMPA #$A9
+6320  BNE WR5
+6320  LBSR SUBSC
+6340  LBSR PUTHS
+6350  FDB $03BD
+6360  FDB PUTCA
+6370  RTS
+6380 **
+6390 WR5 CMPA #$26
+6400  BNE WR6
+6410  LBSR DSUBSC
+5420  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
+530 RTS11 RTS
+6540 **
+6750 * 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
+6490  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 ROUT
+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  FCS "ERROR"
+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
+7010 **
+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
+7340  CMPA #"."
+7250  BEQ SKIP
+7260  CMPA #";"
+7270  BNE WD2
+7280 SKIP BSR GETCH
+7290  BRA WD1
+7300 **
+7310 *  COMMENT
+7320 **
+7330 WD2 CMPA  #"%"
+7440  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
+75221 WD4 CMPA #"$"
+7530  BNE WD5
+7540 WD40 BSR GETCH
+7560  BEQ WD41
+7570  BCC RTS2
+7580  
+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+
+7693  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
+7823 AT LDB #-1
+7833 RTS2 RTS
+7840 NT CLRB
+7350  RTS
+7860 ** DECIMAL CONSTANT
+7870 W5 BSR TSTNA
+7883  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  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 STRONE
+8140  BRA  W061
+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 TCOUNG 
+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 S6 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 PMODE
+8550  BEQ *+6
+8560  CMPA #6
+8570  BCS *+3 
+8580  NEGB 
+8390  STB GL
+8600  ANDA #$FD
+8610 S07 STA SY
+8620 RTSS RTS
+8620 **
+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
+8620 **
+8730 * LOGICAL EXPRESSION
+8640 **
+8750 LEXPR BSR REEXPR
+8760 LE1 LDY SY
+8770  CMPA #$82
+8780  BCS RTE
+6790  CMPA #$8A+1
+8800  BCC RTE
+8810  PSHS A
+8820  LBSR WORD
+8830  BSR REXPR
+8840  LDB LSW
+3850  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
+8560  BSR OCORD 
+8970  BRA LE1
+8980 **
+8990 * RELATIONAL EXPRESS 
+8900 **
+9010 REXPR BSR AEXPR
+9020 RE1 LDA SY
+9030  CMPA #$21 
+5040  BCS      RTE 
+9350  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 ROPER 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
+3500  LBRA PUTAB
+9510 * PUT 'TAB:PULS A'
+9520 PUTPUL LBSR PUTHS
+9530  FCB 2
+9540  FDB $1632
+9550  RTS 
+9560
+9570
+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
+9650 AE2 PSHS A
+9690  LBSR WORD
+9700  BSR MEXPR
+9710  PULS A
+9720  BSR ROPER
+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
+9830  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
+10050  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 PMODE 
+10190  COM LSW 
+10200  LBRA WORD 
+10210 * CONSTfTRUE & FALSE
+10220
+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
+10220   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 TMG
+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 RCC 
+10850   STB INDEX 
+10860   LDA #$86 
+10870   LDB LSIZE
+10880
+10890
+10900  CMPA #$C0
+10910  BCC *+5
+10920  LBRA CALPF
+10930  LDX #LIBR
+10940  SUBA #$C0
+10950 PFC3 BEQ PFC4
+10960  LBSR PUTA
+10970  DECA
+10380  BRA PFC3
+10990 PFC4 LDA #$BD
+11000  LBSR PUTA
+11010  LDD ,X
+11020  LBRA PUTAB
+11030 **
+11040 OLP LBSR OLORD
+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 T161 
+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
+11280 * 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
+11450  LBRA PUTA
+11470 * ARRAY
+11480 TMS 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 ANODE
+11640  RTS 
+11650 ARY1 LDA #$8B
+11660  LBSR PUTABX
+11670  LBRA LDAAX
+11680 **
+11690 DSUBSC LDA #$3C
+11700  BSR SIUBS1
+11710  LDA #$3B
+11720  PSHS A
+11730  BRA SUBS2
+11740 SUBSC LDA #$3E
+11750 SUBC1 PSHS A
+11760  LBSR WORD
+11770  LDA #$37
+11780  LBSR CHECK
+11790  LBSR EXPR
+11800  PULS A 
+11810  LBRA CHECK
+11820 SUBSC1 LBSR WORD
+11830  LDA #$36
+11240  LBSR CHECK
+11850  LBSR LEXPR
+11860  LDB LSW
+11870  BEQ SBS5
+11880  LDB AMODE
+11890  BEQ SBS5
+11900  LBSR OLOAD
+11910 SB35 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 TMI0 BRA 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  FCS "TWICE!"
+12270  JMP GAME
+12280 **
+12290 * DEF PROC-FUNC
+12300 **
+12310 DEFPF BSR SETPFT
+12320  LDX XR
+12330  TST ,X
+12740  BNE TWICE
+12350  COM ,X
+12360  LDX 1,X
+12370  STX YR 
+12380  LDX XR 
+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
+17480  STX YR
+12490  BRA DP1
+12500 **
+12510 * CALL POR0-FUNC
+12520 **
+12530 CRLPF 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 PT10 RTS
+12850 **
+12860 JMPOUT LDA #$7E
+12870 ROUT 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 **
+13189 TSHDEF LDX SP
+13190  BSR PCST
+13200  LEAX -2,X
+13210  STX SP
+13220  RTS
+13240 OUTPC3 BSR ROUT 
+13250  LDD PC
+13260  ADDD #3
+13270  BRA PCST2
+13280 **
+13290 * LDA R,X
+13300 LDAAX LDA #$B7
+13310  BSR OUTPC3
+13320  LDA #$A6
+13730 LA1 BSR ROUT 
+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
+13320 **
+13530 ENDL LDX PFTBEG
+13340  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  FCS "UNDEF"
+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
+13810 MEMIN LDX SREG
+13820  LDA ,X+
+13830  BEQ LEND
+13840 MEM1 STX SREG
+13850 MEM2 LBRA PUTCR
+13860 LEND LDA #$D 
+13870  BSR MEM2
+13860  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"
+14030  FCB $34, -'B'
+14060  FCC "EGIN"
+14070  FCB $35,';'
+14080  FCB $36,-'['
+14090  FCB $37,-'('
+'4100  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 "EPEATI1
+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'
+14790  FCB $47,-'A','S','R'
+14590  FCB $48,-'A','S','L'
+14590  FCB $49,-'R','O','L'
+14590  FCB $06,-'M','E','M'
+14810  FCB $A0,-'T'
+14820  FCC "RUE"
+14830  FCB $A1,-'F'
+14840  FCC "ALSE"
+14850  FCB $16,-'M'
+14660  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
+13000 RUB EQU $8
+13010 STACK EQU $FEE00
+15020 ** OBJECT START
+15030 C LDS #STACK
+15040 VARPTR LDX #0
+15050  STX G8
+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
+13180  RTS
+15190 **
+15200 * PULL LB
+15210 **
+13220 PULLB LDX LB
+15230  LDX ,--X
+15240  STX LB
+15250  TSTA
+15260  RTS
+15270 **
+13280 * RND FUNCTION
+15290 **
+15300 RND PSHS A
+13310  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
+13500  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
+15510  ORCC #1
+15520  BRA *+4
+15530 DV2 ANDCC #$FE CLR C
+15640  ROLA
+15650  DEC WT2
+15670  STB MOD
+15680  TSTA
+15690  RTS
+15700 **
+15710 ERDIV STB COUTDN
+17720  LBSR CRLF
+15730  LBSR PUTSTR
+15740  FCC "ERR DIV 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  COMA 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 SPACER
+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 
+16265  BNE GD1 
+16275  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 
+16355  STA DBUF 
+16365  PULS A
+16370  LDB #10 
+16380  MUL
+16390  ADDB DBUF 
+16405  TFR B,A
+16415  BRA GETDA+1 
+16420 GD2 PULS A,PC
+16430 **
+16445 * SPACE A TIMES 
+16455 **
+16460 SPFICEA BEQ CL1
+16470  PSHS A
+16485  LDA #" "
+16490  BSR PUTCA
+16500  PULS A
+16310  DECA
+16520  BRA SPACER
+16530 **
+16540 * STR OUT
+16550 **
+16560 PUTSTR PSHS X
+16570  LDX 2,S
+16560 STR1 LDA ,X+
+16590  BEQ STR2
+16650  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 LDA #$0A
+16755  BRA PUTCA
+16710 **
+16725 * 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 ROUTINE ADDRESS
+17060 **
+17070 OUTAT FDB OUTEEE
+17080  RMB 6
+17090  RMB 12
+17100 
+17110 * OBJECT PG AREA
+17120 
+17130 OBJECT NOP
+17140  END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TL1/toasm.pl	Fri Jan 04 07:39:19 2019 +0900
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+while(<>) {
+    s/\r\n$//;
+    s/^\d+ //;
+    print $_,"\n" 
+}