changeset 138:6f7276831219

TL/1 use x and y register
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 07 Jan 2019 19:32:10 +0900
parents 1078f3e31d9c
children f1b4da312358
files TL1/TL1os9.asm TL1/test/t2.tl1 src/trace.c
diffstat 3 files changed, 68 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/TL1/TL1os9.asm	Mon Jan 07 12:22:19 2019 +0900
+++ b/TL1/TL1os9.asm	Mon Jan 07 19:32:10 2019 +0900
@@ -31,7 +31,7 @@
 XR     RMB 2
 YR     RMB 2
 ZR     RMB 2
-PFTBEG RMB 2
+PFTBEG RMB 2     prog/func table
 PC     RMB 2
 SREG   RMB 2
 SP     RMB 2
@@ -43,20 +43,20 @@
 GL     RMB 1     global 0xff / local 1
 OPER   RMB 1 
 GLL    RMB 1     left value g 0xff / local l 
-RMCODE RMB 1
+AMODE  RMB 1
 ACC    RMB 1
 LSIZE  RMB 1
-TCOUNT RMB 1 
-TEND   RMB 2 
-WEND   RMB 2
-AMODE  RMB 1     0x20 main,  1 proc, 0 ?
+TCOUNT RMB 1     1 search reserved word only, 5 search all local/global var/array, proc
+TEND   RMB 2     table end (search start from here ) include local name
+WEND   RMB 2     word end
+PMODE  RMB 1     0x20 main,  1 proc, 0 ?
 RSW    RMB 1     0 word lookup, 0xff word register mode in tlook
-GEND   RMB 2
-SSW    RMB  1
+GEND   RMB 2     end of global name
+SSW    RMB 1
 
 filepath rmb   2
 parmptr  rmb   2
-stdin    rmb   1
+stdin    rmb   2
 adr      rmb   2
 work     rmb   2
 bufsiz   equ   $100-1
@@ -68,16 +68,16 @@
 ioentry  rmb   $80
 readbuff rmb   bufsiz+1
 
-OBJSTART RMB 2
+OBJSTART RMB 2+12
 
 
 * OBJECT PG AREA
 
-WTBLE  RMB $500+$100
-MSTACK RMB $140 
+WTBLE    RMB $100+500
+MSTACK   RMB $140 
 
-OBJECT RMB 2048        * NOP
-RUB equ 8
+OBJECT   RMB 2048        * NOP
+RUB      equ 8
 
 size   equ .
 
@@ -101,7 +101,7 @@
        DECB
        BNE C1
        INCA
-       STA TCOUNT
+       STA TCOUNT   = 1
        LDA #' '
        STA CH
 **  copy reserved word table
@@ -138,7 +138,7 @@
        CMPA #$4
        BCC ERR4
        DECA
-       STA  AMODE
+       STA  PMODE
        LDA VAL
        LBSR DEFPF
        LBSR PUTHSL
@@ -153,10 +153,10 @@
        LDA #$3B       )
        LBSR CHECK
 PL1    BSR PROG
-*       LDB AMODE
-*       CMPB #1
-*       BNE *+5
-       LBSR RETP
+       LDB PMODE
+       CMPB #1
+       BNE *+5
+       LBSR RETP     generate return
        LDX GEND 
        STX TEND
        LDB #5
@@ -259,7 +259,7 @@
 **
 SS3    CMPA #$51
        BNE SS4
-       LDB AMODE
+       LDB PMODE
        LBEQ ERR4
        PSHS B
        BSR WORD1
@@ -580,8 +580,8 @@
        STA ,X+
        CLRA
        TST  <GLL
-       BNE  PUTOFSX
-       ORA  #$20
+       BMI  PUTOFSX
+       LDA  #$20
 PUTOFSX STA ,S
        CMPB #32
        BGT  *+6
@@ -594,8 +594,8 @@
        BRA  PUTOFS8
 PUTOFS5
        ANDB #$1F
-       ORA   ,S
-       STA   ,X+
+       ORB   ,S
+       STB   ,X+
 PUTOFS8
        STX  <PC
        PULS D,X,PC
@@ -701,9 +701,9 @@
        STA VAL
        BRA WD40
 **
-* TEST ALPHA NUMERIC
-TSTNA  CMPA #'0'
-       BCS NAF
+* TEST ALPHA NUMERIC   Z=0 C=0 Not Number/Not Alpha
+TSTNA  CMPA #'0'       Z=1 C=1 Number
+       BCS NAF         Z=0 C=1 Not Number/Alpha
        CMPA #'9'+1
        BCS NT
        CMPA #'A'
@@ -736,23 +736,29 @@
        LEAX 1,X
        BSR STAONE
        PULS A
-       BSR TSTNA
+       BSR TSTNA   first word must alpha
        BCC TLOOK1
 WD61   LDA CH
-       BSR TSTNA
+       BSR TSTNA   alpha numeric?
        BCS *+4
        BNE TLOOK1
        BSR STAONE
        BRA  WD61
-STAONE STA ,X+
+STAONE STA ,X+     store to the table
        STX WEND
        BRA GETCH 
-TLOOK1 LDA RSW
-       BEQ TLOOK
+TLOOK1 LDA RSW     word end
+       BEQ TLOOK   let's search
        COM RSW
        RTS
 **
 * WORD TABLE SEARCH
+*
+*  if not find then error
+*  on return    X point last of word (VAL)
+*          SY    7 larray 6 lvar 5 garray 4 gvar 3 func or proc 0 reserved word
+*          VAL   word id or size
+*          GL    1 local 0xff global
 **
 TLOOK  PSHS U
        LDA TCOUNT 
@@ -781,10 +787,10 @@
        BNE *+6
        TFR B,A 
        BRA S07 
+       LDB  #1
        CMPA #4 
        BCS  RTSS
-       LDB  #1
-       TST AMODE
+       TST PMODE
        BEQ *+6
        CMPA #6
        BCS *+3 
@@ -1428,7 +1434,7 @@
 **
 ** OBJECT START
 ******
-C      leas MSTACK,u
+C      leas OBJECT,u
 VARPTR LDX <PC
        STX GB
        STX LB
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TL1/test/t2.tl1	Mon Jan 07 19:32:10 2019 +0900
@@ -0,0 +1,24 @@
+% ** SPRITE TEST PROGRAM **
+PROC WAIT,TIME
+%--- MAIN ---
+VAR MMI,MMJ,MMK
+BEGIN
+  MMI:=1 MMJ:=2 MMK:=3
+  WAIT
+  WRITE(1:MMI,CRLF)
+END
+%-- PROCEDURE WAIT --
+WAIT
+VAR WWJ,WWK
+BEGIN
+  WWJ:=4
+  TIME
+  WRITE(1:MMI,WWJ,CRLF)
+END
+%-- PROCEDURE TIME --
+TIME
+VAR TTK,TTJ
+BEGIN
+  TTK:=5
+  WRITE(1:MMI,TTK,CRLF)
+END
--- a/src/trace.c	Mon Jan 07 12:22:19 2019 +0900
+++ b/src/trace.c	Mon Jan 07 19:32:10 2019 +0900
@@ -159,6 +159,8 @@
                 int watch = mem[b->address];
 #endif
                 if (ppc==b->address || b->watch != watch  ) {
+                    if (b->watch != watch)
+                        printf("%04x : %02x -> %02x ",b->address, b->watch ,watch);
                     b->watch = watch;
                     if (b->count==-1) {  // temporaly break point
                         BPTR next = b->next;