From 9f979e44eb9fc4643478d2bef55a0c9e09964702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 31 Jan 2018 16:20:20 +0000 Subject: [PATCH] Kernel 0.9.1 : ASM rewrite...more directives --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/ASM.S.DIR.txt | 102 ++++++++++++++++++++++++++++++--------- BIN/ASM.S.FIO.txt | 3 -- BIN/ASM.S.OUT.txt | 71 +++++++++++++++++++++++++++ BIN/ASM.S.SRC.txt | 50 ++++++++++++++++--- BIN/ASM.S.txt | 17 ++++++- INC/A2osX.I.txt | 1 - INC/MACROS.I.txt | 1 - SYS/KERNEL.S.MEM.txt | 44 +++++++++-------- SYS/KERNEL.S.SLIST.txt | 39 +++++---------- TEST.S.txt | 2 +- 12 files changed, 243 insertions(+), 87 deletions(-) create mode 100644 BIN/ASM.S.OUT.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9c0b71513924b2f8ccee3b03a1aa522f6dacceb9..a8bddfa770746cb8f8588b15388ce66f2337a841 100644 GIT binary patch delta 37446 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 delta 35539 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 delta 4853 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 awH&eG2M?sZC+NR(3_ohUCJY_1Uil2?ou@|t diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index fbe91999..2bf8d061 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -25,9 +25,9 @@ DIR.AT clc DIR.AZ clc rts *--------------------------------------- -DIR.BS jsr SRC.GetNextCharNB +DIR.BS jsr SRC.GetNextChar bcs .98 - + jsr EXP.Eval bcs .9 @@ -35,9 +35,10 @@ DIR.BS jsr SRC.GetNextCharNB ora SRC.ACC+2 bne .99 lda SRC.ACC + eor #$ff sta DIR.Counter lda SRC.ACC+1 - bmi .99 + eor #$ff sta DIR.Counter+1 stz DIR.Byte @@ -59,27 +60,14 @@ DIR.BS jsr SRC.GetNextCharNB lda SRC.ACC sta DIR.Byte -.1 ldy #ASM.PC - lda (pData),y - clc - adc DIR.Counter - sta (pData),y - iny - lda (pData),y - adc DIR.Counter+1 - sta (pData),y - -.2 lda DIR.Counter - bne .3 - lda DIR.Counter+1 +.1 inc DIR.Counter + bne .2 + inc DIR.Counter+1 beq .8 - dec DIR.Counter+1 -.3 dec DIR.Counter - - lda DIR.Byte - jsr FIO.EmitByte - bcc .2 +.2 lda DIR.Byte + jsr OUT.EmitByte + bcc .1 rts .8 clc @@ -93,7 +81,28 @@ DIR.BS jsr SRC.GetNextCharNB sec rts *--------------------------------------- -DIR.DA clc +DIR.DA +.1 jsr SRC.GetNextChar + bcs .98 + + jsr EXP.Eval + bcs .9 + + lda SRC.ACC.SIZE + + jsr SRC.GetNextChar + bcs .8 + cmp #' ' + beq .8 + + cmp #',' + beq .1 + +.98 lda #ERR.SYNTAX.ERROR + clc +.9 rts + +.8 clc rts *--------------------------------------- DIR.DO ldy #ASM.DO.Count @@ -213,7 +222,52 @@ DIR.FI ldy #ASM.DO.Count sec rts *--------------------------------------- -DIR.HS clc +DIR.HS jsr SRC.GetNextCharNB + bcs .99 + + jsr SRC.IsDigit16 + bcs .99 + +.1 asl + asl + asl + asl + >STA.G DIR.Byte + + jsr SRC.GetNextChar + bcs .99 + + jsr SRC.IsDigit16 + bcs .99 + + >ORA.G DIR.Byte + jsr OUT.EmitByte + bcs .9 + + jsr SRC.GetNextChar + bcs .8 + cmp #' ' + beq .8 + + jsr SRC.IsDigit16 + bcc .1 + + cmp #',' + beq .2 + + cmp #'.' + bne .99 + +.2 jsr SRC.GetNextChar + bcs .99 + jsr SRC.IsDigit16 + bcc .1 + +.99 lda #ERR.SYNTAX.ERROR + sec +.9 rts + +.8 clc rts *--------------------------------------- DIR.IN jsr SRC.GetNextCharNB diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index 6cc95780..9f953d6e 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -333,9 +333,6 @@ FIO.FileClose ldy #SRC.COUNT .8 clc rts *--------------------------------------- -FIO.EmitByte clc - rts -*--------------------------------------- MAN SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.FIO LOAD /A2OSX.BUILD/BIN/DEV/ASM.S diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt new file mode 100644 index 00000000..3fd87885 --- /dev/null +++ b/BIN/ASM.S.OUT.txt @@ -0,0 +1,71 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*--------------------------------------- +OUT.Reset ldx #4 + + ldy #ASM.PC + +.1 lda (pData),y + pha + iny + dex + bne .1 + + ldx #4 + + ldy #OUT.PC+3 + +.2 pla + sta (pData),y + dey + dex + bne .2 + + >STZ.G OUT.Buf + rts +*--------------------------------------- +OUT.EmitByte pha + + >LDA.G OUT.Buf + cmp #3 + bne .2 + + jsr SCR.PrintLineOn + bcs .1 + + jsr SRC.PrintLineOutBuf + lda #13 + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A + + jsr OUT.Reset + +.1 lda #0 + ldy #OUT.Buf + +.2 inc + sta (pData),y + clc + adc #OUT.Buf + tay + + pla + sta (pData),y + +.8 >INC.G ASM.PC + bne .80 + >INC.G ASM.PC+1 + bne .80 + >INC.G ASM.PC+2 + bne .80 + >INC.G ASM.PC+3 + +.80 clc + rts +*--------------------------------------- +MAN +SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.OUT +LOAD /A2OSX.BUILD/BIN/DEV/ASM.S +ASM diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index e5ea6975..dd3148ae 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -2,7 +2,18 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *--------------------------------------- -SRC.PrintLine >LDA.G ASM.LI.ON +SRC.PrintLine jsr SCR.PrintLineOn + bcs .9 + jsr SRC.PrintLineOutBuf + bcs .9 + + >PUSHW ZPLineBuf + >PUSHW.G SRC.LINENUM + >LDYA L.MSG.SRCLINE + >SYSCALL PrintF.YA +.9 rts +*--------------------------------------- +SCR.PrintLineOn >LDA.G ASM.LI.ON bpl .9 >LDA.G MAC.bAdd bpl .1 @@ -11,16 +22,39 @@ SRC.PrintLine >LDA.G ASM.LI.ON bpl .9 bmi .8 -.1 -.8 >PUSHW ZPLineBuf - >PUSHW.G SRC.LINENUM - ldy #ASM.PC+1 +.1 + +.8 clc + rts + +.9 sec + rts +*--------------------------------------- +SRC.PrintLineOutBuf >LDA.G OUT.Buf + beq .2 + + tax + clc + adc #OUT.Buf + tay + +.1 >PUSHB (pData),y + dey + dex + bne .1 + +.2 ldy #OUT.PC+1 >PUSHB (pData),y dey >PUSHB (pData),y - >LDYA L.MSG.SRCLINE + + >LDA.G OUT.Buf + asl + tax + ldy L.MSG.OUT0,x + lda L.MSG.OUT0+1,x >SYSCALL PrintF.YA -.9 rts +.9 rts *--------------------------------------- SRC.PrintLineErr >PUSHW ZPLineBuf >LDYA L.MSG.LINECR @@ -61,6 +95,8 @@ SRC.ParseLine jsr SRC.GetChar cmp #';' Comment? beq .8 + jsr OUT.Reset + >LDA.G MAC.bAdd bmi SRC.ParseLine.MACRO diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 8a73ceed..9e1f0a16 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -77,6 +77,10 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.MSG.HELP .DA MSG.HELP +L.MSG.OUT0 .DA MSG.OUT0 + .DA MSG.OUT1 + .DA MSG.OUT2 + .DA MSG.OUT3 L.MSG.SRCLINE .DA MSG.SRCLINE L.MSG.LINECR .DA MSG.LINECR L.MSG.ERROR .DA MSG.ERROR @@ -321,6 +325,7 @@ CS.QUIT jsr FIO.FileClose .INB /A2OSX.BUILD/BIN/DEV/ASM.S.EXP .INB /A2OSX.BUILD/BIN/DEV/ASM.S.FIO .INB /A2OSX.BUILD/BIN/DEV/ASM.S.MAC + .INB /A2OSX.BUILD/BIN/DEV/ASM.S.OUT .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM *--------------------------------------- @@ -380,7 +385,11 @@ MSG.PASS >CSTR "Pass:#%d\r\n" MSG.SRC.FILE >CSTR "Reading SRC File:%s\r\n" MSG.OBJ.FILE >CSTR "Writing OBJ File:%s, Type=%02x\r\n" MSG.T.FILE >CSTR "Loading CPU File:%s\r\n" -MSG.SRCLINE >CSTR "%H- %05D %s\r\n" +MSG.OUT0 >CSTR "%H- " +MSG.OUT1 >CSTR "%H-%h " +MSG.OUT2 >CSTR "%H-%h %h " +MSG.OUT3 >CSTR "%H-%h %h %h " +MSG.SRCLINE >CSTR "%05D %s\r\n" MSG.LINECR >CSTR "%s\r\n" MSG.ERROR >CSTR "%05D-Error:$%h\r\n" MSG.SYMBOLS >CSTR "Symbol Table:\r\n" @@ -395,10 +404,11 @@ ASM.T.FILENAME .BS 65 FIO.Stat .BS S.STAT -EXP.Operator .BS 1 EXP.Modifier .BS 1 +EXP.Operator .BS 1 SRC.Keyword.ID .BS 1 +SRC.ACC.SIZE .BS 1 SRC.ACC .BS 4 SRC.ACCTMP .BS 4 SRC.ARG .BS 4 @@ -455,6 +465,9 @@ MAC.hMacros .BS 1 MAC.hBuf .BS 1 MAC.bAdd .BS 1 +OUT.PC .BS 4 +OUT.Buf .BS 4 + DS.END .ED *--------------------------------------- .DO DS.END-DS.START>$FF diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 947358d2..54622e1b 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -1,7 +1,6 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 - .LIST OFF *-------------------------------------- ZPDRV .EQ $30 ZPLIB .EQ $40 32 bytes for TCPIP diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index a6752a1f..08410037 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -1,7 +1,6 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 - .LIST OFF *-------------------------------------- .MA DEBUG :1 bit $C000 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index a1fbb52f..541e9a9c 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -26,32 +26,32 @@ ZPSListData .EQ ZPMEMMGR+14 * Buffer filled with memory stats *\-------------------------------------- K.GetMemStat.YA >STYA ZPMemMgrTmp1 + + ldy #22 + ldx #6 - >LDYAI Mem.Table - >STYA .2+1 - - ldy #6 - jsr .1 +.1 lda DevMgr.Stat,x + sta (ZPMemMgrTmp1),y + dey + dex + bpl .1 sta SETREADAUX ldy #14 - jsr .1 + jsr .2 sta CLRREADAUX - >LDYAI DevMgr.Stat - >STYA .2+1 - - ldy #22 + ldy #6 -.1 ldx #6 +.2 ldx #6 -.2 lda $FFFF,x SELF MODIFIED +.3 lda Mem.Table,x sta (ZPMemMgrTmp1),y dey dex - bpl .2 + bpl .3 rts */-------------------------------------- * # GetMem0.YA @@ -584,17 +584,19 @@ MEM.GetKeyCharY sta CLRREADAUX .9 sec rts *-------------------------------------- -MEM.GetDataByteY - sta CLRREADAUX - lda (ZPSListData),y +MEM.GetDataByte sta CLRREADAUX + lda (ZPSListData) sta SETREADAUX - rts + bra MEM.SetDataByte.1 *-------------------------------------- -MEM.SetDataByteY - sta CLRWRITEAUX - sta (ZPSListData),y +MEM.SetDataByte sta CLRWRITEAUX + sta (ZPSListData) sta SETWRITEAUX - rts +MEM.SetDataByte.1 + inc ZPSListData + bne .8 + inc ZPSListData+1 +.8 rts */-------------------------------------- * # LoadStkObj * Load a file in AUX memory (Stock Objects) diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index 36db9857..f9751f84 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -36,16 +36,13 @@ SLIST.Add jsr SLIST.Search iny bra .2 -.3 ldy #0 - - jsr MEM.GetDataByteY +.3 jsr MEM.GetDataByte tax jsr SLIST.AddBlockByte bcs .9 -.4 iny - jsr MEM.GetDataByteY +.4 jsr MEM.GetDataByte jsr SLIST.AddBlockByte bcs .9 @@ -68,23 +65,21 @@ SLIST.Lookup jsr SLIST.Search bcs .9 - sty .8+1 + sty .8+1 Save Key Length - ldy #0 - jsr SLIST.GetBlockByte tax - jsr MEM.SetDataByteY + jsr MEM.SetDataByte .1 jsr SLIST.GetNextBlockByte - iny - jsr MEM.SetDataByteY + jsr MEM.SetDataByte dex bne .1 .8 lda #$ff SELF MODIFIED ldx SLIST.ID ldy SLIST.ID+1 + clc .9 rts *-------------------------------------- @@ -95,13 +90,10 @@ SLIST.GetByID jsr SLIST.Select tax beq .9 - ldy #0 - - jsr MEM.SetDataByteY + jsr MEM.SetDataByte .1 jsr SLIST.GetNextBlockByte - iny - jsr MEM.SetDataByteY + jsr MEM.SetDataByte dex bne .1 @@ -109,12 +101,10 @@ SLIST.GetByID jsr SLIST.Select tax - iny - jsr MEM.SetDataByteY + jsr MEM.SetDataByte .2 jsr SLIST.GetNextBlockByte - iny - jsr MEM.SetDataByteY + jsr MEM.SetDataByte dex bne .2 @@ -139,18 +129,13 @@ SLIST.UpdateByID jsr SLIST.GetNextBlockByte set pos at DATALEN - ldy #0 - - jsr MEM.GetDataByteY + jsr MEM.GetDataByte tax jsr SLIST.SetBlockByte -.4 iny - jsr MEM.GetDataByteY - +.4 jsr MEM.GetDataByte jsr SLIST.SetBlockByte - dex bne .4 diff --git a/TEST.S.txt b/TEST.S.txt index 783d3501..95e9a68d 100644 --- a/TEST.S.txt +++ b/TEST.S.txt @@ -119,7 +119,7 @@ FLOAT4 .HS 8100000000 1 FLOAT5 .HS 9080000000 -32768 CONST1 >CSTR "3.141592653" CONST2 >CSTR "3" -LONG1 .DA 123456789 +LONG1 .DA >123456789 MSG2 >CSTR "PI/3=%e\r\n" MSG3 >CSTR "COS(PI/3)=%e\r\n" MSG4 >CSTR "Long=%L\r\n"