mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 03:32:12 +00:00
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
|
||||
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user