BASIC:Use AUX Mem, CD ..

This commit is contained in:
burniouf 2022-03-27 14:59:32 +02:00
parent e5abc173c6
commit 60620b33f5
13 changed files with 488 additions and 313 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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