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