changeset 121:6ebaa9693310

os9 version TL/1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Jan 2019 19:02:43 +0900
parents fbb3301a2564
children 4d06202716c2
files TL1/TL1.txt TL1/TL1os9.asm TL1/defsfile
diffstat 3 files changed, 1808 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/TL1/TL1.txt	Fri Jan 04 17:33:04 2019 +0900
+++ b/TL1/TL1.txt	Fri Jan 04 19:02:43 2019 +0900
@@ -1,4 +1,4 @@
-1000 *******TL/1*************2
+1000 *******TL/1*************
 1010 GAME EQU $B503
 1020 TXTTOP EQU $FB7E
 1030 BASE EQU $FB
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TL1/TL1os9.asm	Fri Jan 04 19:02:43 2019 +0900
@@ -0,0 +1,1788 @@
+*******TL/1*************
+         nam   tl1
+         ttl   TL1 compiler
+
+         ifp1
+         use   defsfile
+         endc
+
+* Module header definitions
+tylg     set   Prgrm+Objct   
+atrv     set   ReEnt+rev
+rev      set   $00
+edition  set   1
+
+         mod   eom,name,tylg,atrv,start,size
+
+TXTTOP EQU $FB7E
+
+INDN   RMB 1
+OUTDN  RMB 1
+LB     RMB 2
+GB     RMB 2
+MHIGH  RMB 1
+MOD    RMB 1
+WT1    RMB 1
+WT2    RMB 1
+RNDH   RMB 1
+RNDL   RMB 1
+DREG   RMB 1 
+DBUF   RMB 3
+XR     RMB 2
+YR     RMB 2
+ZR     RMB 2
+PFTBEG RMB 2
+PC     RMB 2
+SREG   RMB 2
+SP     RMB 2
+PFMAX  RMB 2 
+LSW    RMB 1 
+SY     RMB 1
+CH     RMB 1 
+VAL    RMB 1 
+GL     RMB 1 
+OPER   RMB 1 
+GLL    RMB 1 
+INDEX  RMB  1
+RMCODE RMB 1
+ACC    RMB 1
+LSIZE  RMB 1
+TCOUNT RMB 1 
+TEND   RMB 2 
+WEND   RMB 2
+AMODE  RMB 1
+RSW    RMB 1
+GEND   RMB 2
+SSW    RMB  1
+
+ioentry  rmb   $80
+filepath rmb   2
+parmptr  rmb   2
+stdin    rmb   1
+chksum   rmb   1
+bcount   rmb   1
+adr      rmb   2
+work     rmb   2
+readbuff rmb   $100
+
+OBJSTART RMB 2
+
+**
+* LIBRARY ADDRESSS TABLE
+**
+LIBR   RMB 80
+
+* OBJECT PG AREA
+
+WTBLE  RMB $500+$100
+MSTACK RMB $100 
+
+OBJECT RMB 2048        * NOP
+
+size   equ .
+
+name     fcs   /TL1/
+         fcb   edition
+
+******
+* SUPORTING ROUTINES
+* & I/0 CONTROL
+**
+** OBJECT START
+C      leas MSTACK,u
+VARPTR LDX #0
+       STX GB
+       STX LB
+       clra
+       lbra close
+       sta INDN
+       inca
+       sta OUTDN
+OBJMP  JMP OBJECT,u
+
+**
+COMP   CLRA
+       STA OUTDN
+       STA LSW
+       STA INDEX
+       STA AMODE
+       STA LSIZE
+       STA RSW
+       STA PFMAX
+       leax ,MSTACK,u
+       STX SP
+       LEAX 2,x
+       STX PFTBEG
+       CLRB
+C1     STA ,X+
+       DECB
+       BNE C1
+       INCA
+       STA TCOUNT
+       LDA #' '
+       STA CH
+**  copy reserved word table
+       LEAX WTABLE,PCR
+       leay WTBLE,PCR
+       ldb #WTBLEND-WTABLE
+tbl1   lda ,x+
+       sta ,y+
+       decb
+       bne tbl1
+       sty TEND
+       LEAX OBJECT,u
+       STX PC
+** 
+       LBSR CRLF
+       BSR REG0
+       LBSR WORD
+       CMPA #$30 PROC?
+       BNE  *+4
+       BSR REGNAM  
+       BSR REG0
+       CMPA #$31 FUNC?
+       BNE  *+4
+       BSR REGNAM
+       CLR LSIZE
+       BSR REG0
+       LBSR PROG 
+       LBSR STPOUT
+       LDX TEND
+       STX GEND
+PLOOP  LDA  SY
+       CMPA #$8F /END CODE
+       LBEQ ENDL
+       CMPA #$4
+       BCC ERR4
+       DECA
+       STA  AMODE
+       LDA VAL
+       LBSR DEFPF
+       LBSR PUTHS
+       FDB $03BD
+       FDB PSHLB
+       BSR REG0
+       CLR LSIZE
+       LBSR WORD
+       CMPA #$37 
+       BNE PL1
+       BSR REGNAM
+       LDA #$38 )
+       LBSR CHECK
+PL1    BSR PROG
+       LDB AMODE
+       CMPB #1
+       BNE *+5
+       LBSR RETP
+       LDX GEND 
+       STX TEND
+       LDB #5
+       STB TCOUNT
+       BRA PLOOP
+**
+* REGIST ZERO
+**
+REG0   LDX TEND
+       CLR ,X+
+       STX TEND
+       INC TCOUNT
+       RTS
+**
+*  REGIST NAME
+**
+REGNAM COM RSW
+       LBSR WORD
+       LDB RSW
+       BEQ *+5
+ERR4   LBRA ERROR
+       LDX TEND
+       LDA LSIZE
+       STA ,X
+       INC LSIZE
+       LDX WEND
+       STX TEND
+       BSR WORD1
+       CMPA #$36 
+       BNE REG2
+       BSR WORD1
+       BNE ERR4
+       LDA VAL
+       ADDA LSIZE
+       BSR WORD1 
+       LDA  #$3A
+       LBSR CHECK
+REG2   CMPA #$3C
+       BEQ REGNAM
+       RTS
+**
+* PROGRAM
+**
+PROG   CMPA #$32 VAR?
+       BNE *+4
+       BSR REGNAM
+       BSR REG0
+       CMPA #$33 ARRAY?
+       BNE *+4
+       BSR REGNAM
+       LDB #-1 
+       STB INDEX
+**
+*  STATEMENT 
+**
+STAT   BSR SSTAT
+       LDB SSW
+       BEQ RTS1
+       LBRA ERROR 
+**
+* STATEMENTS LIST
+**
+STLIST BSR SSTAT 
+       LDB SSW
+       BEQ STLIST
+RTS1   RTS
+**
+* SINGLE STATEMENT
+**
+SSTAT  CLRA
+       STA ACC 
+       STA SSW 
+       LDA SY
+**
+*  MULTIPLE STATEMENTS
+**
+SS1    CMPA #$34
+       BCS SS2
+       CMPA #$38
+       BCC SS2
+       ADDA #4
+       PSHS A
+       BSR WORD1
+       BSR STLIST
+       PULS A
+       CLR SSW
+       LBRA CHECK
+**
+* STOP
+**
+SS2    CMPA #$50
+       BNE SS3
+       BSR STPOUT
+WORD1  LBRA WORD
+**
+STPOUT LBSR PUTHS
+       FCB 3,$7E
+       FDB MONIT
+       RTS
+**
+* RETURN
+**
+SS3    CMPA #$51
+       BNE SS4
+       LDB AMODE
+       LBEQ ERR4
+       PSHS B
+       BSR WORD1
+       PULS B
+       DECB 
+       BEQ RETP
+       LBSR EXPR
+RETP   LBSR PUTHS
+       FDB $037E
+       FDB PULLB
+       RTS
+**
+* PROC CALL
+**
+SS4    CMPA #2
+       LBEQ PFCALL
+       CMPA #$E0
+       BCS SS5
+       LBRA PFCALL
+**
+* ASSIGNMENT STATEMENT 
+**
+SS5    CMPA #7
+       BCS ASSIGN
+       LBRA SS6
+ASSIGN LDB GL 
+       PSHS B
+       LDB VAL
+       PSHS B
+       CMPA #5
+       BNE ASS1
+       LBSR SUBSC1
+       LDB ,S
+       LDA LSW 
+       BNE AS0
+       LDA #$8B 
+       LBSR PUTAB
+       LDA  #1
+       BRA   AS2
+AS0    ADDB OPER 
+       STB ,S
+       CLR LSW
+       BRA   AS1
+ASS1   CMPA #6
+       BNE ASS2 
+       LBSR DSUBSC 
+       LDA #2
+       BRA AS2 
+ASS2    CMPA #4
+       BEQ *+5 
+       LBRA ERROR 
+       LBSR WORD 
+AS1    CLRA 
+AS2    PSHS  A 
+       LDA SY
+       CMPA #$3C
+       BNE  *+9
+       LBSR  WORD 
+       BSR   ASSIGN
+       BRA   AS3
+       LDA   #$3D 
+       LBSR  CHECK
+       LDA   #$27 
+       LBSR  CHECK
+       LBSR  EXPR
+AS3    PULS D
+       STB   OPER     4--
+       PULS B
+       STB  GLL
+       TSTA 
+       BNE   AS4
+       LBSR  PUTX 
+       LDA   #$A7 
+       LDS   OPER 
+       LBRA  PUTAB
+AS4      DECA 
+       BNE   AS5
+       LBSR  PUTX 
+       LDA   #$33 
+       LBSR  PUTA 
+       LBRA  STABX 
+AS5    LBSR  PUTHS
+       FCB  10
+       FDB   $33D7 
+       FCB   WT2
+       FDB   $33D7
+       FCB   WT1 $DE,WT2
+       FDB   $A700 
+       CLR   INDEX
+       RTS
+**
+** NON-STATEMENT
+**
+SSEND  COM SSW
+       RTS
+**
+SS6    CMPA #$58 
+       BCC SSEND 
+       CMPA #$52
+       BCS SSEND
+       SUBA #$51
+       PSHS A
+       LBSR WORD
+       PULS B
+**
+*  REPEAT UNTIL 
+**
+       DECB
+       BNE SS7
+       STB INDEX
+       BSR ASTOUT
+       LBSR STLIST
+       LDA #$60
+       LBSR CHECK
+       LBSR EXPR
+       LBSR PUTHS
+       FCB 2
+       FDB $2603
+       CLR SSW
+       BRA   MINOUT 
+**
+* FOR-TO
+**
+SS7    DECB
+       BNE SS8
+       CMPA #4
+       BEQ *+5
+       LBRA ERROR
+       LDB VAL
+       PSHS B
+       LDB GL
+       PSHS B
+       LBSR ASSIGN
+       LDA #$61
+       LBSR CHECK
+       CLR ACC
+       LBSR EXPR
+       LDA #$64
+       LBSR CHECK
+       BSR ASTOUT
+       LDA   #$36
+       LBSR PUTA
+       CLR   INDEX
+       LBSR STAT
+       LDA  #$32
+       LBSR PUTA
+       PULS D
+       STA GLL
+       STB OPER
+       LDA #$A1
+       LBSR PUTABX
+       LBSR PUTHS
+       FCB 2
+       FDB $2305
+       LDA #$6C
+       LDB OPER
+       LBSR PUTAB
+MINOUT LBRA PULJMP
+ASTOUT LBRA PSHDEF 
+**
+* WHILE-DO
+**
+SS8    DECB
+       BNE SS9
+       STB INDEX
+       BSR ASTOUT
+       LBSR EXPR
+       LDA #$64
+       LBSR CHECK
+       LBSR PUTHS
+       FCB 2
+       FDB $2603
+       BSR SLAOUT 
+       LDS INDEX 
+       PSHS B
+       LBSR STAT
+       PULS B
+       STB INDEX
+       BSR PEROUT 
+       BSR MINOUT
+PLUOUT LBRA PULDEF
+**
+** IF—THEN
+**
+SS9    DECB
+       BNE SS10
+       LBSR EXPR
+       LDA #$65 
+       LBSR CHECK
+       LBSR PUTHS
+       FCB 2
+       FDB $2603
+       BSR SLAOUT 
+       LDB INDEX
+       PSHS B
+       LBSR STAT
+       PULS B
+       CMPB INDEX 
+       BEQ *+4
+       CLR INDEX 
+       BRA PLUOUT 
+SLAOUT LBRA PSHJMP
+PEROUT LBRA STCHG
+***
+* CASE—OF
+SS10   DECB
+       BNE SS11
+       LBSR EXPR
+       LDA #$66
+       LBSR CHECK
+       CLRB
+S10A   INCB
+       PSHS B
+       STB ACC 
+       LBSR LEXPR 
+       LDA #$81 
+       LBSR AOPER
+       LBSR PUTHS
+       FCB 2
+       FDB $2703
+       BSR SLAOUT
+       LDB INDEX
+       PSHS B
+       LBSR STAT
+       BSR SLAOUT
+       BSR PEROUT
+       BSR PLUOUT
+       PULS B
+       STB INDEX 
+       PULS B
+       LDA SY
+       CMPA #$67
+       BNE S10A
+       PSHS B 
+       LBSR WORD
+       LBSR STAT
+       CLR INDEX
+       PULS A
+       LBRA PLDFN 
+**
+* WRITE STATEMENT
+**
+SS11   LDA #$37
+       LBSR CHECK
+       LBSR EXPR
+       LBSR PUTHS
+       FDB $0297
+       FCB OUTDN
+       LDA #$3D
+       LBSR CHECK
+WTLP   CLR ACC
+       BSR WTERM
+       LDA SY
+       CMPA #$3C
+       BNE WTEN
+       LBSR WORD
+       BRA WTLP
+WTEN   LDA #$36
+       LBRA CHECK
+**
+WTERM  CMPA #$6C
+       BNE WR1
+       LBSR PUTHS
+       FDB $03BD
+       FDB PUTSTR
+       LDA CH
+WR01   CMPA #'"'
+       BEQ WR02
+       LBSR PUTA
+       LBSR GETCH
+       BRA WR01
+WR02   CLRA
+       STA INDEX
+       LBSR PUTA
+       LBSR GETCH
+       LBRA WORD
+**
+WR1    CMPA #$6B
+       BNE WR3
+       LBSR WORD
+       CMPA #$37
+       BEQ WR2
+       LBSR PUTHS
+       FDB $03BD
+       FDB CRLFA
+       RTS
+**
+WR2    LBSR WEXPR
+       BSR WTEN
+       LBSR PUTHS
+       FDB $03BD
+       FDB CRLFA
+       RTS
+**
+WR3    CMPA #$6A
+       BNE WR4
+       LBSR SUBSC
+       LBSR PUTHS
+       FDB $03BD
+       FDB SPACEA
+       RTS
+**
+WR4    CMPA #$A9
+       BNE WR5
+       LBSR SUBSC
+       LBSR PUTHS
+       FDB $03BD
+       FDB PUTCA
+       RTS
+**
+WR5    CMPA #$26
+       BNE WR6
+       LBSR DSUBSC
+       LBSR PUTPLB
+       LBSR PUTHS
+       FDB $03BD
+       FDB PUTDA+1
+       BRA WR66
+**
+WR6    LBSR EXPR
+       LBSR PUTHS
+       FDB $03BD
+       FDB PUTDA
+WR66   CLR INDEX
+RTS11  RTS
+**
+* PUTX & PUTB
+**
+PUTABX PSHS D
+       BSR PUTX
+       PULS D 
+       BRA PUTAB
+**
+* PUT LP, OR GB BY INDEX
+**
+PUTX   LDB GLL 
+       CMPB INDEX 
+       BEQ RTS11 
+       STB INDEX 
+       ADDB #LB+1
+       LDA #$DE 
+***
+* PUT ACC A&B
+**
+PUTAB    BSR PUTA
+       TFR B,A
+**
+* PUT ACCA RS AN OBJECT
+**
+PUTA   STX RNDH
+       LBSR AOUT
+       LDX RNDH
+       RTS
+**
+* PUTHS STRING
+**
+PUTHS  LDX ,S++
+       LDB ,X+
+PS1    LDA ,X+
+       BSR PUTA
+       DECB
+       BNE PS1
+       JMP ,X
+**
+** CHECK ACC
+**
+CHECK  CMPA SY
+       BEQ WORD
+**
+* ERROR
+**
+ERROR  LBSR PUTSTR
+       FDB $0D0A
+       FCC "ERROR ",0
+       LDX TEND
+       LEAX 1,X
+       NEG ,X
+ER0    LDA ,X+
+       LBSR PUTCA
+       CMPX WEND
+       BNE ER0
+       lbra exit
+**
+* WORD DECORDER
+**
+WORD   BSR WORDS
+       LDA SY
+       RTS
+WORDS  CLRB
+       STB SY
+       STB VAL
+       LDA CH
+** SKIP CONT  ,SPACE.;
+WD1    CMPA #$21
+       BCS SKIP
+       CMPA #'.'
+       BEQ SKIP
+       CMPA #';'
+       BNE WD2
+SKIP   BSR GETCH
+       BRA WD1
+**
+*  COMMENT
+**
+WD2    CMPA #'%'
+       BNE WD3
+       BSR GETCH
+       CMPA #$20
+       BCC *--4
+       BRA WD1
+**
+* ASCC CONST
+**
+WD3    CMPA #'\''
+       BNE WD4
+       BSR GETCH
+       STA VAL
+       BSR GETCH
+GETCH  PSHS X
+       LBSR MEMIN
+       STA CH
+       PULS X,PC
+* HEX CONSTANT
+WD4    CMPA #'$'
+       BNE WD5
+WD40   BSR GETCH
+       BSR TSTNA
+       BEQ WD41
+       BCC RTS2
+       CMPA #'F'+1
+       BCC RTS2
+       SUBA #7
+WD41   SUBA #'0'
+       LDB VAL
+       ASLB
+       ASLB
+       ASLB
+       ASLB
+       PSHS B
+       ADDA ,S+
+       STA VAL
+       BRA WD40
+**
+* TEST ALPHA NUMERIC
+TSTNA  CMPA #'0'
+       BCS NAF
+       CMPA #'9'+1
+       BCS NT
+       CMPA #'A'
+       BCS NAF
+       CMPA #'Z'+1
+       BCS AT
+NAF    CLRB CLEAR C
+AT     LDB #-1
+RTS2   RTS
+NT     CLRB
+       RTS
+** DECIMAL CONSTANT
+WD5    BSR TSTNA
+       BNE WD6
+WD50   SUBA #'0'
+       PSHS A
+       LDA VAL
+       LDB #10
+       MUL
+       ADDA ,S+
+       STA VAL
+       BSR GETCH
+       BSR TSTNA
+       BEQ WD50
+       RTS
+* THE OTHER WORDS
+WD6    LDX TEND
+       PSHS A
+       NEGA
+       LEAX 1,X
+       BSR STAONE
+       PULS A
+       BSR TSTNA
+       BCC TLOOK1
+WD61   LDA CH
+       BSR TSTNA
+       BCS *+4
+       BNE TLOOK1
+       BSR STAONE
+       BRA  WD61
+STAONE STA ,X+
+       STX WEND
+       BRA GETCH 
+TLOOK1 LDA RSW
+       BEQ TLOOK
+       COM RSW
+       RTS
+**
+* WORD TABLE SEARCH
+**
+TLOOK  LDA TCOUNT 
+       STA SY
+       LDX TEND 
+S01    LDU WEND 
+S02    LDA ,-U
+       CMPA ,-X 
+       BEQ S06
+S03    TST ,X
+       BEQ S05 
+       BMI S04 
+       LEAX -1,X
+       BRA  S03 
+S04    LEAX -1,X 
+       BRA S01 
+S05    DEC SY
+       BNE S01
+       LBRA ERROR
+S06    TSTA 
+       BPL S02
+       LDB ,-X
+       STB VAL
+       LDA SY
+       CMPA #1
+       BNE *+6
+       TFR B,A 
+       BRA S07 
+       CMPA #4 
+       BCS  RTSS
+       LDB  #1
+       TST AMODE
+       BEQ *+6
+       CMPA #6
+       BCS *+3 
+       NEGB 
+       STB GL
+       ANDA #$FD
+S07    STA SY
+RTSS   RTS
+**
+* ARITHMATIC EXPRESSION
+**
+WEXPR  LBSR WORD
+EXPR   BSR LEXPR
+       BSR OLOAD 
+RTE    RTS
+** WORD * LEXPR
+WLEXPR LBSR WORD
+**
+* LOGICAL EXPRESSION
+**
+LEXPR  BSR REXPR
+LE1    LDY SY
+       CMPA #$82
+       BCS RTE
+       CMPA #$8A+1
+       BCC RTE
+       PSHS A
+       LBSR WORD
+       BSR REXPR
+       LDB LSW
+       BNE LE2
+       LBSR PUTHS
+       FDB $0397 
+       FCB WT1
+       FCB $32
+       PULS A
+       ADDA #$10
+       LDB #WT1
+       LBSR PUTAB 
+       BRA LE1
+LE2    PULS A
+       BSR OCORD 
+       BRA LE1
+**
+* RELATIONAL EXPRESS 
+**
+REXPR  BSR AEXPR
+RE1    LDA SY
+       CMPA #$21 
+       BCS      RTE 
+       CMPA #$30 
+       BCC RTE
+       PSHS A
+       LBSR WORD 
+       ASR AEXPR 
+       LDA #$80 
+       BSR AOPER 
+       PULS A
+       LBSR PUTHS
+       FCB 6
+       FCB $3,$4F,$20,$02,$86,$FF
+       BRA RE1
+** ADDING OPERATFR
+AOPER  LDB LSW
+       BNE OCORD 
+       PSHS A
+       CMPA #$80 
+       BEQ  *+5 
+       BSR PUTPUL
+       FCB $8C 
+       BSR PUTPLB
+       PULS A
+       SUBA #$70
+PUTA1  LBRA PUTA
+** OUTPUT SAVED L-CC 
+OLOAD  LDA LSW 
+       BEQ RTE 
+       LDA ACC
+       BEQ *+6 
+       LDA #$36
+       BSR PUTA1 
+       LDA #$86
+OCORD  PSHS A
+       CLRA
+       STA LSW
+       COMA
+       STA ACC
+       LDA AMODE
+       CMPA #$20
+       BNE *+5
+       LBSR PUTX
+       CLR LSW
+       PULS A
+       ADDA AMODE
+       LDB OPER
+       LBRA PUTAB
+* PUT 'TAB:PULS A'
+PUTPUL LBSR PUTHS
+       FCB 2
+       FDB $1632
+RTE1   RTS 
+* PUT 'PULS B'
+PUTPLB LDA #$33
+       BRA PUTA1
+**
+*  ADDING EXPRESSION
+**
+AEXPR  BSR MEXPR
+AE1    LDA SY
+       CMPA #$80
+       BEQ  AE2
+       CMPA #$8B 
+       BNE RTE1
+AE2    PSHS A
+       LBSR WORD
+       BSR MEXPR
+       PULS A
+       BSR AOPER
+       BRA AE1
+**
+*  MUTIPLYING EXPRESSION
+**
+MEXPR  BSR TERM 
+ME1    LDA SY
+       CMPA #$8E
+       BEQ ME2
+       CMPA #$8F
+       BNE RTE1
+ME2    PSHS A
+       LBSR WORD
+       BSR TERM
+       LDB LSW 
+       BEQ ME3
+       LDA #$C6
+       BSR OCORD
+       FCB $8C
+ME3    BSR PUTPUL 
+       PULS A
+       CMPA #$8E 
+       BHS ME4
+       LBSR PUTHS
+       FCB 3
+       FCB $BD
+       FDB MULT
+       BRA ME1
+ME4    LBSR PUTHS
+       FCB 3
+       FCB $BD
+       FDB DIV
+       BRA ME1
+**
+* TERM
+**
+TERM   LDA SY
+       BNE TM1
+* SAVE L-COMMAND 
+SLOAD  PSHS A
+       LBSR OLOAD
+       LDA VAL 
+       STA OPER 
+       LDA GL
+       STA GLL
+       PULS A
+       STA AMODE 
+       COM LSW 
+       LBRA WORD 
+* CONSTfTRUE & FALSE
+TM1
+       BEQ TM01
+        CMPA #$A1
+        BNE TM2
+TM01    SUBA #$A1
+        STA VAL
+        CLRA
+        BRA SLOAD
+* SYSTEM VAR MHIGH & MOD
+TM2       CMPA #$16
+        BRA *+6
+        CMPA #$17
+        BNE TM3
+        STA VAL
+        LDA #$10
+        BRA SLOAD
+* SIMPLE VARIABLE 
+TM3       CMPA #4
+        BNE TM4
+        LDA #$20
+        BRA SLOAD
+* ( EXPTRSSION ) 
+TM4       CMPA #$35
+        BCS TM5
+        CMPA #$38
+        BCC TM5
+        PSHS A
+        LBSR WLEXPR
+        PULS A
+        ADDA #4
+        LBRA CHECK
+** FUNCTION CALL
+TM5       CMPA #3
+        BMI *+6
+        CMPA #$E0
+        BCS TM6
+        BSR OLP 
+PFCALL LDA VAL
+        PSHS A 
+        LBSR WORD
+        CMPA #$37 
+        BNE PFC1 
+        LDA LSIZE
+        PSHS A 
+        INC LSIZE 
+PFC2       INC LSIZE 
+        LBSR WEXPR
+        CLRB
+        STB ACC 
+        DECB
+        STB    GLL
+        LDA #$A7 
+        LDB LSIZE 
+        LBSR PUTABX 
+        LDA SY 
+        CMPA #$3C 
+        BEQ PFC2 
+        PULS A
+        STA LSIZE 
+        LDA #$3B 
+        LBSR CHECK 
+PFC1   LDB #-1 
+        STB ACC 
+        STB INDEX 
+        LDA #$86 
+        LDB LSIZE
+       LBSR PUTAB
+       PULS A
+       CMPA #$C0
+       BCC *+5
+       LBRA CALPF
+       LDX #LIBR
+       SUBA #$C0
+PFC3   BEQ PFC4
+       LEAX 2,X
+       DECA
+       BRA PFC3
+PFC4   LDA #$BD
+       LBSR PUTA
+       LDD ,X
+       LBRA PUTAB
+**
+OLP    LBSR OLOAD
+       LDB ACC 
+       BEQ RTS4
+       LDA #$36 
+       LBSR PUTA
+       CLR ACC 
+RTS4   RTS
+** FUNCTION RND
+TM6    CMPA #$70 
+       BNE TM61 
+       BSR SUBSC
+       LBSR PUTHS
+       FCB $03BD
+       FDB RND
+       RTS
+* FUNTION GET
+TM61   CMPA #$71
+       BNE TM62 
+       BSR SUBSC
+       LBSR PUTHS
+       FDB $0597
+       FCB INDN,$BD
+       FDB GETCH
+       RTS
+* FUNCTION READ 
+TM62   CMPA #$72 
+       BNE TM7
+       BSR SUBSC
+       LBSR PUTHS
+       FDB $0597
+       FDB INDN
+       FCB $8D
+       FDB GETDA
+       RTS
+* FUNCTION NOTASL ET AL
+TM7    CMPA #$40
+       BCS TM8
+       CMPA #$49+1
+       BCC TM8
+       PSHS A
+       BSR SUBSC
+       PULS A
+       LBRA PUTA
+* ARRAY
+TM8    CMPA #$5
+       BNE TM9
+       LDB VAL
+       PSHS B
+       LDB GL
+       PSHS B
+       BSR SUBSC1
+       PULS B
+       STB GLL
+       PULS B
+       LDA LSW
+       BEQ ARY1
+       ADDB OPER 
+       STB OPER
+       LDA #$20 
+       STA AMODE
+       RTS 
+ARY1   LDA #$8B
+       LBSR PUTABX
+       LBRA LDAAX
+**
+DSUBSC LDA #$3C
+       BSR SUBS1
+       LDA #$3B
+       PSHS A
+       BRA SUBS2
+SUBSC  LDA #$3E
+SUBS1  PSHS A
+       LBSR WORD
+       LDA #$37
+       LBSR CHECK
+SUBS2  LBSR EXPR
+       PULS A 
+       LBRA CHECK
+SUBSC1 LBSR WORD
+       LDA #$36
+       LBSR CHECK
+       LBSR LEXPR
+       LDB LSW
+       BEQ SBS5
+       LDB AMODE
+       BEQ SBS5
+       LBSR OLOAD
+SBS5   LDA #$3A
+       LBRA CHECK
+* MEM FUNCTION
+TM9    CMPA #6
+       BNE TM10
+       BSR DSUBSC
+       LBSR PUTHS
+       FDB $0997
+       FCB WT2
+       FDB $3297
+       FCB WT1,$DE,WT1
+       FDB $A600
+       CLR INDEX 
+       RTS
+** FOR EXPANTION
+TM10   LBRA ERROR
+**
+* ADDRESS DEPENDENT CODE
+* GENARATION
+**
+* SET PRC—FUNC TABLE
+**
+SETPFT PSHS A 
+       LDB #3
+       MUL
+       ADDD PFTBEG
+       STD XR 
+       PULS A,PC
+**
+TWICE  LBSR PUTSTR
+       FCB $0D,$0A
+       FCC "TWICE!",0
+       lbra exit 
+**
+* DEF PROC-FUNC
+**
+DEFPF  BSR SETPFT
+       LDX XR
+       TST ,X
+       BNE TWICE
+       COM ,X
+       LDX 1,X
+       STX YR 
+       LDX XR 
+       LEAX 1,X
+       BSR PCST 
+       LDX YR
+DP1    BEQ RT10
+       LDX ,X
+       STX ZR
+       LDX YR
+       BSR PCST 
+       LDX ZR
+       STX YR
+       BRA DP1
+**
+* CALL PORC-FUNC
+**
+CALPF  BSR SETPFT
+       INCA
+       CMPA PFMAX
+       BCS *+4
+       STA PFMAX
+       LDA #$BD
+       BSR AOUT
+       LDX XR
+       LDD 1,X
+       LDX PC
+       BSR STAABX 
+       LDX XR
+       TST ,X
+       BNE PC2ADD
+       LEAX 1,X
+       BSR PCST
+       BRA PC2ADD
+**
+* PUL-DEF N TIMES
+**
+PLDFN  PSHS A
+       BSR PULDEF
+       DEC ,S
+       BNE *-4
+       PULS A,PC
+**
+* PULL AND DEFINE
+**
+PULDEF BSR PULSTK
+PCST   LDD PC
+STAABX STD ,X
+RT10   RTS
+**
+JMPOUT LDA #$7E
+AOUT   LDX PC
+       STA ,X
+       BRA INCPC1
+**
+PULSTK LDX SP
+       LEAX 2,x
+       STX SP
+       LDD ,X
+       LDX ,X
+       RTS
+**
+*  PUL STACK & Jump
+**
+PULJMP BSR JMPOUT
+       BSR PULSTK
+PCST2  LDX PC
+       BSR STAABX
+INCPC  LEAX 1,X
+INCPC1 LEAX 1,X
+SETPC  STX PC
+       RTS
+**
+* PUSH STACK & JUMP
+**
+PSHJMP BSR JMPOUT
+       BSR PSHDEF
+PC2ADD LDX PC
+       BRA INCPC
+**
+* PUSH STRCK & DEFINE
+**
+PSHDEF LDX SP
+       BSR PCST
+       LEAX -2,X
+       STX SP
+       RTS
+**
+OUTPC3 BSR AOUT 
+       LDD PC
+       ADDD #3
+       BRA PCST2
+**
+* LDA R,X
+LDAAX  LDA #$B7
+       BSR OUTPC3
+       LDA #$A6
+LA1    BSR AOUT 
+       BRA INCPC1
+**
+* STA B,X
+STABX  LDA #$F7
+       BSR OUTPC3
+       LDA #$A7
+       BRA LA1
+**
+* STACK TOP CHANGE
+**
+STCHG  LDU SP
+       LEAU 2,U
+       PULU D,X
+       EXG D,X
+       PSHU D,X
+       RTS
+**
+* END OF LOAD
+**
+ENDL   LDX PFTBEG
+       LDA PFMAX
+EL1    BEQ EL
+       TST ,X
+       BEQ UDERR
+EL2    LEAX 3,X
+        DECA
+       BRA EL1
+UDERR  PSHS A
+       STA ZR
+       SUBA PFMAX
+       NEGA
+       PSHS A
+       LBSR PUTSTR
+       FDB $0D0A
+       FCC "UNDEF",0
+       PULS A
+       LBSR PUTCA
+       PULS A
+       LDX ZR
+       BRA EL2
+EL     LDX PC
+       STX VARPTR+1,PCR
+       LBRA exit
+
+**********************
+* ADVANCE WORD
+**
+WTABLE FCB 0 END MARK 
+       FCB $30,-'P'
+       FCC "ROC" 
+       FCB $31,-'F'
+       FCC "UNC" 
+       FCB $32,'V'
+       FCC "AR"
+       FCB $33,-'A'
+       FCC "RRAY"
+       FCB $34,-'B'
+       FCC "EGIN"
+       FCB $35,';'
+       FCB $36,-'['
+       FCB $37,-'('
+       FCB $38,-'E'
+       FCC "ND"
+       FCB $39,-'=' 
+       FCB $3A,-']'
+       FCB $3B,-')'
+       FCB $3C,-','
+       FCB $3D,-':'
+       FCB $50,-'S'
+       FCC "TOP"  
+       FCB $51,-'R'
+       FCC "ETURN"
+       FCB $55,-'I'
+       FCC "F"
+       FCB $65,-'T'  
+       FCC "HEN"
+       FCB $53,-'F'  
+       FCC "OR"  
+       FCB $61,-'T'  
+       FCC "O"
+       FCB $52,-'R'
+       FCC "EPEAT"
+       FCB $60,-'U'
+       FCC "NTIL"
+       FCB $54,-'W'  
+       FCC "HILE"
+       FCB $64,-'D'  
+       FCC "O"
+       FCB $56,-'C'  
+       FCC "ASE"
+       FCB $66,-'O'  
+       FCC "F"  
+       FCB $67,-'E'  
+       FCC "LSE"
+       FCB $57,-'W'
+       FCC "RITE"
+       FCB $69,-'A'
+       FCC "SCII"  
+       FCB $6A,-'S'
+       FCC "PACE"
+       FCB $68,-'C'  
+       FCC "RLF"  
+       FCB $6C,-'"'
+       FCB $8B,-'+'
+       FCB $80,-'-'
+       FCB $8E,-'*'  
+       FCB $8F,-'/'
+       FCB $82,-'S'
+       FCC "BC"
+       FCB $84,-'A'
+       FCC "ND"
+       FCB $88,-'E'
+       FCC "OR"
+       FCB $89,-'A'  
+       FCC "DC"
+       FCB $8A,-'O'  
+       FCC "R"
+       FCB $22,-'>'  
+       FCB $25,-'<'
+       FCB $26,-'#'
+       FCB $27,-'=' 
+       FCB $2D,-'L','T'
+       FCB $2E,-'G','T'
+       FCB $40,-'N','E','G'
+       FCB $43,-'N','O','T'
+       FCB,$43,-'C','O','M'
+       FCB $44,-'L','S','R'
+       FCB $46,-'R','O','R'
+       FCB $47,-'A','S','R'
+       FCB $48,-'A','S','L'
+       FCB $49,-'R','O','L'
+       FCB $06,-'M','E','M'
+       FCB $A0,-'T'
+       FCC "RUE"
+       FCB $A1,-'F'
+       FCC "ALSE"
+       FCB $16,-'M'
+       FCC "HIGH"
+       FCB $17,-'M'
+       FCC "OD"
+       FCB $70,-'R','N','D'
+       FCB $71,-'G','E','T'
+       FCB $72,-'R'
+       FCC "EAD"
+WTBLEND 
+******
+**
+* PUSH LB & SET NEW LP
+**
+PSHLB  CLRB
+       ADDD LB
+       STD WT1
+       LDX WT1
+       LDD LB
+       STD ,X++
+       STX LB
+       RTS
+**
+* PULL LB
+**
+PULLB  LDX LB
+       LDX ,--X
+       STX LB
+       TSTA
+       RTS
+**
+* RND FUNCTION
+**
+RND    PSHS A
+       LDA RNDL
+       LDB #125
+       MUL
+       ADDD #1
+       STA RNDL
+       PSHS A
+       LDA RNDH
+       LDB #125
+       MUL
+       ADDA ,S+
+       STA RNDH
+       PULS B
+       MUL
+       INCA
+       RTS
+**
+* DVISITION SET MOD 
+**
+DIV    STB WT1
+       BEQ ERDIV 
+       TFR A,B
+       CLRA
+       STA WT2
+DV0    INC WT2
+       ASL WT1
+       BCC DV0
+DV1    ROR WT1
+       CMPB WT1
+       BCS DV2
+       SUBB WT1
+       ORCC #1
+       BRA *+4
+DV2    ANDCC #$FE CLR C
+       ROLA
+       DEC WT2
+       BNE DV1
+       STB MOD
+       TSTA
+       RTS
+**
+ERDIV  STB OUTDN
+       LBSR CRLF
+       LBSR PUTSTR
+       FCC "ERR DIV 0",0
+MONIT  lbsr exit
+**
+MULT   MUL
+       STA MHIGH
+       TFR B,A
+       RTS
+**
+* PUT A IN DECIMAL
+**
+PUTDA  CLRB
+PUTDR  STB DREG
+       LEAX ,S
+       LEAS -4,S
+       CLR 1,X
+       LDB #3
+P0     PSHS B
+       LDB #10
+       BSR DIV
+       ADDB #$30
+       STB ,X
+       LEAX -1,X
+       PULS B
+       DECB
+       BNE P0
+       COM 3,X
+       LDA #'0'
+       LDB #4
+P1     LEAX 1,X
+       DECB
+       CMPA ,X
+       BEQ P1
+       COM 4,S
+       LDA DREG
+       PSHS B
+       SUBA ,S+
+       BCS PRX
+       BSR SPACEA
+PRX    LDB ,X
+       BEQ P4
+       BSR PUTCA 
+       LEAX 1,X 
+       BRA PRX 
+P4     LEAS 4,S
+CL1    RTS
+** 
+* GET IN A DECIMAL
+** 
+GETDA  CLRA
+       PSHS A
+       BSR GETCA 
+       CMPA #RUB 
+       BNE GD1 
+       PULS A
+       LDB #10 
+       LBSR DIV
+       BRA GETDA+1 
+GD1    SUBA #'0'
+       BCS GD2
+       CMPA #10
+       BCC GD2 
+       STA DBUF 
+       PULS A
+       LDB #10 
+       MUL
+       ADDB DBUF 
+       TFR B,A
+       BRA GETDA+1 
+GD2    PULS A,PC
+**
+* SPACE A TIMES 
+**
+SPACEA BEQ CL1
+       PSHS A
+       LDA #' '
+       BSR PUTCA
+       PULS A
+       DECA
+       BRA SPACEA
+**
+* STR OUT
+**
+PUTSTR PSHS X
+       LDX 2,S
+STR1   LDA ,X+
+       BEQ STR2
+       LBSR PUTCA
+       BRA STR1
+STR2   STX 2,S
+       PULS X,PC
+**
+* CRLF
+**
+CRLF   LDA #$0D
+       BSR PUTCA 
+       LDA #$0A
+       BRA PUTCA
+**
+* CRLF A TIMES
+**
+CRLFA  BEQ CL1
+       PSHS A
+       BSR CRLF 
+       PULS A
+       DECA
+       BRA CRLFA
+
+
+start    clr   <stdin
+         stx   <parmptr         save parameter pointer
+         stu   <work            save parameter pointer
+         lda   #READ.           read access mode
+         os9   I$Open           open file
+         lbcs   L0049            branch if error
+         sta   <INDN            else save path to file
+         stx   <parmptr         and updated parm pointer
+*         ldx   <parmptr         get param pointer
+*         lda   ,x               get char
+*         cmpa  #C$CR            end of command line?
+*         bne   start            branch if not
+
+copytbl
+         pshs  y,x,u
+         leau  LIBR,y
+         leax  iotbl,pcr
+         leay  iotblend,pcr
+         ldy   #(iotblend-iotbl)
+l1       ldb   #$7e     * JMP
+         stb   ,u+
+         ldd   ,x++
+         addb  1,s
+         adca  ,s
+         std   ,u++
+         cmpx  2,s
+         ble   l1
+         puls  x,y,u
+ 
+Exit     lbsr        setecho
+*        ldx         <work
+*        leax        readbuff,x
+*        ldb         #1
+*        lbsr         getline
+*        lbsr         getpoll
+*        lda        <stdin        
+*        os9        I$Close      
+
+        clrb
+        os9        F$Exit
+*       no return
+
+
+iotbl
+         fdb   getchar-iotbl            ; 0
+         fdb   putchar-iotbl            ; 3
+         fdb   getline-iotbl            ; 6
+         fdb   putline-iotbl            ; 9
+         fdb   putcr-iotbl              ; $C
+         fdb   getpoll-iotbl            ; $F
+         fdb   xopenin-iotbl            ; $12
+         fdb   xopenout-iotbl           ; $15
+         fdb   xabortin-iotbl           ; $18
+         fdb   xclosein-iotbl           ; $1B
+         fdb   xcloseout-iotbl          ; $1E
+         fdb   delay-iotbl              ; $21
+         fdb   noecho-iotbl             ; $24
+         fdb   setecho-iotbl            ; $27
+         fdb   exit-iotbl               ; $2a
+iotblend
+
+err     ldb    #1
+L0049
+        bra     Exit
+
+
+close
+         lda   <INDN        else get path
+         os9   I$Close          and close it
+         bcs   L0049            branch if error
+         rts
+
+PUTCA   tfr         a,b
+putchar                        * Output one character in B register.
+        PSHS        X,Y
+        BRA         OUTCH1
+
+MEMIN
+        PSHS        A,B,X,Y
+        LDA         INDN
+        LEAX        1,S
+        LDY         #1
+        OS9         I$Read
+        EXG         a,b
+        BCC         GETCA0
+        lda         #'/'
+GETCA0
+        PULS        A,B,X,Y,PC
+
+GETCA   bsr         getchar
+        tfr         b,a
+        rts
+
+getchar                        * Input one character into B register.
+        PSHS        A,B,X,Y
+GETCH0
+        LDA         INDN
+        LEAX        1,S
+        LDY         #1
+        OS9         I$Read
+        BCS         GETCH0
+        PULS        A,B,X,Y,PC
+putcr                          * Output a newline.
+        LDB         #C$CR
+        bsr         putchar
+        LDB         #C$LF
+        PSHS        X,Y
+OUTCH1  PSHS        A,B
+        LEAX        1,S
+        LDA         OUTDN
+        LDY         #1
+        OS9         I$Write
+        PULS        A,B,X,Y,PC
+getpoll
+        PSHS        X,Y,D
+        LDA         #0
+        LDB         #SS.Ready
+        OS9         I$GetStt
+        CMPB        #$F6       Not Ready
+        BNE         RSENSE
+        CLRB
+        PULS        X,Y,D,PC
+RSENSE
+        ORCC        #1        set carry to indicate ready
+RNSENSE
+        PULS        X,Y,D,PC
+
+getline                        * Input line at address in X, length in B.
+        PSHS        A,B,X,Y
+        clr         ,s
+GETLN0
+        ldy         ,s
+        lda         INDN   
+        OS9         I$ReadLn
+        BCS         GETLN0
+        LEAY        -1,Y
+GETLN1  STY         ,S
+        PULS        A,B,X,Y,PC
+putline                        * Output string at address in X, length in B.
+        PSHS        A,B,X,Y
+        CLRA
+        TFR         D,Y
+        lda         OUTDN
+        OS9         I$WritLn
+        PULS        A,B,X,Y,PC
+xopenin
+xopenout
+xabortin
+xclosein
+xcloseout
+        RTS
+
+setecho lda          #1
+        bra          sss
+noecho  clra
+sss     leas         -128,s
+        leax        ,s
+        pshs         a
+        clra  
+        ldb          #SS.Opt
+        OS9         I$GetStt
+        bcs         err2
+        LDA         ,s
+        STA         PD.EKO-PD.OPT,X
+setopts
+        ldb         #SS.Opt         
+        clra        
+        OS9         I$SetStt
+err2
+        puls        a
+        leas        128,s
+        rts
+
+
+delay   PSHS        D,X  * address **$21** 
+                         * On input the D register contains the number of timer 
+                         * ticks to wait. Each timer tick is 20ms
+        TFR         D,X
+        OS9         F$Sleep
+        PULS        D,X,PC
+
+
+         emod
+eom      equ   *
+         end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TL1/defsfile	Fri Jan 04 19:02:43 2019 +0900
@@ -0,0 +1,19 @@
+* Main defsfile for OS-9 Level One V1
+*
+*
+* OS-9 Level and Version equates
+Level    equ   2
+OS9Vrsn  equ   2
+OS9Major equ   0
+OS9Minor equ   1
+CHECK_FOR_VALID_RAM equ 1      force ram check for non standard arch
+
+NOS9VER   equ OS9Vrsn 
+NOS9MAJ   equ OS9Major
+NOS9MIN   equ OS9Minor
+
+
+         use   ../os9/nitros9-code/defs/os9.d
+         use   ../os9/nitros9-code/defs/scf.d
+         use   ../os9/nitros9-code/defs/rbf.d
+