diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 02d5aa6d..25e34b2f 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CC.S.CODE.txt b/BIN/CC.S.CODE.txt index 89dc217b..0cee82b0 100644 --- a/BIN/CC.S.CODE.txt +++ b/BIN/CC.S.CODE.txt @@ -6,18 +6,22 @@ CODE.Init stz ZPCCConst >STZ.G CC.bInitCode + >STA.G CC.ScopeID + iny + sta (pData),y + >LDYAI PCC.FH.CS >STYA ZPCCCode >LDYAI 20 char *ARGV[10] >STYA ZPCCData - >STZ.G CC.ScopeID - iny - sta (pData),y - - lda #'_' - >STA.G CC.Label + ldy #SCOPE-1 + lda #0 + +.1 sta (ScopeStk),y reset initial Scope ID, LocalPtr, FrameSize + dey + bpl .1 clc .99 rts diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index 139d93c1..06630239 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -34,7 +34,7 @@ CORE.Init lda #SL._ >STYA ScopeStk txa >STA.G CC.hScopeStk - + >LDYAI 256 >SYSCALL GetMem bcs .9 @@ -43,6 +43,9 @@ CORE.Init lda #SL._ txa >STA.G CC.hStmtStk + lda #'_' + >STA.G CC.Label + lda #CC.LookupIdx tay sta (pData),y diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index 463eb616..d1d2d705 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -3,7 +3,7 @@ NEW *-------------------------------------- F.Decl jsr SCOPE.New bcs .99 - + lda (ZPSymBufPtr) #SYM.T pha @@ -18,7 +18,8 @@ F.Decl jsr SCOPE.New tax beq .11 function is void -.10 jsr F.AddReturnVar Y,A = T/Q +.10 lda #'R' + jsr SYM.NewLabelA bcs .99 .11 jsr CORE.GetNCharNBNL Skip ( @@ -117,7 +118,12 @@ F.Def >LDA.G CC.bInitCode -.2 >LDA.G CC.FrameSize +.2 ldy ScopePtr + iny + iny + iny + lda (ScopeStk),y #SCOPE.FrameSize + jsr CODE.LDAI A = f() ARGS size bcs .99 @@ -199,28 +205,6 @@ F.DeclGetTQ lda (ZPLineBufPtr) sec rts *-------------------------------------- -F.AddReturnVar ldx ZPLineBufPtr - phx - ldx ZPLineBufPtr+1 - phx - - >STYA ZPPtr2 Y,A = T/Q - - lda #'R' - >STA.G CC.Label+1 - - >LEA.G CC.Label - >STYA ZPLineBufPtr - - jsr F.NewArg - - plx - stx ZPLineBufPtr+1 - plx - stx ZPLineBufPtr - - rts -*-------------------------------------- F.NewArg >LDYA.G CC.SymID >STYA.G CC.SymIDSave diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index ef51f910..2852c9a0 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -36,7 +36,7 @@ KW.IF jsr SCOPE.New jsr STMT.New00 bcs .99 - + jmp STMT.SetType .9 lda #E.CSYN @@ -73,7 +73,7 @@ KW.IF.END jsr STMT.Close jsr STMT.New00 bcs .99 - + jmp STMT.SetType .9 lda #E.CSYN @@ -85,7 +85,7 @@ KW.ELSE lda #E.CSYN illegal rts *-------------------------------------- KW.ELSE.END jsr STMT.Close - bcs .99 + bcs .99 lda #'X' define EXIT Label jsr SYM.NewLabelA @@ -620,42 +620,19 @@ KW.CONTINUE lda #'C' sec .99 rts *-------------------------------------- -KW.RETURN ldx ZPLineBufPtr - phx - ldx ZPLineBufPtr+1 - phx - - lda #'R' - >STA.G CC.Label+1 - - >LEA.G CC.Label - >STYA ZPLineBufPtr - - jsr SYM.Lookup - - plx - stx ZPLineBufPtr+1 - plx - stx ZPLineBufPtr - +KW.RETURN lda #'R' + jsr SYM.LookupLabelA bcs .99 - ldy #SYM.Q - lda (ZPLookupSymPtr),y - pha - lda (ZPLookupSymPtr) SYM.T - tay - pla + txa jsr EXP.Eval bcs .99 jsr SYM.GetYASizeOfInAX Y,A=T/Q tax X = sizeof - jsr CODE.SetRetValue - bcs .99 - jsr SYM.LookupFree + jsr CODE.SetRetValue bcs .99 lda #'X' diff --git a/BIN/CC.S.PCC.txt b/BIN/CC.S.PCC.txt index 2642ea2a..180902f7 100644 --- a/BIN/CC.S.PCC.txt +++ b/BIN/CC.S.PCC.txt @@ -138,14 +138,14 @@ PCC.FH.RUN lda #0 >PUSHA returned int=0 >PUSHA - >PUSHA int ARGC (hi byte) + >PUSHA int ARGC (hi byte=0) ldy #S.PS.ARGC lda (pPS),y >PUSHA int ARGC (lo byte) >PUSHW pData *char[] ARGV - >DEBUG +* >DEBUG PCC.FH.MAIN .EQ *-PCC.FH.ORG+1 jsr $FFFF jsr main >PULLA diff --git a/BIN/CC.S.SCOPE.txt b/BIN/CC.S.SCOPE.txt index 3fbcbee6..bdc3950e 100644 --- a/BIN/CC.S.SCOPE.txt +++ b/BIN/CC.S.SCOPE.txt @@ -1,27 +1,46 @@ NEW AUTO 3,1 *-------------------------------------- -SCOPE.New >INCW.G CC.ScopeID - - lda ScopePtr +SCOPE.New lda ScopePtr + tay clc adc #SCOPE bcs .9 sta ScopePtr - ldy #CC.ScopeID+3 - -.1 lda (pData),y - pha - dey - bpl .1 - - - - dec bLocalScope + + iny + iny #SCOPE.LocalPtr + lda (ScopeStk),y + pha + >LDA.G CC.ScopeID +* clc + adc #1 + sta (pData),y + tax + iny + lda (pData),y + adc #0 + + ldy ScopePtr + iny + sta (ScopeStk),y #SCOPE.ID Hi + txa + dey + sta (ScopeStk),y #SCOPE.ID Lo + + iny + iny + pla + sta (ScopeStk),y #SCOPE.LocalPtr + + iny + lda #0 + sta (ScopeStk),y #SCOPE.FrameSize + lda #'F' jsr SYM.LookupLabelA bcs .99 @@ -32,19 +51,22 @@ SCOPE.New >INCW.G CC.ScopeID bcs .99 .DO _DBG_SCOPE=1 - >PUSHW L.MSG.DEBUG.SCIN - jsr SCOPE.Push - - lda ScopePtr - lsr - lsr - >PUSHA - - >PUSHB.G CC.LocalPtr - >PUSHB.G CC.FrameSize - >PUSHBI 5 - >SYSCALL PrintF - >DEBUG + >PUSHW L.MSG.DEBUG.SCIN + jsr SCOPE.Push + + lda ScopePtr + >PUSHA + + tay + iny + iny + >PUSHB (ScopeStk),y + iny + >PUSHB (ScopeStk),y + + >PUSHBI 5 + >SYSCALL PrintF +* >DEBUG .FIN clc @@ -59,7 +81,12 @@ SCOPE.Close lda #'F' define FRAME SIZE jsr SYM.NewLabelA bcs SCOPE.New.RTS - >LDA.G CC.FrameSize + ldy ScopePtr + iny + iny + iny + lda (ScopeStk),y #SCOPE.FrameSize + jsr CODE.RemLocal bcs SCOPE.New.RTS @@ -67,12 +94,15 @@ SCOPE.Close lda #'F' define FRAME SIZE >PUSHW L.MSG.DEBUG.SCOUT jsr SCOPE.Push lda ScopePtr - lsr - lsr >PUSHA - >PUSHB.G CC.LocalPtr - >PUSHB.G CC.FrameSize + tay + iny + iny + >PUSHB (ScopeStk),y #SCOPE.LocalPtr + iny + >PUSHB (ScopeStk),y #SCOPE.FrameSize + >PUSHBI 5 >SYSCALL PrintF .FIN @@ -91,24 +121,29 @@ SCOPE.Close lda #'F' define FRAME SIZE jsr SCOPE.Push lda ScopePtr - lsr - lsr >PUSHA - >PUSHB.G CC.LocalPtr - >PUSHB.G CC.FrameSize + tay + iny + iny + >PUSHB (ScopeStk),y + iny + >PUSHB (ScopeStk),y + >PUSHBI 5 >SYSCALL PrintF - >DEBUG +* >DEBUG .FIN clc .99 rts *-------------------------------------- -SCOPE.Push ldy ScopePtr +SCOPE.Push lda ScopePtr -SCOPE.PushY iny #SCOPE.ID+1 +SCOPE.PushA clc + adc #SCOPE.ID+1 + tay lda (ScopeStk),y >PUSHA dey #SCOPE.ID diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index d4915a14..b9b23b86 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -204,10 +204,13 @@ SYM.SetAddrL ldy #SYM.SizeOf+1 lda (ZPSymBufPtr),y clc - >ADC.G CC.LocalPtr + ldy ScopePtr + iny + iny + adc (ScopeStk),y bcs .9 - sta (pData),y + sta (ScopeStk),y ldy #SYM.Addr sta (ZPSymBufPtr),y @@ -216,8 +219,12 @@ SYM.SetAddrL ldy #SYM.SizeOf+1 lda (ZPSymBufPtr),y clc - >ADC.G CC.FrameSize - sta (pData),y + ldy ScopePtr + iny + iny + iny + adc (ScopeStk),y + sta (ScopeStk),y clc rts @@ -544,21 +551,19 @@ SYM.Lookup >LDA.G CC.LookupIdx .1 pha >PUSHB.G CC.hSyms >PUSHW ZPLineBufPtr - ply - phy - jsr SCOPE.PushY + pla + pha + jsr SCOPE.PushA >SYSCALL SListLookup bcc .8 pla - cmp #CC.ScopeIDs beq .9 - dec - dec +* sec + sbc #SCOPE bra .1 - .99 lda #E.OOH * sec rts @@ -600,9 +605,10 @@ SYM.Lookup >LDA.G CC.LookupIdx * "_C"ontinue * "_D"efault * "_E"lse -* "_F"rameSize +* "_F"rame Size * "_J"umpTable * "_L"oop +* "_R"eturn value * "_S"statement * e"_X"it *-------------------------------------- @@ -622,12 +628,6 @@ SYM.NewLabelA bit bPass2 >STYA.G CC.LabelID - lda #SYM.T.VOID - >STA.G CC.LabelBuf - lda #SYM.Q.POINTER - iny - sta (pData),y - ldy #CC.LabelBuf+SYM.DefSize lda #SYM.Def sta (pData),y @@ -636,16 +636,22 @@ SYM.NewLabelA bit bPass2 cmp #'F' bne .1 - ldy #CC.LabelBuf+SYM.SC - lda #SYM.SC.AUTO - sta (pData),y + jsr SYM.NewLabelF + bra .7 - >LDA.G CC.FrameSize - ldy #CC.LabelBuf+SYM.Addr - sta (pData),y - bra .2 +.1 cmp #'R' + bne .6 -.1 ldy #CC.LabelBuf+SYM.SC + jsr SYM.NewLabelR + bra .7 + +.6 lda #SYM.T.VOID + >STA.G CC.LabelBuf + lda #SYM.Q.POINTER + iny + sta (pData),y + + iny lda #SYM.SC.STATIC sta (pData),y @@ -656,7 +662,7 @@ SYM.NewLabelA bit bPass2 lda ZPCCCode+1 sta (pData),y -.2 .DO _DBG_SYM=1 +.7 .DO _DBG_SYM=1 jsr SYM.DEBUGNL .FIN @@ -675,7 +681,46 @@ SYM.NewLabelA bit bPass2 .FIN .99 rts *-------------------------------------- +SYM.NewLabelF lda #SYM.T.UCHAR + >STA.G CC.LabelBuf + lda #0 + iny + sta (pData),y + + iny + lda #SYM.SC.AUTO + sta (pData),y + + ldy ScopePtr + iny + iny + iny + lda (ScopeStk),y #SCOPE.FrameSize + + ldy #CC.LabelBuf+SYM.Addr + sta (pData),y + rts +*-------------------------------------- +SYM.NewLabelR ldy #SYM.Q + lda (ZPSymBufPtr),y + and #$F8 strip off SYM.Q.FUNC... + pha + + lda (ZPSymBufPtr) + >STA.G CC.LabelBuf + pla + iny + sta (pData),y + + iny + lda #SYM.SC.AUTO + sta (pData),y + rts +*-------------------------------------- SYM.LookupLabelA + cmp #'R' + beq .1 + bit bPass2 bmi .1 @@ -688,23 +733,22 @@ SYM.LookupLabelA >PUSHB.G CC.hSyms ...for SListGetData - ldy ScopePtr + lda ScopePtr -.2 phy +.2 pha >PUSHB.G CC.hSyms >PUSHEA.G CC.Label - ply - phy - jsr SCOPE.PushY + pla + pha + jsr SCOPE.PushA >SYSCALL SListLookup - bcc .8 + bcc .3 - ply - cpy #CC.ScopeIDs + pla beq .9 - dey - dey +* sec + sbc #SCOPE bra .2 .9 inc pStack discard CC.hSyms @@ -713,7 +757,7 @@ SYM.LookupLabelA sec rts -.8 plx +.3 plx >PUSHA KeyID.HI tya @@ -733,8 +777,14 @@ SYM.LookupLabelA plx + >LDA.G CC.Label+1 + ldy #SYM.T return T/Q + cmp #'R' + beq .4 + ldy #SYM.Addr - lda (ZPLookupPtr),y + +.4 lda (ZPLookupPtr),y pha @@ -773,7 +823,7 @@ SYM.LookupFree >LDA.G CC.LookupIdx .8 clc rts -.9 lda E.INVH +.9 lda #E.INVH * sec .99 rts @@ -962,7 +1012,6 @@ SYM.DEBUGN >PUSHW L.MSG.DEBUG.SYMN >PUSHA >PUSHBI 7 >SYSCALL Printf -* >DEBUG rts SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU @@ -975,7 +1024,15 @@ SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU iny lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 5 + + ldy #SYM.Addr+1 + lda (ZPSymBufPtr),y + >PUSHA + dey + lda (ZPSymBufPtr),y + >PUSHA + + >PUSHBI 7 >SYSCALL Printf rts @@ -989,8 +1046,17 @@ SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS iny lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 5 + + ldy #SYM.Addr+1 + lda (ZPSymBufPtr),y + >PUSHA + dey + lda (ZPSymBufPtr),y + >PUSHA + + >PUSHBI 7 >SYSCALL Printf + >DEBUG rts SYM.DEBUGG >PUSHW L.MSG.DEBUG.SYMG diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index 9a4d8123..dc3cdb47 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -11,7 +11,7 @@ NEW .INB inc/mli.e.i *-------------------------------------- _DBG_SYM .EQ 0 -_DBG_SCOPE .EQ 1 +_DBG_SCOPE .EQ 0 _DBG_OUT .EQ 0 *-------------------------------------- FILES.MAX .EQ 4 @@ -539,20 +539,22 @@ CS.QUIT jsr CODE.Quit *-------------------------------------- PrintVerboseMsg .DO _DBG_SCOPE=1 - >PUSHW L.MSG.DEBUG.SC - jsr SCOPE.Push - - lda ScopePtr - sec - sbc #CC.ScopeIDs - lsr - >PUSHA - - >PUSHB.G CC.LocalPtr - >PUSHB.G CC.FrameSize - >PUSHBI 5 - >SYSCALL PrintF -* >DEBUG + >PUSHW L.MSG.DEBUG.SC + jsr SCOPE.Push + + lda ScopePtr + >PUSHA + + tay + iny + iny + >PUSHB (ScopeStk),y + iny + >PUSHB (ScopeStk),y + + >PUSHBI 5 + >SYSCALL PrintF +* >DEBUG .FIN ldy #S.PS.hStdOut @@ -661,8 +663,8 @@ MSG.LINKING2 .CZ "*** %H:%H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n" MSG.GENERATING .CZ "*** Generating: %s\r\n" .DO _DBG_SYM=1 MSG.DEBUG.SYMN .CZ "New SymID=%H[%H],T=%h,Q=%h,SC=%h " -MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h,SC=%h\r\n" -MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h,SC=%h\r\n" +MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h,SC=%h,@=%H\r\n" +MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h,SC=%h,@=%H\r\n" MSG.DEBUG.SYMG .CZ "Get SymID=%H,T=%h,Q=%h,SC=%h\r\n" MSG.DEBUG.SYMNL .CZ "New (%s) ID=%H[%H],T=%h,Q=%h,SC=%h " MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n" @@ -1142,8 +1144,6 @@ CC.hStmtStk .BS 1 CC.hSyms .BS 1 CC.ScopeID .BS 2 -CC.LocalPtr .BS 1 -CC.FrameSize .BS 1 CC.bInitCode .BS 1 *-------------------------------------- diff --git a/DRV/DAN2ETH.DRV.S.txt b/DRV/DAN2ETH.DRV.S.txt index 503cab01..61ad621a 100644 --- a/DRV/DAN2ETH.DRV.S.txt +++ b/DRV/DAN2ETH.DRV.S.txt @@ -28,18 +28,18 @@ IO.8255.S.ByteRcvd .EQ %00100000 IO.8255.Mode .EQ $C083-$88 *-------------------------------------- .MA READBYTE - lda #IO.8255.S.ByteRcvd -:1 bit IO.8255.S,x - bne :1 +:1 inc $600+37 + lda IO.8255.S,x + and #IO.8255.S.ByteRcvd + beq :1 lda IO.8255.Data,x .EM .MA WRITEBYTE sta IO.8255.Data,x -* lda #IO.8255.S.ByteSent -:1 bit IO.8255.S,x +:1 inc $600+38 + bit IO.8255.S,x bpl :1 - .EM *-------------------------------------- .DUMMY @@ -100,18 +100,14 @@ Dev.Detect >STYA ZPArgPtr lda ZPPtr1+1 and #$0F - tay + sta DEVSLOT0x asl asl asl asl ora #$88 - tax - - lda #$fa - sta IO.8255.Mode,x - cmp IO.8255.Mode,x - beq .3 + sta DEVSLOTx0 + bra .3 .2 dec FD.DEV.NAME+3 lda ZPPtr1+1 @@ -125,14 +121,8 @@ Dev.Detect >STYA ZPArgPtr lda #MLI.E.NODEV sec .99 rts - -.3 stx DEVSLOTx0 - sty DEVSLOT0x - - - - - +*-------------------------------------- +.3 * sta DIB+S.DIB.VERSION+1 * sta DIB+S.DIB.VERSION @@ -216,6 +206,8 @@ FD.DEV.NAME .AZ "eth7" *-------------------------------------- * Driver Code *-------------------------------------- +* https://github.com/profdc9/ip65/blob/main/drivers/dan2d.s +*-------------------------------------- ZPIOCTL .EQ ZPDRV ZPBufPtr .EQ ZPDRV+2 Counter .EQ ZPDRV+4 @@ -310,7 +302,6 @@ OPEN lda #S.DIB.S.OPENED lda #$FA sta IO.8255.Mode,x - lda #IO.8255.Cmd.PFX >WRITEBYTE lda #IO.8255.Cmd.INIT @@ -318,7 +309,7 @@ OPEN lda #S.DIB.S.OPENED ldy #0 -.1 lda DCB+S.DCB.NIC.MAC+0,y +.1 lda DCB+S.DCB.NIC.MAC,y >WRITEBYTE iny @@ -327,6 +318,10 @@ OPEN lda #S.DIB.S.OPENED >READBYTE beq .8 + + + lda #"! + sta $600+30 lda #MLI.E.IO sec @@ -334,6 +329,10 @@ OPEN lda #S.DIB.S.OPENED .8 lda #S.DIB.S.OPENED tsb DIB+S.DIB.S + + lda #"O + sta $600+30 + clc rts @@ -358,24 +357,31 @@ READ php >STYA ZPIOCTL + jsr DEBUG.ClrR + ldx DEVSLOTx0 lda #IO.8255.Cmd.PFX >WRITEBYTE lda #IO.8255.Cmd.POLL >WRITEBYTE - lda #2048 + lda #1514 >WRITEBYTE - lda /2048 + lda /1514 >WRITEBYTE + lda #"R + sta $600+32 + >READBYTE ldy #S.IOCTL.BYTECNT sta (ZPIOCTL),y pha eor #$ff sta Counter + >READBYTE + iny sta (ZPIOCTL),y pha eor #$ff @@ -399,8 +405,12 @@ READ php dey pla sta (ZPIOCTL),y + ldx DEVSLOTx0 + lda #"R + sta $600+33 + ldy #0 .2 inc Counter @@ -433,11 +443,13 @@ WRITE php sei >STYA ZPIOCTL + jsr DEBUG.ClrW + ldx DEVSLOTx0 lda #IO.8255.Cmd.PFX >WRITEBYTE - lda #IO.8255.Cmd.POLL + lda #IO.8255.Cmd.SEND >WRITEBYTE ldy #S.IOCTL.BYTECNT lda (ZPIOCTL),y @@ -471,14 +483,40 @@ WRITE php bne .1 inc ZPBufPtr+1 - bne .1 + bra .1 -.8 >READBYTE - bne READWRITE.9 +.8 + lda #"W + sta $600+35 + + >READBYTE + bne WRITE.99 + + lda #"W + sta $600+36 plp clc rts + +WRITE.99 lda #MLI.E.IO + plp + sec + rts +*-------------------------------------- +DEBUG.ClrR lda #"R + sta $600+31 + lda #"? + sta $600+32 + sta $600+33 + rts +*-------------------------------------- +DEBUG.ClrW lda #"W + sta $600+34 + lda #"? + sta $600+35 + sta $600+36 + rts *-------------------------------------- DRV.CS.END DEVSLOTx0 .BS 1 diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index eb527bb7..dcf57ffb 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -198,10 +198,14 @@ STATUS >STYA ZPIOCTL ldy #S.IOCTL.S lda (ZPIOCTL),y beq .1 + cmp #S.IOCTL.S.GETDIB bne STATUS.DCB + ldx #S.DIB-1 - .HS 2C bit abs + + .HS 2C BIT ABS + .1 ldx #3 ldy #S.IOCTL.BUFPTR @@ -231,6 +235,7 @@ STATUS.DCB cmp #S.IOCTL.S.GETDCB lda PacketPageDATA,x and #PP.LineST.LinkOK beq .1 + lda #S.DCB.NIC.LINK.OK tsb DCB+S.DCB.NIC.LINK @@ -242,8 +247,10 @@ STATUS.DCB cmp #S.IOCTL.S.GETDCB ldy PacketPageDATA,x and /PP.TestCTL.FDX beq .1 + lda #S.DCB.NIC.LINK.FD tsb DCB+S.DCB.NIC.LINK + .1 ldy #S.IOCTL.BUFPTR lda (ZPIOCTL),y sta .3+1 @@ -251,13 +258,16 @@ STATUS.DCB cmp #S.IOCTL.S.GETDCB lda (ZPIOCTL),y sta .3+2 ldx #S.DCB.NIC-1 + .2 lda DCB,x + .3 sta $ffff,x SELF MODIFIED dex bpl .2 clc rts + STATUS.9 lda #MLI.E.BADCTL sec rts diff --git a/INC/IO.IIGS.I.txt b/INC/IO.IIGS.I.txt index 00881db1..a101589e 100644 --- a/INC/IO.IIGS.I.txt +++ b/INC/IO.IIGS.I.txt @@ -5,6 +5,23 @@ NEW IO.IIGS.INTEN .EQ $C041 R,W IO.IIGS.INTFLAG .EQ $C046 R IO.IIGS.CLRVBLINT .EQ $C047 W +*-------------------------------------- + .MA TKCALL + ldx ##TK.]1 + jsl $E10000 + .EM +*-------------------------------------- +TK.SetHeartBeat .EQ $1203 +* TK.DelHeartBeat .EQ $1303 +* TK.ClrHeartBeat .EQ $1403 + +TK.GetVector .EQ $1103 +TK.SetVector .EQ $1003 +* $000C Vertical blanking interrupt handler +TK.IntSource .EQ $2303 + +* $0002 vblEnable Enable vertical blanking interrupts +* $0003 vb1Disable Disable vertical blanking interrupts *-------------------------------------- MAN -SAVE INC/IO.IIGS.I +SAVE inc/io.iigs.i diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 4d0b7a19..863c251a 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -133,7 +133,7 @@ CORE.Events jsr CORE.GetEvents *-------------------------------------- CORE.Quit php sei - jsr CORE.IRQ.Off + jsr CORE.IRQOff plp @@ -488,19 +488,38 @@ CORE.LastPSID .DA #0 CORE.EvtIndex .BS 1 CORE.EvtCount .BS 1 *-------------------------------------- +* Called by IIgs formware, Native Mode, 8bits +*-------------------------------------- +CORE.IRQGS .OP 65816 + + pha + phb + phx + phy + + phk + plb + + stz IO.IIGS.CLRVBLINT + + jsr CORE.IRQ.Switch + + ply + plx + plb + pla + +* clc + rtl + +* bra CORE.IRQ.Switch + .OP 65C02 +*-------------------------------------- * Called by : * - Kernel IRQ Manager (AuxLC) * - ProDOS IRQ Manager (GP) *-------------------------------------- -CORE.IRQ.IIGS lda IO.IIGS.INTFLAG - and #$08 - beq CORE.IRQ.DEV - - stz IO.IIGS.CLRVBLINT - - bra CORE.IRQ.Switch -*-------------------------------------- -CORE.IRQ.TCLOCK ldy IRQ.n0 +CORE.IRQTK ldy IRQ.n0 lda $c080,y and #$20 @@ -511,7 +530,7 @@ CORE.IRQ.TCLOCK ldy IRQ.n0 bra CORE.IRQ.Switch *-------------------------------------- -CORE.IRQ.MOUSE jsr $FFFF SELF MODIFIED,SERVEMOUSE +CORE.IRQM jsr $FFFF SELF MODIFIED,SERVEMOUSE bcs CORE.IRQ.DEV Not From Mouse ldx IRQ.0n @@ -519,11 +538,10 @@ CORE.IRQ.MOUSE jsr $FFFF SELF MODIFIED,SERVEMOUSE and #MOUSESTSx.INTVBL IRQ was caused by VBL ? beq CORE.IRQ.DEV - ldx CORE.IRQ.MOUSE.2+2 $Cn + ldx CORE.IRQM.2+2 $Cn ldy IRQ.n0 -CORE.IRQ.MOUSE.2 - jsr $FFFF SELF MODIFIED,READMOUSE +CORE.IRQM.2 jsr $FFFF SELF MODIFIED,READMOUSE *-------------------------------------- CORE.IRQ.Switch inc IRQ.Tick @@ -592,41 +610,55 @@ CORE.IRQ.DEV ldx #0 .8 clv clear V (no task switching) rts *-------------------------------------- -CORE.IRQ.IIGS.Off - lda #$08 - trb IO.IIGS.INTEN +CORE.IRQGSOff .OP 65816 + + clc + xce go to native mode + rep #$30 long M,X + + pea $0003 Disable vertical blanking interrupts + >TKCALL IntSource + bcs * + + pea $000C Vertical blanking interrupt handler + lda IRQ.GSVect+2 + pha + lda IRQ.GSVect + pha + >TKCALL SetVector + bcs * + + sep #$30 short M,X + sec + xce back to emulation mode + + .OP 65C02 rts *-------------------------------------- -CORE.IRQ.TCLOCK.Off - ldx IRQ.n0 +CORE.IRQTKOff ldx IRQ.n0 stz $c080,x lda $c088,x lda $c080,x ldx IRQ.0n -* sta SETPAGE2 -* stz $478,x -* stz $7f8,x - -* sta CLRPAGE2 stz $478,x stz $7f8,x *-------------------------------------- -CORE.IRQ.Off rts +CORE.IRQOff rts *-------------------------------------- -CORE.IRQ.MOUSE.Off - ldy CORE.IRQ.MOUSE.Off.1+2 Cn +CORE.IRQMOff ldy CORE.IRQMOff.1+2 Cn ldy IRQ.n0 lda #0 -CORE.IRQ.MOUSE.Off.1 - jmp $ffff SELF MODIFIED +CORE.IRQMOff.1 jmp $ffff SELF MODIFIED *-------------------------------------- IRQ.InKernel .BS 1 IRQ.InLib .BS 1 IRQ.Skip .BS 1 +IRQ.GSVect .BS 4 + IRQ.IntNum .BS 1 IRQ.n0 .BS 1 IRQ.0n .BS 1 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 3350dd77..49046402 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -376,11 +376,11 @@ SysScrInit.TTYPtrs ldy #S.DCB.TTY-1 lda #0 - + .1 sta (ZPPtr1),y dey bne .1 - + lda FD.TTY+S.FD.DEV.DEVID sta (ZPPtr1) @@ -551,7 +551,7 @@ CPU.Init2c lda RDIOUDIS bpl .8 sta IO.IIC.DISVBL - + .8 pla bpl CPU.InitOk @@ -802,7 +802,7 @@ DevMgrInit.VXD >LDYAI VSD.PATCH jsr .10 bcc .8 - + >LDYAI VED.PATCH jsr .10 bcs .9 @@ -812,7 +812,7 @@ DevMgrInit.VXD >LDYAI VSD.PATCH sec sbc #1 sta .81+1 - + iny lda (ZPPtr1),y sbc #0 @@ -838,7 +838,7 @@ DevMgrInit.VXD >LDYAI VSD.PATCH *-------------------------------------- .10 >STYA ZPPtr1 - ldy #VXD.PATCH.SIZE-1 + ldy #9 10 bytes .11 lda $BF41,y cmp (ZPPtr1),y @@ -846,12 +846,12 @@ DevMgrInit.VXD >LDYAI VSD.PATCH dey bpl .11 - + clc rts - + .19 sec - rts + rts *-------------------------------------- VSD.PATCH bit RRAMWRAMBNK2 jsr $D002 @@ -862,7 +862,6 @@ VED.PATCH bit RRAMWRAMBNK2 jsr $D401 bit RRAMWRAMBNK1 rts -VXD.PATCH.SIZE .EQ 10 *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) @@ -885,30 +884,56 @@ IrqMgrInit >LDYAI MSG.IRQ lda K.MLI.PARAMS+1 sta IRQ.INTNUM - - plp *-------------------------------------- lda A2osX.HWType cmp #A2osX.HWType.IIgs bne .1 - lda #"G" - sta IRQ.Mode + .OP 65816 - lda #$08 - tsb IO.IIGS.INTEN + clc + xce go to native mode + rep #$30 long M,X - jsr IrqMgrInit.HZ2Tick + pea $000C Vertical blanking interrupt handler + pea $0000 + pea $0000 + >TKCALL GetVector + bcs * + pla + sta IRQ.GSVect+2 + + pla + sta IRQ.GSVect + + pea $000C Vertical blanking interrupt handler + pea $0000 + pea CORE.IRQGS + >TKCALL SetVector + bcs * + + pea $0002 Enable vertical blanking interrupts + >TKCALL IntSource + bcs * - >LDYAI CORE.IRQ.IIGS - jsr IrqMgrInit.SetV + sep #$30 short M,X + sec + xce back to emulation mode - >LDYAI CORE.IRQ.IIGS.Off + .OP 65C02 + + jsr IrqMgr.HZ2Tick + + >LDYAI CORE.IRQGS + jsr IrqMgr.SetV + + >LDYAI CORE.IRQGSOff >STYA CORE.Quit+3 - >LDYAI MSG.IRQ.IIGS + >LDYAI MSG.IRQGS + ldx #"G" sec - bra .8 + bra IrqMgrInit.8 .9 plp sec @@ -917,25 +942,21 @@ IrqMgrInit >LDYAI MSG.IRQ .1 cmp #A2osX.HWType.IIc beq .2 - jsr IrqMgrInit.TClock + jsr IrqMgr.TClk bcs .3 - lda #"C" - sta IRQ.Mode + >LDYAI CORE.IRQTK + jsr IrqMgr.SetV - >LDYAI CORE.IRQ.TCLOCK - jsr IrqMgrInit.SetV - - >LDYAI CORE.IRQ.TCLOCK.Off + >LDYAI CORE.IRQTKOff >STYA CORE.Quit+3 - >LDYAI MSG.IRQ.CLOCK + >LDYAI MSG.IRQTK + ldx #"C" sec - bra .8 + bra IrqMgrInit.8 -.2 php - sei - sta CLRPAGE2 +.2 sta CLRPAGE2 lda #$60 sta $5fa //c EXTINT COM1:Dont buffer but get IRQ sta $5fb //c EXTINT COM2:Dont buffer but get IRQ @@ -944,43 +965,40 @@ IrqMgrInit >LDYAI MSG.IRQ stz $4FF //c ROM FF: no ACIABUF stz $4FC //c ROM 0X: no ACIABUF - plp -.3 jsr IrqMgrInit.Mouse +.3 jsr IrqMgr.Mouse bcs .7 - lda #"V" - sta IRQ.Mode + >LDYAI CORE.IRQM + jsr IrqMgr.SetV - >LDYAI CORE.IRQ.MOUSE - jsr IrqMgrInit.SetV - - >LDYAI CORE.IRQ.MOUSE.Off + >LDYAI CORE.IRQMOff >STYA CORE.Quit+3 - >LDYAI MSG.IRQ.MOUSE + >LDYAI MSG.IRQM + ldx #"V" sec - bra .8 + bra IrqMgrInit.8 -.7 jsr IrqMgrInit.HZ2Tick +.7 jsr IrqMgr.HZ2Tick - lda #"P" - sta IRQ.Mode - >LDYAI MSG.IRQ.POLL + ldx #"P" + >LDYAI MSG.IRQP clc -.8 ror A2osX.IRQMode +IrqMgrInit.8 ror A2osX.IRQMode + stx IRQ.Mode >SYSCALL2 puts + plp clc rts *-------------------------------------- -IrqMgrInit.SetV >STYA IRQ.JSR+1 +IrqMgr.SetV >STYA IRQ.JSR+1 >STYA GP.IRQ.JSR+1 rts *-------------------------------------- -IrqMgrInit.TClock - stz ZPPtr1 Try finding a TClock Card... +IrqMgr.TClk stz ZPPtr1 Try finding a TClock Card... lda #$C1 sta ZPPtr1+1 @@ -1016,19 +1034,10 @@ IrqMgrInit.TClock lda #A2osX.S.CLK sta A2osX.S,x - php - sei - lda #$40+$20 Enable interrupt + 64Hz sta $c080,y lda #$40 - -* sta SETPAGE2 -* sta $478,x -* sta $7f8,x - -* sta CLRPAGE2 sta $478,x sta $7f8,x @@ -1041,12 +1050,10 @@ IrqMgrInit.TClock sta CORE.Tick10t dec A2osX.IRQMode - plp clc rts *-------------------------------------- -IrqMgrInit.Mouse - stz ZPPtr1 Try finding a Mouse Card... +IrqMgr.Mouse stz ZPPtr1 Try finding a Mouse Card... lda #$C1 sta ZPPtr1+1 @@ -1056,23 +1063,26 @@ IrqMgrInit.Mouse lda (ZPPtr1),y cmp Mouse.SIG,x bne .3 + dex bpl .2 + bra .4 + .3 inc ZPPtr1+1 no match, try next slot.... lda ZPPtr1+1 cmp #$C8 bne .1 - sec +* sec rts .4 lda ZPPtr1+1 sta .11+2 - sta CORE.IRQ.MOUSE.Off.1+2 - sta CORE.IRQ.MOUSE+2 - sta CORE.IRQ.MOUSE.2+2 + sta CORE.IRQMOff.1+2 + sta CORE.IRQM+2 + sta CORE.IRQM.2+2 and #$0f sta IRQ.0n asl @@ -1082,15 +1092,13 @@ IrqMgrInit.Mouse sta IRQ.n0 - php - sei bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly ldy #INITMOUSE jsr .10 ldy #SETMOUSE lda (ZPPtr1),y - sta CORE.IRQ.MOUSE.Off.1+1 + sta CORE.IRQMOff.1+1 lda #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE jsr .10 @@ -1098,23 +1106,18 @@ IrqMgrInit.Mouse bit RRAMWRAMBNK1 ldy #SERVEMOUSE lda (ZPPtr1),y - sta CORE.IRQ.MOUSE+1 + sta CORE.IRQM+1 ldy #READMOUSE lda (ZPPtr1),y - sta CORE.IRQ.MOUSE.2+1 + sta CORE.IRQM.2+1 - jsr IrqMgrInit.HZ2Tick + jsr IrqMgr.HZ2Tick dec A2osX.IRQMode - plp clc rts -.9 plp - sec - rts - .10 pha lda (ZPPtr1),y sta .11+1 @@ -1124,8 +1127,7 @@ IrqMgrInit.Mouse .11 jmp $ffff SELF MODIFIED *-------------------------------------- -IrqMgrInit.HZ2Tick - lda A2osX.HZ +IrqMgr.HZ2Tick lda A2osX.HZ sta CORE.TickPer10t sta CORE.Tick10t asl @@ -1308,10 +1310,10 @@ DRV.BLKDEVX .DA DRV.RamDrive .DA DRV.BlkDev *-------------------------------------- MSG.IRQ .AZ "Interrupt Manager..." -MSG.IRQ.IIGS .AZ " Apple IIgs VBL IRQ Activated." -MSG.IRQ.MOUSE .AZ " Mouse Card VBL IRQ Activated." -MSG.IRQ.CLOCK .AZ " Clock Card IRQ Activated." -MSG.IRQ.POLL .AZ " Polling Mode." +MSG.IRQGS .AZ " Apple IIgs VBL IRQ Activated." +MSG.IRQM .AZ " Mouse Card VBL IRQ Activated." +MSG.IRQTK .AZ " Clock Card IRQ Activated." +MSG.IRQP .AZ " Polling Mode." MSG.EVT .AZ "Event Manager..." MSG.TSK .AZ "Task Manager..." MSG.PWD .AZ "Password Manager..."