diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 1b5f256b..46055367 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 59c0d479..37775a99 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index fc3c7ff0..8e145939 100644 Binary files a/.Floppies/ProDOSFX.BOOT.po and b/.Floppies/ProDOSFX.BOOT.po differ diff --git a/BASIC.FX/BASIC.S.A.txt b/BASIC.FX/BASIC.S.A.txt index 13c3709e..75e95d2f 100644 --- a/BASIC.FX/BASIC.S.A.txt +++ b/BASIC.FX/BASIC.S.A.txt @@ -443,8 +443,10 @@ L9CDF lda GP.CATFLAG beq L9CD3 jsr BS.LINEBUFCLR80 - ldx #$10 - jsr BS.PRINTERRMSGX + + ldy #$10 + ldx #BSX.GetMSGY.X + jsr BS.ToAUX L9CF5 ldx #$50 bne L9CD3 @@ -830,10 +832,11 @@ BS.SetState stx GP.STATE rts *-------------------------------------- -BS.PRINTERR tay - ldx BS.ERRCODES-2,y +BS.PRINTERR ldx #BSX.GetErrA.X + .HS 2C BIT ABS +BS.GetMsgY ldx #BSX.GetMsgY.X + jsr BS.ToAUX -BS.PRINTERRX jsr BS.PRINTERRMSGX ldx GP.INPTR stx BS.CATWIDTH jsr MON.CROUT @@ -850,50 +853,6 @@ BS.LINEBUFOUT ldx #$00 jmp MON.CROUT *-------------------------------------- -BS.PRINTERRMSGX ldy #$00 - clc - sty GP.INPTR - -L9FBA jsr L9FD6 - bne L9FC4 - - jsr L9FD6 - ora #$10 - -L9FC4 tay - lda BS.TBL6-1,y - beq L9FD5 - - ldy GP.INPTR - sta IO.LINEBUF+1,y - inc GP.INPTR - bne L9FBA - -L9FD5 rts -*-------------------------------------- -L9FD6 lda BS.TBL7,x - bcs L9FED - - beq L9FE3 - - lsr - lsr - lsr - lsr - sec - rts - -L9FE3 inx - lda BS.TBL7,x - sta GP.INPTR - inx - bne L9FD6 - -L9FED inx - and #$0F - clc - rts -*-------------------------------------- BS.WriteTBUF256 lda #$00 ldy #$01 bne BS.WriteTBUFAY @@ -1252,7 +1211,7 @@ LA1FB sta XBBB5 LA24E sec rts - +*-------------------------------------- LA250 jsr BS.KW.FRE bcs LA29D diff --git a/BASIC.FX/BASIC.S.B.txt b/BASIC.FX/BASIC.S.B.txt index 396d581b..8b717092 100644 --- a/BASIC.FX/BASIC.S.B.txt +++ b/BASIC.FX/BASIC.S.B.txt @@ -227,28 +227,36 @@ LA411 jsr LA021 sbc AS.VARSTART sta BS.BAS.HDR sta XBBED + lda AS.ARRAYEND+1 sbc AS.VARSTART+1 sta BS.BAS.HDR+1 sta XBBEE + lda AS.ARRAYSTART sbc AS.VARSTART sta BS.BAS.HDR+2 + lda AS.ARRAYSTART+1 sbc AS.VARSTART+1 sta BS.BAS.HDR+3 + lda AS.STRINGSTART sbc XBBED sta ZP.A1L + lda AS.STRINGSTART+1 sbc #$00 sta ZP.A1H + lda AS.ARRAYEND sbc XBBED sta ZP.PCL + lda AS.ARRAYEND+1 sbc #$00 sta ZP.PCH + lda #$03 sta XA386+1 jsr BS.MoveMemDown @@ -260,14 +268,17 @@ LA411 jsr LA021 inc ZP.A1H lda ZP.A1H sta XBBEA + lda AS.HIMEM sec sbc ZP.A1L sta XBBEB + lda AS.HIMEM+1 sta BS.BAS.HDR+4 sbc ZP.A1H sta XBBEC + clc LA47F rts @@ -618,7 +629,7 @@ BS.DOSCMD lda #$FF LA6A2 jmp BS.SYNERR -LA6A5 jsr BS.IsIntCmdMTR +LA6A5 jsr BS.IsIntCmd bcs LA6A2 lda GP.STATE @@ -835,25 +846,18 @@ LA806 jsr BS.GetVolAtSxDy bcs LA849 LA80B lda GP.XCNUM - asl - tax + beq .8 - lda BS.KW.JMP,x - sta BS.KW.JMPADDR - lda BS.KW.JMP+1,x - sta BS.KW.JMPADDR+1 + cmp #25 PREFIX + beq .8 - clc - txa - beq LA844 - - eor #$32 - beq LA844 + cmp #34 CD + beq .8 lda GP.AllowedBITS+1 and #$04 - - beq LA844 + beq .8 + lda GP.FoundBITS lsr bcc LA844 @@ -871,6 +875,7 @@ LA80B lda GP.XCNUM lda #BS.E.PATHNFND6 rts +.8 clc LA844 jmp (BS.KW.JMPADDR) BS.SYNERR lda #BS.E.SYNTAX @@ -1100,7 +1105,7 @@ LA9AF lda BS.TMPBUF4,x rts LA9C1 jmp LA76C - +*-------------------------------------- BS.GetFTypeASC ldy #$00 LA9C6 sta BS.TMPBUF4,y @@ -1317,56 +1322,16 @@ BS.TMPBUF3x2 asl BS.TMPBUF4 rol BS.TMPBUF4+2 rts *-------------------------------------- -BS.IsIntCmd ldx #$1F - stx GP.XCNUM - lda BS.CMDBUF - eor #'-' - bne LAB03 +BS.IsIntCmd ldx #BSX.IsIntCmd.X + jsr BS.ToAUX - inc GP.XCNUM - sta GP.XLEN - bne LAB20 + bcc .8 -LAB03 ldy #$08 - sty GP.XLEN - -LAB08 lda BS.KW.LEN-1,x - bpl LAB13 - - and #$7F - dey - dec GP.XLEN - -LAB13 tax - -LAB14 lda BS.CMDBUF,y - jsr BS.ToUpper - cmp BS.KW.TABLE,x - bne LAB33 - - dex - dey - bpl LAB14 - -LAB20 lda GP.XCNUM - asl - tax - - lda BS.KW.PBITS-1,x - sta GP.AllowedBITS+1 - lda BS.KW.PBITS-2,x - sta GP.AllowedBITS - clc - rts - -LAB33 ldy GP.XLEN - dec GP.XCNUM - ldx GP.XCNUM - bne LAB08 - - dec GP.XCNUM + dec GP.XCNUM $ff sec jmp GP.EXTRNCMD + +.8 rts *-------------------------------------- BS.TMPBUF3Reset stz BS.TMPBUF4 stz BS.TMPBUF4+1 diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index 831eeadf..fce04986 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -377,12 +377,14 @@ LB087 lda #BS.E.NODEV *-------------------------------------- BS.KW.BYE jsr LB562 jsr LB36B + jsr BS.RAMReset * lda #$65 jsr MLI .DA #MLI.C.QUIT .DA GP.MLIRW *-------------------------------------- -BS.QUIT.IIgs jsr MLI +BS.QUIT.IIgs jsr BS.RAMReset + jsr MLI .DA #MLI.C.QUIT .DA .1 @@ -392,6 +394,25 @@ BS.QUIT.IIgs jsr MLI .DA #0 .DA 0 *-------------------------------------- +BS.RAMReset bit GP.CISPARE1 + bpl .8 + + php + sei + + sta IO.SETWRITEAUX + + lda #$FF + sta AUX.RAMSIG + dec + sta AUX.RAMSIG+1 Set $E000-$FEFF as BLOCK FREE + + sta IO.CLRWRITEAUX + + plp + +.8 rts +*-------------------------------------- BS.KW.CAT lda #$27 .HS 2C BIT ABS BS.KW.CATALOG lda #$4F @@ -417,8 +438,11 @@ LB0C1 jsr LB1BA jsr BS.LINEBUFOUT jsr MON.CROUT jsr BS.LINEBUFCLR80 - ldx #$10 - jsr BS.PRINTERRMSGX + + ldy #$10 + ldx #BSX.GetMSGY.X + jsr BS.ToAUX + jsr BS.LINEBUFOUT jsr MON.CROUT lda XBC14 @@ -510,8 +534,11 @@ LB157 ldx #BS.CMDBUF bcs LB127 jsr BS.LINEBUFCLR80 - ldx #$36 - jsr BS.PRINTERRMSGX + + ldy #$36 + ldx #BSX.GetMSGY.X + jsr BS.ToAUX + jsr BS.TMPBUF3Reset lda GP.FIAUXTYPE ldx GP.FIAUXTYPE+1 @@ -794,8 +821,8 @@ BS.KW.VERIFY bcs LB3B7 and #$01 bne LB38D - ldx #$00 - jsr BS.PRINTERRX + ldy #0 + jsr BS.GetMSGY jsr MON.CROUT LB38D clc @@ -944,7 +971,7 @@ LB481 inx BS.KW.NOMON clc rts - +*-------------------------------------- BS.CheckFilename lda GP.FoundBITS and #$01 @@ -1067,7 +1094,7 @@ LB53F stz MLI.LEVEL LB55E dec GP.OPENCNT rts - +*-------------------------------------- LB562 ldx GP.OPENCNT beq LB573 @@ -1479,101 +1506,66 @@ LB858 stx GP.SSGINFO BS.JMP.GP.VSYSO jmp (GP.VSYSO) BS.JMP.GP.VSYSI jmp (GP.VSYSI) *-------------------------------------- +BS.KW.MTR jsr BS.SetState0 + jsr MON.CLREOL + jmp MON.ENTERMON +*-------------------------------------- +BS.Expand2.P .DA #1 + .DA MLI.PATHBUF +*-------------------------------------- BS.Expand2PATHBUF - lda #1 - sta MLI.PATHBUF - lda #'/' set target path = 1/ - sta MLI.PATHBUF+1 -* >DEBUG - cmp BS.CMDBUF new path is absolute ? + stz MLI.PATHBUF reset target path + + lda BS.CMDBUF + cmp #'/' new path is absolute ? beq .1 jsr MLI no, get current path as a base .DA #MLI.C.GETPREFIX .DA BS.Expand2.P -.1 stz BS.Expand.Ptr +.1 ldx #BSX.Expand.X +*-------------------------------------- +BS.ToAUX stx .1+1 -.2 jsr BS.Expand.GetN - beq .8 + sei + + tsx + sta IO.SETALTZP + stx $100 + ldx $101 + txs - cmp #'.' - bne .6 + bit IO.RRAMWRAMBNK1 + bit IO.RRAMWRAMBNK1 - jsr BS.Expand.GetN - beq .9 + cli - cmp #'/' /./ ???? discard - beq .2 - - cmp #'.' /.DIR.... - bne .5 - - jsr BS.Expand.GetN - beq .3 /.. - - cmp #'/' - bne .9 - - ldy MLI.PATHBUF remove /DIR/.. - cpy #1 - beq .9 only / - -.3 dey - lda MLI.PATHBUF,y - cmp #'/' - bne .3 - - sty MLI.PATHBUF - bra .2 - -.5 pha - lda #'.' - jsr BS.Expand.PutN - pla - -.6 jsr BS.Expand.PutN - -.7 jsr BS.Expand.GetN - beq .8 - - jsr BS.Expand.PutN - - cmp #'/' - bne .7 - - bra .2 - -.8 ldy MLI.PATHBUF - -.80 lda MLI.PATHBUF,y - sta BS.CMDBUF.LEN,y - dey - bpl .80 - - clc +.1 ldx #$FF SELF MODIFIED + jsr BSX.JMPX + + stx .3+1 + php + plx + stx .2+1 + + sei + + tsx + stx $101 + ldx $100 + txs + sta IO.CLRALTZP + + bit IO.RROMBNK1 + + cli + +.2 ldx #$FF SELF MODIFIED + phx +.3 ldx #$FF SELF MODIFIED + plp rts - -.9 sec - rts - -BS.Expand.GetN ldx BS.Expand.Ptr - cpx BS.CMDBUF.LEN - beq .8 - - inc BS.Expand.Ptr - lda BS.CMDBUF,x NZ - -.8 rts - -BS.Expand.PutN inc MLI.PATHBUF - ldy MLI.PATHBUF - sta MLI.PATHBUF,y - rts - -BS.Expand.Ptr .BS 1 -BS.Expand2.P .DA #1 - .DA MLI.PATHBUF *-------------------------------------- BS.ToUpper cmp #'a' bcc .9 diff --git a/BASIC.FX/BASIC.S.D.txt b/BASIC.FX/BASIC.S.D.txt index 2a889186..10c771f0 100644 --- a/BASIC.FX/BASIC.S.D.txt +++ b/BASIC.FX/BASIC.S.D.txt @@ -100,7 +100,7 @@ BS.AS.KW .DA #$80 .DA #$BE .DA #$BF *-------------------------------------- -BS.KW.LEN .DA #$47 +BS.KW.LEN.OLD .DA #$47 .DA #$5F .DA #$18 .DA #$30 @@ -132,9 +132,9 @@ BS.KW.LEN .DA #$47 .DA #$B5 .DA #$D8 *-------------------------------------- -BS.KW.TABLE .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND" +BS.KW.TABLE.OLD .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND" *-------------------------------------- -BS.KW.JMP .DA BS.JMP.XTRNADDR $00 +BS.KW.JMP.OLD .DA BS.JMP.XTRNADDR $00 .DA BS.KW.IN .DA BS.KW.PR .DA BS.KW.CAT @@ -168,7 +168,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR $00 .DA BS.KW.POSITION .DA BS.KW.DASH $40 *-------------------------------------- -BS.KW.PBITS .DA $8040 IN +BS.KW.PBITS.OLD .DA $8040 IN .DA $8040 PR .DA $0495 CAT .DA $0000 FRE @@ -200,6 +200,7 @@ BS.KW.PBITS .DA $8040 IN .DA $0401 RESTORE .DA $0321 POSITION .DA $0401 DASH +*-------------------------------------- BS.KW.OPT .AS "ABELS@FRVD" *-------------------------------------- BS.WHICHBITS @@ -288,7 +289,11 @@ BS.BIERRTBL .DA #$03 .DA #$0C .DA #$08 *-------------------------------------- -BS.ERRCODES .DA #$54 +* .DA #$00 "Copyright..." (VERIFY with no arg) +* .DA #$10 CATALOG header +* .DA #$36 CATALOG footer +*-------------------------------------- +BS.TBL7.IDX.OLD .DA #$54 .DA #$5B .DA #$66 .DA #$6F @@ -309,13 +314,13 @@ BS.ERRCODES .DA #$54 .DA #$EC .DA #$F3 *-------------------------------------- -BS.TBL6 .AS -"ACDEFILMNORTU " +BS.TBL6.OLD .AS -"ACDEFILMNORTU " .DA #$00 *-------------------------------------- .DA #$00 .AS -"BGHKPSVWXY/().:" *-------------------------------------- -BS.TBL7 .DA #$2A +BS.TBL7.OLD .DA #$2A .DA #$05 .DA #$0A .DA #$B6 @@ -575,7 +580,7 @@ XBBB5 .BS 2 XBBB7 .BS 1 XBBB8 .BS 1 *-------------------------------------- -BS.IsIntCmdMTR ldy #$02 +BS.IsIntCmdMTR.OLD ldy #$02 LBBBB lda BS.CMDBUF,y cmp BS.MTR,y @@ -591,6 +596,7 @@ LBBBB lda BS.CMDBUF,y LBBCF jmp BS.IsIntCmd BS.MTR .AS "MTR" +*-------------------------------------- BS.IVERSION .DA #5 BS.AS.HIMEMSave .BS 1 diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index 9dd22e7f..4aa3bb0f 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -7,25 +7,51 @@ LDR.SIG .DA $EEEE LDR.STARTUP.LEN .DA #7 LDR.STARTUP .AS "STARTUP" .BS MLI.MAXPATH-7 -LDR.START1 lda #$9A - sta Ptr2+1 - lda #$24 - sta Ptr1+1 - lda #$00 - sta Ptr1 - sta Ptr2 - ldx #$23 - tay - jsr LDR.MoveXpages - ldx #$01 - lda #$BE - sta Ptr2+1 - jsr LDR.MoveXpages - lda #$15 - jsr MON.COUT +*-------------------------------------- +LDR.START1 ldx #$FF + txs + sta IO.SETALTZP + + stx $100 + stx $101 + + sta IO.CLRALTZP + + sta IO.CLR80DISP + sta IO.CLR80STORE + + bit IO.RROMBNK1 + + jsr MON.INIT + jsr MON.SETVID + jsr MON.SETKBD jsr MON.SETNORM - jsr MON.INIT - jsr MON.MON + jsr MON.HOME + + stz Ptr1 + stz Ptr2 + + lda /LDR.MAIN.SRC + sta Ptr1+1 + lda /LDR.MAIN.DST + sta Ptr2+1 + + ldx #$23 + jsr LDR.MoveXpages + + lda /LDR.GP.SRC + sta Ptr1+1 + lda /LDR.GP.DST + sta Ptr2+1 + + ldx #$01 + jsr LDR.MoveXpages + +* lda #$15 +* jsr MON.COUT +* jsr MON.SETNORM +* jsr MON.INIT +* jsr MON.HOME ldx #$17 @@ -43,13 +69,36 @@ LDR.START1 lda #$9A sta MLI.MEMTABL+22 lda #$C3 sta MLI.MEMTABL+23 - lda AS.COLDBOOT - cmp #$4C - bne .3 + +* lda AS.COLDBOOT +* cmp #$4C +* bne .3 lda MLI.MACHID - and #$20 - beq .3 + and #$30 + cmp #$30 128k Only + bne .3 + + jsr LDR.ShrinkRAM + bcs .3 + + bit IO.RRAMWRAMBNK2 + bit IO.RRAMWRAMBNK2 + sta IO.SETALTZP + + stz Ptr1 + stz Ptr2 + + lda /LDR.AUX.SRC + sta Ptr1+1 + lda /LDR.AUX.DST + sta Ptr2+1 + + ldx #$10 + jsr LDR.MoveXpages + + sta IO.CLRALTZP + bit IO.RROMBNK2 ldx #$03 @@ -59,8 +108,8 @@ LDR.START1 lda #$9A bpl .2 jmp AS.COLDBOOT - -.3 ldx #$27 +*-------------------------------------- +.3 ldx #LDR.UNABLE.L-1 .4 lda LDR.UNABLE,x sta $628,x @@ -72,19 +121,20 @@ LDR.START1 lda #$9A bmi * *-------------------------------------- -LDR.MoveXpages dey - lda (Ptr1),y +LDR.MoveXpages ldy #0 + +.1 lda (Ptr1),y sta (Ptr2),y - tya - bne LDR.MoveXpages + iny + bne .1 inc Ptr1+1 inc Ptr2+1 dex - bne LDR.MoveXpages + bne .1 L20D3 rts - +*-------------------------------------- LDR.CSW cmp #$DD bne L20D3 @@ -133,6 +183,7 @@ L2115 iny sta AS.HIMEM+1 sta AS.STRINGSTART+1 sta GP.RSHIMEM + lda MLI.PFIXPTR beq L214E @@ -142,7 +193,7 @@ L2115 iny bne L218B ldx MLI.PATHBUF - lda #$2F + lda #'/' L2136 cmp MLI.PATHBUF,x bne L213E @@ -164,7 +215,7 @@ L214E jsr MLI .DA #MLI.C.ONLINE .DA LDR.ONLINE.P bne L218B - + lda MLI.PATHBUF+1 and #$0F beq L218B @@ -207,17 +258,18 @@ L2198 lda LDR.STARTUP.LEN1 bne L21C1 jsr LDR.KSW - ldx #$1C + + ldx #LDR.PRODOSBASIC.L-1 L21A2 lda LDR.PRODOSBASIC,x - sta $400,x + sta $400+12,x dex bpl L21A2 - ldx #$1F + ldx #LDR.COPYRIGHT.L-1 L21AD lda LDR.COPYRIGHT,x - sta $480,x + sta $480+9,x dex bpl L21AD @@ -227,6 +279,7 @@ L21AD lda LDR.COPYRIGHT,x jsr MON.COUT1 L21C1 ldx #$02 + L21C3 lda LDR.JMP.GP.ENTRY,x sta DOS.WARMSTART,x sta DOS.COLDSTART,x @@ -236,30 +289,28 @@ L21C3 lda LDR.JMP.GP.ENTRY,x dex bpl L21C3 - lda LDR.BRKVECT + lda #MON.BREAKV sta MON.BRKVECT - lda LDR.BRKVECT+1 + lda /MON.BREAKV sta MON.BRKVECT+1 - lda LDR.POWERUP + lda #GP.ENTRY sta MON.POWERUP - lda LDR.POWERUP+1 + lda /GP.ENTRY sta MON.POWERUP+1 eor #$A5 sta MON.POWERUPBYTE + lda #$A5 sta AS.TRCFLG + lda BS.IVERSION sta MLI.IVERSION LDR.JMP.GP.ENTRY jmp GP.ENTRY - -LDR.BRKVECT .DA MON.BREAKV -LDR.POWERUP .DA GP.ENTRY - LDR.AMPERSANDJMP jmp GP.DOSCMD - +*-------------------------------------- LDR.KSW lda GP.INVECT0 sta ZP.KSW lda GP.INVECT0+1 @@ -268,14 +319,114 @@ LDR.KSW lda GP.INVECT0 inx lda #$8D rts +*-------------------------------------- +LDR.ShrinkRAM lda MLI.DEVPTRS3D2 + ldx MLI.DEVPTRS3D2+1 + cmp MLI.DEVPTRS S0D1=NOVEV + bne .1 + + cpx MLI.DEVPTRS+1 S0D1=NODEV + beq .8 S3D2=NODEV, nothing to do + +.1 cmp #$00 $FF00 = ProODS /RAM driver + bne .8 + + cpx #$FF + bne .8 + + ldx MLI.DEVCNT + +.2 lda MLI.DEVLST,x LOOKING FOR $BF + cmp #$BF + beq .3 + + dex + bpl .2 + +.9 sec No $BF device found at S3D2 + rts dont use LC !!!! + +.8 clc + rts + +.3 cpx MLI.DEVCNT + beq .5 + +.4 lda MLI.DEVLST+1,x + sta MLI.DEVLST,x + inx + cpx MLI.DEVCNT + bne .4 + + ldx MLI.DEVCNT + +.5 stz MLI.DEVLST,x + dec MLI.DEVCNT + + jsr LDR.ONLINE + + ldx #LDR.ZPCODE.L-1 + +.6 lda LDR.ZPCODE,x + sta ZPCode,x + dex + bpl .6 + + ldx #LDR.RAMSIG.L-1 + +.7 jsr ZPCode + cmp LDR.RAMSIG,x + bne .9 Bad signature !!!! + + dex + bpl .7 + + dec GP.CISPARE1 Tell BYE to reset that... + + php + sei + + sta IO.SETWRITEAUX + + stz AUX.RAMSIG + stz AUX.RAMSIG+1 Set $E000-$FFFF as BLOCK USED + + sta IO.CLRWRITEAUX + + plp + + ldx MLI.DEVCNT + lda #$BF + sta MLI.DEVLST,x + inc MLI.DEVCNT +*-------------------------------------- +LDR.ONLINE jsr MLI + .DA #MLI.C.ONLINE + .DA .1 + rts + +.1 .DA #2 + .DA #0 + .DA $1F00 +*-------------------------------------- +LDR.ZPCODE sta IO.SETREADAUX + lda AUX.RAMSIG,x + sta IO.CLRREADAUX + rts +LDR.ZPCODE.L .EQ *-LDR.ZPCODE +*-------------------------------------- +LDR.RAMSIG .HS FFFE BITMAP for Blocks $70-$7F (LC $D000-FFFF) + .HS F3 storage type = F, name length = 3 + .AS "RAM" +LDR.RAMSIG.L .EQ *-LDR.RAMSIG +*-------------------------------------- LDR.CSWVECT .DA LDR.CSW LDR.KSWVECT .DA LDR.KSW LDR.GFINFO.P .DA #10 .DA LDR.STARTUP.LEN - .BS 16 - +*-------------------------------------- LDR.GETSETPFX1.P .DA #1 .DA LDR.GETSETPFX1.SLASH @@ -284,20 +435,27 @@ LDR.GETSETPFX1.SLASH .AS "/" LDR.STARTUP.LEN1 .DA #0 -LDR.ONLINE.P - .DA #2 +*-------------------------------------- +LDR.ONLINE.P .DA #2 LDR.ONLINE.P.DEVNUM .DA #$70 -LDR.ONLINE.P.BUF .DA MLI.PATHBUF+1 +*-------------------------------------- LDR.GETSETPFX2.P .DA #1 .DA MLI.PATHBUF LDR.PFXLEN .DA #0 - +*-------------------------------------- LDR.UNABLE .AS -"*** UNABLE TO EXECUTE BASIC SYSTEM ***" -LDR.PRODOSBASIC .AS -" PRODOS BASIC FX" -LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92" +LDR.UNABLE.L .EQ *-LDR.UNABLE +LDR.PRODOSBASIC .AS -"PRODOS BASIC FX" +LDR.PRODOSBASIC.L .EQ *-LDR.PRODOSBASIC +LDR.COPYRIGHT .AS -"COPYRIGHT APPLE 1983-92" +LDR.COPYRIGHT.L .EQ *-LDR.COPYRIGHT + + .LIST ON +LDR.SIZE .EQ *-LDR.START + .LIST OFF .BS $2400-* *-------------------------------------- MAN diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 9b0efa3e..2fc0b212 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -55,6 +55,7 @@ CMDBITS1.V .EQ $00 ;Volume number ignored *-------------------------------------- Ptr1 .EQ 0 Ptr2 .EQ 2 +ZPCode .EQ 4 ZP.WNDLFT .EQ $20 ZP.WNDWDT .EQ $21 @@ -108,6 +109,8 @@ DIRENTBUF.AUXT .EQ $278 MLI.PATHBUF .EQ $280 *-------------------------------------- +AUX.RAMSIG .EQ $3D0 FFFEF3+"RAM" +*-------------------------------------- DOS.WARMSTART .EQ $03D0 DOS.COLDSTART .EQ $03D3 DOS.FILEMGR .EQ $03D6 @@ -155,6 +158,8 @@ MLI.C.SETBUF .EQ $D2 MLI.C.GETBUF .EQ $D3 *-------------------------------------- MLI .EQ $BF00 +MLI.DEVPTRS .EQ $BF10 +MLI.DEVPTRS3D2 .EQ $BF26 MLI.DEVNUM .EQ $BF30 MLI.DEVCNT .EQ $BF31 MLI.DEVLST .EQ $BF32 @@ -166,8 +171,22 @@ MLI.PFIXPTR .EQ $BF9A MLI.MLIACTV .EQ $BF9B MLI.IVERSION .EQ $BFFD *-------------------------------------- -IO.KBD .EQ $C000 -IO.KSTROBE .EQ $C010 +IO.KBD .EQ $C000 R +IO.CLR80STORE .EQ $C000 W +IO.SET80STORE .EQ $C001 W +IO.CLRREADAUX .EQ $C002 W +IO.SETREADAUX .EQ $C003 W +IO.CLRWRITEAUX .EQ $C004 W +IO.SETWRITEAUX .EQ $C005 W +IO.CLRALTZP .EQ $C008 W +IO.SETALTZP .EQ $C009 W +IO.CLR80DISP .EQ $C00C W +IO.SET80DISP .EQ $C00D W +IO.KSTROBE .EQ $C010 W +IO.RROMBNK2 .EQ $C082 R +IO.RRAMWRAMBNK2 .EQ $C083 RR +IO.RROMBNK1 .EQ $C08A R +IO.RRAMWRAMBNK1 .EQ $C08B RR *-------------------------------------- AS.RESTART .EQ $D43C AS.RESTART1 .EQ $D43F @@ -182,7 +201,7 @@ AS.INTPRINTAX .EQ $ED24 *-------------------------------------- MON.BREAKV .EQ $FA59 MON.INIT .EQ $FB2F -MON.MON .EQ $FC58 +MON.HOME .EQ $FC58 MON.CLREOL .EQ $FC9C MON.RDKEY .EQ $FD0C MON.KEYIN0 .EQ $FD10 @@ -194,18 +213,26 @@ MON.COUT1 .EQ $FDF0 MON.IIGSID .EQ $FE1F MON.SETINV .EQ $FE80 MON.SETNORM .EQ $FE84 +MON.SETKBD .EQ $FE89 +MON.SETVID .EQ $FE93 MON.ENTERMON .EQ $FF69 *-------------------------------------- .INB usr/src/basic.fx/basic.s.ldr -LDR.9A00.CODE .PH $9A00 +LDR.MAIN.SRC .PH $9A00 +LDR.MAIN.DST .EQ * .INB usr/src/basic.fx/basic.s.a .INB usr/src/basic.fx/basic.s.b .INB usr/src/basic.fx/basic.s.c .INB usr/src/basic.fx/basic.s.d .EP -LDR.BE00.CODE .PH $BE00 +LDR.GP.SRC .PH $BE00 +LDR.GP.DST .EQ * .INB usr/src/basic.fx/basic.s.gp .EP +LDR.AUX.SRC .PH $E000 +LDR.AUX.DST .EQ * + .INB usr/src/basic.fx/basic.s.x + .EP *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s diff --git a/DRV/UTHER2.AI.DRV.S.txt b/DRV/UTHER2.AI.DRV.S.txt index 34f647b8..1af87ab1 100644 --- a/DRV/UTHER2.AI.DRV.S.txt +++ b/DRV/UTHER2.AI.DRV.S.txt @@ -299,7 +299,7 @@ OPEN.I jsr CLOSE cpy #4 bne .2 -* >AR.SELECT SUBR Implicit, next to GAR + >AR.SELECT SUBR Implicit, next to GAR ldy #0 @@ -340,12 +340,12 @@ OPEN.I jsr CLOSE inc Sn.IO - ldy #S.IP.PROTOCOL.UDP + ldy #S.IP.PROTOCOL.TCP jsr OPEN.SnY inc Sn.IO - ldy #S.IP.PROTOCOL.TCP + ldy #S.IP.PROTOCOL.UDP jsr OPEN.SnY lda #S.DIB.S.OPENED @@ -354,43 +354,53 @@ OPEN.I jsr CLOSE clc rts *-------------------------------------- -OPEN.SnY >AR.Sn.SELECT S0.MR +OPEN.SnY phy + >AR.Sn.SELECT S0.MR lda #W5100.AR.Sn.MR.IPRAW sta W5100.DR,x + >AR.Sn.SELECT S0.PORT + stz W5100.DR,x + stz W5100.DR,x + + >AR.Sn.SELECT S0.DHAR + + ldy #6 DHAR + lda #$EE + +.1 sta W5100.DR,x + dey + bne .1 + + >AR.Sn.SELECT S0.DIPR + + ldy #4 DIPR + lda #10 + +.2 sta W5100.DR,x + dey + bne .2 + + >AR.Sn.SELECT S0.DPORT + stz W5100.DR,x + stz W5100.DR,x + >AR.Sn.SELECT S0.MSSR lda /K.ETH.FRAME.LEN sta W5100.DR,x lda #K.ETH.FRAME.LEN sta W5100.DR,x -* >AR.Sn.SELECT S0.PROTO - tya + >AR.Sn.SELECT S0.PROTO + pla sta W5100.DR,x -* >AR.Sn.SELECT Sn.TOS + >AR.Sn.SELECT S0.TOS stz W5100.DR,x -* >AR.Sn.SELECT Sn.TTL + >AR.Sn.SELECT S0.TTL lda #K.IP.TTL sta W5100.DR,x - - >AR.Sn.SELECT S0.PORT - stz W5100.DR,x - stz W5100.DR,x - -* >AR.Sn.SELECT S0.DHAR - - ldy #10 DHAR+DIPR - lda #$ff - -.1 sta W5100.DR,x - dey - bpl .1 - -* >AR.Sn.SELECT S0.DPORT - stz W5100.DR,x - stz W5100.DR,x >AR.Sn.SELECT S0.CR lda #W5100.AR.Sn.CR.OPEN @@ -753,6 +763,17 @@ WRITE php ldx DEVSLOTx0 + >AR.Sn.SELECT S0.DIPR + + ldy #S.IP.DST + +.1 lda (ZPBufPtr),y + lda #10 + sta W5100.DR,x + iny + cpy #S.IP.DST+4 + bne .1 + >AR.Sn.SELECT S0.TX.FSR lda W5100.DR,x get send size HI ldy W5100.DR,x LO @@ -760,16 +781,6 @@ WRITE php sbc RXTX.Size+1 bcc READWRITE.NODATA - >AR.Sn.SELECT S0.DIPR - - ldy #S.IP.DST - -.1 lda (ZPBufPtr),y - sta W5100.DR,x - iny - cpy #S.IP.DST+4 - bne .1 - >AR.Sn.SELECT S0.TX.WR lda W5100.DR,x Get HI ldy W5100.DR,x Get LO @@ -827,7 +838,7 @@ GET.IOCTLBUFPTR >STYA ZPIOCTL *-------------------------------------- DRV.CS.END Sn.cnt .EQ 4 -Sn.IP.PROTOCOL .DA #0,#S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.UDP,#S.IP.PROTOCOL.TCP +Sn.IP.PROTOCOL .DA #0,#S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.TCP,#S.IP.PROTOCOL.UDP Sn.IO.BASE .DA /W5100.AR.S0.MR,/W5100.AR.S1.MR,/W5100.AR.S2.MR,/W5100.AR.S3.MR Sn.TX.BASE .DA /TX.BASE,/TX.BASE+$800,/TX.BASE+$1000,/TX.BASE+$1800 Sn.RX.BASE .DA /RX.BASE,/RX.BASE+$800,/RX.BASE+$1000,/RX.BASE+$1800 diff --git a/INC/NIC.W5100.I.txt b/INC/NIC.W5100.I.txt index d0e4c691..7ec0ebb4 100644 --- a/INC/NIC.W5100.I.txt +++ b/INC/NIC.W5100.I.txt @@ -70,8 +70,8 @@ W5100.AR.S0.DIPR .EQ $040C W5100.AR.S0.DPORT .EQ $0410 W5100.AR.S0.MSSR .EQ $0412 W5100.AR.S0.PROTO .EQ $0414 -*W5100.AR.S0.TOS .EQ $0415 -*W5100.AR.S0.TTL .EQ $0416 +W5100.AR.S0.TOS .EQ $0415 +W5100.AR.S0.TTL .EQ $0416 W5100.AR.S0.TX.FSR .EQ $0420 W5100.AR.S0.TX.RD .EQ $0422 W5100.AR.S0.TX.WR .EQ $0424 diff --git a/ProDOS.FX/ProDOS.S.RAM.txt b/ProDOS.FX/ProDOS.S.RAM.txt index fc0cd41f..eddbea02 100644 --- a/ProDOS.FX/ProDOS.S.RAM.txt +++ b/ProDOS.FX/ProDOS.S.RAM.txt @@ -76,6 +76,6 @@ a1l1 .BS 13 13 bytes of storage *-------------------------------------- RAM.LEN .EQ *-RAM.START MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.RAM -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.ram +LOAD usr/src/prodos.fx/prodos.s ASM diff --git a/ProDOS.FX/ProDOS.S.RAMX.txt b/ProDOS.FX/ProDOS.S.RAMX.txt index 5953f599..d9ab032d 100644 --- a/ProDOS.FX/ProDOS.S.RAMX.txt +++ b/ProDOS.FX/ProDOS.S.RAMX.txt @@ -20,35 +20,45 @@ RAMX.START lda RD80STORE read 80 store pha save for later sta CLR80STORE turn off 80 store ldx #$04 move the parameters for use: + L5109 lda A4L,x cmd, unit, bufptr and block (lo) sta tcmd,x -> tcmd, tunit, R2L, R2H, R01 dex bpl L5109 + and formatflg format the volume first time bne L514F thru, or when requested. + ldx bloknml save R01 during format. lda /vblock1 block to be cleared. jsr clrbuf1 clears all buffers. ldy #$03 format volume in 2 chunks. + L511F lda VDIR,y sta vblock1+4,y dey bpl L511F + lda #$FE set last block as unusable sta BITMAP+15 to protect vectors. tya set bitmap bits to $FF. ldy #$0E 15 bytes to set + L5130 sta BITMAP,y dey bne L5130 + sty BITMAP first byte = 0. ldy #$07 do other chunk + L513B lda access,y sta vblock1+34,y dey bpl L513B + lda formatflg if 0, set to $FF bne L51AA else exitcard. + sty formatflg y = $FF, won't format next time. stx R01 restore R01 @@ -59,9 +69,12 @@ L514F asl R01 block requested -> page requested. lda R01 get page requested. cmp #$BF in language card ? bcs L5163 yes, do it. + cmp #$06 bitmap ? bne L5160 + jmp tbmap yes, transfer bitmap + L5160 jmp treg else normal transfer. * when a block between $60 and $7F is requested, it must be spirited into/from @@ -72,13 +85,17 @@ L5163 tax save R1 for later. jsr setptr get direction php and save it. bcs L51B8 if it's a write. + lcrd txa get R1 back cmp #$CF which bank is it in ? bcs L5173 in main bank. + ora #$10 in secondary bank. bne L5179 branch always. + L5173 sta RRAMWRAMBNK2 turn on main $D000 sta RRAMWRAMBNK2 + L5179 sta R01 restore R1. lda R2H save R2 for later pha @@ -90,22 +107,28 @@ L5179 sta R01 restore R1. sta R2L jsr setptr set pointers tay A > 0 from setptr + L5194 lda (A1L),y move A1,A2 to A4,A3 sta (A4L),y lda (A2L),y sta (A3L),y dey bne L5194 + sta CLRALTZP use main zero page/stack + L51A2 stx R2L pla restore R2 sta R2H plp get direction. L51AA bcs L51B5 write, done with move. + sta RRAMWRAMBNK1 switch in MLI part of LC sta RRAMWRAMBNK1 jsr blockdo0 read, transfer dbuf to main + L51B5 jmp exitcard + L51B8 jsr blockdo0 transfer main to dbuf. jmp lcrd transfer dbuf to language card @@ -116,18 +139,24 @@ L51B8 jsr blockdo0 transfer main to dbuf. * write is done (R2->R1); if cmd is 1, a read is done (R1->R2). blockdo0 lda /dbuf set up R1 = dbuf + blockdo1 sta R01 + blockdo jsr setptr set pointers. bcs L51DB it's a write. + sta CLRWRITEAUX transfer buffer directly to main. tay 0 left from setptr. + L51CC lda (A1L),y transfer A1,A2 to A4,A3 sta (A4L),y lda (A2L),y sta (A3L),y dey bne L51CC + sta SETWRITEAUX back the way it was. + donewrt rts mainwrt returns here L51DB lda #mainwrt pointers set up, @@ -140,6 +169,7 @@ L51DB lda #mainwrt pointers set up, setptr lda tcmd is it read or write ? lsr bcs L5208 taken if write. + lda R2H destination page sta A4L+1 sta A3L+1 @@ -153,6 +183,7 @@ setptr lda tcmd is it read or write ? sta A1L sta A2L beq L5223 + L5208 lda R2H source page sta A1L+1 sta A2L+1 @@ -165,6 +196,7 @@ L5208 lda R2H source page lda #$00 destination page aligned sta A4L sta A3L + L5223 inc A2L+1 inc A3L+1 rts @@ -180,13 +212,17 @@ tzip jsr clrbuf0 fill dbuf with 0's * should only be called on a read or format. clrbuf0 lda /dbuf dbuf is temp buffer. + clrbuf1 sta R01 assign to block. + clrbuf2 jsr setptr set pointers tay acc = 0 + L523A sta (A1L),y sta (A2L),y dey bne L523A + rts * treg maps the requested block into the aux card @@ -195,14 +231,18 @@ L523A sta (A1L),y treg cmp #$04 page 4 = vdir bne L524A not vdir, continue + lda #$07 else transfer block 7 bne L5258 + L524A cmp #$0F if any page < $F (block 8) requested, bcc tzip it is invalid. + ldx #$00 x = # of iterations. lda bloknml use true block #. cmp #$5D beyond 8k blocks ? bcc L525B no, do normal + sbc #$50 else subtract offset L5258 jmp times2 and multiply by 2 @@ -211,12 +251,16 @@ L5258 jmp times2 and multiply by 2 L525B sec sbc #$08 block=block-6 + L525E cmp #$11 if <=17 then done bcc L5268 + sbc #$11 else block=block-17. inx iteration count. bpl L525E should branch always + brk otherwise crash !!! + L5268 tay remainder in y * if remainder is 1 then it's an index block: @@ -228,10 +272,12 @@ L5268 tay remainder in y cpy #$01 is it index block ? bne L5273 no. + txa index = 2 * (8 + x) clc adc #$08 bne times2 multiply by 2. + L5273 inx iteration + 1. txa page = 2 * (16 + 8x) asl @@ -241,10 +287,13 @@ L5273 inx iteration + 1. sta R01 tya get offset into 8k chunk beq L5281 if 0, no offset + dey else offset = 2 * y tya + L5281 clc adc R01 + times2 asl acc = 2 * acc jsr blockdo1 store in R01 and transfer jmp exitcard and return @@ -257,21 +306,27 @@ tbmap lda /dbuf use temp buffer as block sta R01 jsr setptr set pointers, test read/write. bcs L52A9 branch if it's write. + jsr clrbuf2 ldy #$0F put real bitmap there + L529B lda BITMAP,y sta (A1L),y dey bpl L529B + jsr blockdo move temp buf to user buf jmp exitcard + L52A9 jsr blockdo move user buf to temp buf jsr setptr ldy #$0F move temp buf to bitmap. + L52B1 lda (A4L),y (pointer set by setptr) sta BITMAP,y dey bpl L52B1 + jmp exitcard formatflg .HS 00 not formatted yet @@ -297,8 +352,10 @@ exitcard lda RRAMWRAMBNK1 restore language card lda RRAMWRAMBNK1 pla get 80store bpl L52EA 80store wasn't on + sta SET80STORE enable 80store L52EA jmp bypass jump around passit + passit .HS 0000 bypass lda #noerr set up return to noerr sta passit @@ -310,6 +367,6 @@ ex1 sta passit+1 also used by blockwrite *-------------------------------------- RAMX.LEN .EQ *-RAMX.START MAN -SAVE USR/SRC/PRODOS.FX/PRODOS.S.RAMX -LOAD USR/SRC/PRODOS.FX/PRODOS.S +SAVE usr/src/prodos.fx/prodos.s.ramx +LOAD usr/src/prodos.fx/prodos.s ASM