From 4d8432082a37c795ab3d8781039901980e07dee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 19 Mar 2019 16:52:08 +0000 Subject: [PATCH] Kernel 0.93 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ASM.S.DIR.txt | 17 +--- BIN/ASM.S.OUT.txt | 4 +- BIN/ASM.S.SRC.txt | 19 ++-- BIN/ASM.S.SYM.txt | 192 +++++++++++++-------------------------- BIN/ASM.S.txt | 23 +++-- BIN/CHTYP.S.txt | 56 +++++++++--- SYS/KERNEL.S.SLIST.txt | 1 + SYS/KERNEL.S.TERM.txt | 36 ++++---- 9 files changed, 157 insertions(+), 191 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 835c126a8e12ac06896c5dd8bce366058f1963b7..dbe59bcc75c8ca559a1fb6e11f427d274494ede6 100644 GIT binary patch delta 51775 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 OD29tFVX7Z$wdVdt)7xrRLz4mvEG^(hUsI7 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 delta 52638 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.G ASM.PH.ON DIR.SE sec .HS 90 BCC *--------------------------------------- -DIR.EQ clc - - lda (ZPGlobalBuf) - beq .99 - - ror - >STA.G OUT.bEquate +DIR.EQ >LDA.G SYM.bNewGlobal + bpl .99 jsr SRC.GetNextCharNB bcs .99 - jsr EXP.Eval - bcs .9 - - jsr SYM.Acc2Global - bcs .9 - - jmp SYM.FlushGlobal + jmp EXP.Eval .99 lda #ERR.SYNTAX.ERROR sec diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt index cb051dc3..d35bfc23 100644 --- a/BIN/ASM.S.OUT.txt +++ b/BIN/ASM.S.OUT.txt @@ -185,8 +185,8 @@ OUT.Print1 >DEC.G OUT.LineCnt lda #20 sta (pData),y - lda #$80 - >STA.G bPause + lda #$80 + >STA.G bPause .8 rts *--------------------------------------- diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 5398ee42..71ddcc64 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -24,10 +24,16 @@ SRC.ParseLine jsr OUT.Reset .1 >LDA.G ASM.MA.ON bmi SRC.ParseLine.MACRO - jmp SRC.ParseLine.LABEL + jsr SRC.ParseLine.LABEL + bcs .9 + + >LDA.G SYM.bNewGlobal + bpl .8 + + jmp SYM.StoreGlobal .8 clc - rts +.9 rts *--------------------------------------- SRC.ParseLine.Macro >LDA.G ASM.PASS If Pass#2, ignore @@ -136,8 +142,8 @@ SRC.ParseLine.LABEL cmp #'.' local symbol? bne .1 - lda (ZPGlobalBuf) Not relative to Global label... - beq SRC.ParseLine.InvLbl + >LDA.G SYM.bNewGlobal Not relative to Global label... + bpl SRC.ParseLine.InvLbl jsr SRC.GetNextChar bcs SRC.ParseLine.InvLbl @@ -155,10 +161,7 @@ SRC.ParseLine.LABEL bcs SRC.ParseLine.RTS bra SRC.ParseLine.DirOp -.1 jsr SYM.FlushGlobal Close & store Previous Global - bcs SRC.ParseLine.RTS - - jsr SYM.NewOrGetGlobal +.1 jsr SYM.NewOrGetGlobal bcs SRC.ParseLine.RTS *--------------------------------------- SRC.ParseLine.DirOp diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 3cf7a3dc..68d0ee33 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -46,8 +46,7 @@ SYM.Init >SYSCALL SListNew .9 rts *--------------------------------------- -SYM.Reset lda #0 - sta (ZPGlobalBuf) +SYM.Reset >STZ.G SYM.bNewGlobal rts *--------------------------------------- SYM.Quit >LDA.G SYM.hLookupBuf @@ -71,8 +70,8 @@ SYM.Quit >LDA.G SYM.hLookupBuf .8 clc rts *--------------------------------------- -SYM.Dump stz ZPLinePtr - stz ZPLinePtr+1 +SYM.Dump stz ZPPtr2 + stz ZPPtr2+1 >LDA.G ASM.LI.ON bpl .1 @@ -81,7 +80,7 @@ SYM.Dump stz ZPLinePtr >SYSCALL puts .1 >PUSHW ZPNameBuf - >PUSHW ZPLinePtr + >PUSHW ZPPtr1 >LDA.G SYM.hGlobalList >SYSCALL SListGetByID bcc .10 @@ -89,10 +88,24 @@ SYM.Dump stz ZPLinePtr clc rts -.10 >STYA ZPLinePtr Save Next ID +.10 >STYA ZPPtr2 Save Next ID - >LDA.G ASM.LI.ON - bpl .1 + >PUSHW ZPNameBuf Label (PString) + >PUSHBI 2 + >LDYA L.MSG.PSTR + >SYSCALL printf + bcs .9 + + >PUSHWI 0 Start + >PUSHWI $ffff End + >PUSHWI 0 Allocate + >PUSHW ZPPtr1 + >LDA.G SYM.hGlobalList + >SYSCALL SListGetData + bcs .9 + txa + + >STA.G hBuf ldy #SYMG.F Get Symbol Size lda (ZPGlobalBuf),y @@ -117,11 +130,6 @@ SYM.Dump stz ZPLinePtr lda L.MSG.EQU0+1,x >SYSCALL printf - >PUSHW ZPNameBuf Label (PString) - >PUSHBI 2 - >LDYA L.MSG.PSTR - >SYSCALL printf - bcs .9 ldy #SYMG.SIZE .4 tya @@ -161,43 +169,45 @@ SYM.Dump stz ZPLinePtr *--------------------------------------- SYM.NewOrGetGlobal >LDA.G ASM.PASS - bne SYM.GetGlobal Pass #2: should be already defined... + bne SYM.GetGlobal -SYM.NewGlobal jsr SYM.LookupGlobal Pass #1; try to add global... - bcc .9 Already Defined - - jsr SYM.GetName - bcs .99 - - jsr SYM.PC2Global A=PC Size - - lda #SYMG.SIZE - sta (ZPGlobalBuf) - clc - rts - -.9 lda #ERR.SYMBOL.REDEF - sec -.99 rts -*--------------------------------------- -SYM.GetGlobal >PUSHB.G SYM.hGlobalList - >PUSHW ZPLinePtr - >PUSHW ZPGlobalBuf - >SYSCALL SListLookup - - bcs .9 +SYM.NewGlobal >PUSHW ZPLinePtr Pass #1; try to add global... + >LDA.G SYM.hGlobalList + >SYSCALL SListNewKey + bcs .9 Already Defined + >STYA.G SYM.GlobalID + txa adc ZPLinePtr sta ZPLinePtr bcc .1 inc ZPLinePtr+1 - clc -.1 tya - >STA.G SYM.GlobalID+1 +.1 lda #$ff + >STA.G SYM.bNewGlobal + + jmp SYM.PC2Acc + +.9 lda #ERR.SYMBOL.REDEF + sec +.99 rts +*--------------------------------------- +SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined... + >LDA.G SYM.hGlobalList + >SYSCALL SListLookup + bcs .9 + >STYA.G SYM.GlobalID + txa - >STA.G SYM.GlobalID + adc ZPLinePtr + sta ZPLinePtr + bcc .1 + + inc ZPLinePtr+1 + +.1 + clc rts .9 lda #ERR.UNDEF.SYMBOL @@ -220,107 +230,31 @@ SYM.LookupGlobal .8 .9 rts *--------------------------------------- -SYM.FlushGlobal lda (ZPGlobalBuf) - beq .8 - - - >LDA.G ASM.PASS - bne .2 +SYM.StoreGlobal >LDA.G ASM.PASS + bne .8 - >PUSHW ZPNameBuf - >PUSHW ZPGlobalBuf + >PUSHWI 5 + >PUSHW L.SRC.ACC.SIZE >PUSHW.G SYM.GlobalID >LDA.G SYM.hGlobalList >SYSCALL SListAddData - bra .3 + bcs .9 -.2 >PUSHW ZPGlobalBuf - >PUSHW.G SYM.GlobalID - >LDA.G SYM.hGlobalList - >SYSCALL SListSetData -.3 bcs .9 - lda #0 - sta (ZPGlobalBuf) rts .8 clc .9 rts *--------------------------------------- -SYM.GetName jsr SRC.GetChar - bcs .9 - - ldy #0 - -.1 jsr SRC.IsLetterOrDigit - bcc .2 - cmp #'.' - beq .2 - cmp #'_' - bne .8 - -.2 sta (ZPNameBuf),y - iny - jsr SRC.GetNextChar - bcc .1 - -.8 lda #0 - sta (ZPNameBuf),y - clc - rts - -.9 lda #ERR.SYNTAX.ERROR - sec - rts -*--------------------------------------- -SYM.PC2Global ldx #4 - - ldy #ASM.PC +SYM.PC2Acc ldy #ASM.PC+3 .1 lda (pData),y - pha - iny - dex - bne .1 - - ldx #4 - - ldy #SYMG.V+3 - -.2 pla - sta (ZPGlobalBuf),y + sta SRC.ACC,x dey - dex - bne .2 - - ldx #4 - ldy #ASM.PC+3 - -.3 lda (ZPGlobalBuf),y - bne .4 - dex - dey - bne .3 - -.4 txa - - ldy #SYMG.F - sta (ZPGlobalBuf),y - - txa A=PC Size - - rts -*--------------------------------------- -SYM.Acc2Global ldx #4 - ldy #SYMG.F+4 - -.1 lda SRC.ACC.SIZE,x - sta (ZPGlobalBuf),y - dey - dex bpl .1 - - clc + + lda #4 + sta SRC.ACC.SIZE rts *--------------------------------------- SYM.Lookup2Acc ldy #SYMG.F+4 @@ -346,8 +280,8 @@ SYM.Lookup2Acc ldy #SYMG.F+4 SYM.NewOrGetLocalA tax Save ID - lda (ZPGlobalBuf) not in a global label - bne .1 + >LDA.G SYM.bNewGlobal not in a global label + bmi .1 lda #ERR.INV.LABEL clc diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index aeaf06e6..95a75e3b 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -9,6 +9,9 @@ AUTO 4,1 .INB INC/MACROS.I .INB INC/A2OSX.I *--------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START ZPPtr1 .EQ ZPBIN ZPPtr2 .EQ ZPBIN+2 @@ -27,6 +30,7 @@ ZPOpsPtr .EQ ZPBIN+22 ZPOpDefPtr .EQ ZPBIN+24 ZPTmpBuf .EQ ZPBIN+26 +ZS.END .ED *--------------------------------------- * Symbols *--------------------------------------- @@ -97,8 +101,8 @@ CS.START cld .DA #0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS - .DA #0 SS - .DA #32 ZP + .DA #ZS.END-ZS.START Zero Page Size + .DA #64 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -133,6 +137,7 @@ L.SRC.AM.StrBuf .DA SRC.AM.StrBuf L.ASM.6502 .DA ASM.6502 L.ASM.T.FILENAME .DA ASM.T.FILENAME L.FIO.Stat .DA FIO.Stat +L.SRC.ACC.SIZE .DA SRC.ACC.SIZE L.T.DIRECTIVES .DA T.DIRECTIVES J.DIRECTIVES .DA DIR.AC .DA DIR.AS @@ -313,9 +318,6 @@ CS.RUN ldy #S.PS.hStdIn lda (pData),y bne .8 no continue back to previous file - jsr SYM.FlushGlobal Store last Symbol, if any.... - bcs .9 - >LDA.G ASM.PASS End of pass #2 ?? bne .1 inc @@ -324,6 +326,7 @@ CS.RUN ldy #S.PS.hStdIn rts .1 jsr SYM.Dump + >PUSHW ZPLinePtr >PUSHBI 2 >LDYA L.MSG.SUMMARY @@ -444,10 +447,10 @@ T.LI >PSTR "ON" ASM..T. .AZ ".T." ASM.6502 .AZ "6502" MSG.HELP .AZ "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM [type TXT ($04) or S-C/BAS ($FA)]\r\n" -MSG.PASS .AZ "*** Pass:#%d\r\n" -MSG.SRC.FILE .AZ "*** Reading SRC File:%s\r\n" -MSG.OBJ.FILE .AZ "*** Writing OBJ File:%s, Type=%02x\r\n" -MSG.T.FILE .AZ "*** Loading CPU File:%s\r\n" +MSG.PASS .AZ "**** Pass:#%d\r\n" +MSG.SRC.FILE .AZ "**** Reading SRC File:%s\r\n" +MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x\r\n" +MSG.T.FILE .AZ "**** Loading CPU File:%s\r\n" MSG.OUT0 .AZ "%H- " MSG.OUT1 .AZ "%H-%h " MSG.OUT2 .AZ "%H-%h %h " @@ -538,8 +541,10 @@ SYM.hGlobalList .BS 1 SYM.hNameBuf .BS 1 SYM.hGlobalBuf .BS 1 SYM.GlobalID .BS 2 +SYM.bNewGlobal .BS 1 SYM.hLookupBuf .BS 1 +SYM.hBuf .BS 1 SYM.LocalID .BS 2 diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index b6e2782b..c7a79552 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -113,8 +113,16 @@ CS.INIT clc rts *-------------------------------------- -CS.RUN >SYSCALL GetChar - bcs .10 no char +CS.RUN ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL feof + bcs .99 + + tay + beq .10 + + >SYSCALL GetChar + bcs .99 cmp #$03 Ctrl-C beq .92 Abort.... @@ -268,7 +276,7 @@ GetHexFileType ldy #$ff .10 iny lda (ZPPtr1),y bne .10 - + cpy #3 bne .9 @@ -276,25 +284,21 @@ GetHexFileType ldy #$ff cmp #'0' bne .1 - iny + ldy #1 lda (ZPPtr1),y - cmp #'0' - bcc .9 - cmp #'9'+1 + jsr IsDigit16 bcs .9 asl asl asl asl >STA.G HexFileType - iny + + ldy #2 lda (ZPPtr1),y - cmp #'0' - bcc .9 - cmp #'9'+1 + jsr IsDigit16 bcs .9 - and #$0F >ORA.G HexFileType sta (pData),y clc @@ -334,6 +338,34 @@ GetHexFileType ldy #$ff cpx #PRODOS.FT.COUNT bne .2 +.9 sec + rts +*--------------------------------------- +IsDigit16 cmp #'0' + bcc .9 + cmp #'9'+1 + bcc .8 + + cmp #'A' + bcc .9 + cmp #'F'+1 + bcc .1 + + cmp #'a' + bcc .9 + cmp #'f'+1 + bcs .9 + + eor #$20 + +.1 +* clc + sbc #'A'-11 cc so A->10 (11-CC) + clc + +.8 and #$0F + rts + .9 sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index cb04a03f..42bf0732 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -240,6 +240,7 @@ SLIST.NewKey jsr SLIST.Search bcs .9 >LDYA ZPSListKeyID + ldx SLIST.KeyLen clc rts diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index b01d1f84..9800e75b 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -100,38 +100,40 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB sec rts *-------------------------------------- -DRV.TERM.OPEN ldx #0 DEV.ID in A +DRV.TERM.OPEN tax DEV.ID in A -.1 ldy A2osX.SCRNDEVS,x - beq .2 + jsr DRV.TERM.GetDCB + + ldy #S.DCB.TTY.STATUS + lda (ZPDCBPtr),y + bit #S.DIB.S.OPENED + beq .1 + + lda #MLI.E.OPEN + sec + rts + +.1 txa + + ldx #0 +.2 ldy A2osX.SCRNDEVS,x + beq .3 inx cpx #K.SCR.MAX - bne .1 + bne .2 lda #E.OOH sec rts -.9 lda #MLI.E.OPEN - sec - rts - -.2 sta A2osX.SCRNDEVS,x +.3 sta A2osX.SCRNDEVS,x - pha - - jsr DRV.TERM.GetDCB - - pla ldy #S.DCB.TTY.DEVID sta (ZPDCBPtr),y ldy #S.DCB.TTY.STATUS - lda (ZPDCBPtr),y - bit #S.DIB.S.OPENED - bne .9 ora #S.DIB.S.OPENED ora DRV.TERM.DIB+S.DIB.S sta (ZPDCBPtr),y