Mercurial > hg > Members > kono > os9 > sbc09
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;