KMs & PMs Cleanup

This commit is contained in:
burniouf 2022-03-13 13:52:24 +01:00
parent 3e95bd27d7
commit cec2764d5c
26 changed files with 1637 additions and 1166 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -19,6 +19,7 @@ A2osX.QC.ROOT .BS 64
A2osX.QC.Start1 sei
ldx #$FF
txs
cli
bit RROMBNK1
>LDYAI A2osX.QC
@ -271,6 +272,6 @@ QC.FREE .EQ $1300-*
.EP
*--------------------------------------
MAN
SAVE USR/SRC/A2OSX.S.QC
LOAD USR/SRC/A2OSX.S
SAVE usr/src/a2osx.s.qc
LOAD usr/src/a2osx.s
ASM

View File

@ -17,15 +17,16 @@ NEW
TmpPtr1 .EQ $0 main & aux ZP
TmpPtr2 .EQ $2 main & aux ZP
*--------------------------------------
A2osX.KMLOAD .EQ $2000
A2osX.PMLOAD .EQ $2000
A2osX.LOGOLOAD .EQ $4000
A2osX.KMMAXLEN .EQ $6000
A2osX.PMMAXLEN .EQ $6000
A2osX.OpenBuff1 .EQ $8000 1024 Buffer for MLIOPEN01
A2osX.OpenBuff2 .EQ $8400 1024 Buffer for MLIOPEN02
A2osX.ReadBuff .EQ $8800 512 Buffer for MLIREAD01
Boot.Prefix .EQ $8A00 MLI.MAXPATH
LOGO.Filename .EQ $8A80 MLI.MAXPATH
KM.Filename .EQ $8B00 MLI.MAXPATH
Logo.Filename .EQ $8A80 MLI.MAXPATH
Sys.Prefix .EQ $8B00 MLI.MAXPATH
PM.Filename .EQ $8B80 MLI.MAXPATH
MLIONLINE01BUF .EQ $8C00 256
*--------------------------------------
* Kernel Stage 0
@ -37,12 +38,14 @@ A2osX.Init0 >LDYAI $2000
>LDYAI $1000
>STYA TmpPtr2
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
ldx /SYSTEM.END-$1F00
ldy #0
.1 lda (TmpPtr1),y
sta (TmpPtr2),y
iny
bne .1
inc TmpPtr1+1
inc TmpPtr2+1
dex
@ -76,6 +79,9 @@ A2osX.Init1.128 jsr MLI
ldx Boot.Prefix
.1 lda Boot.Prefix,x
sta Logo.Filename,x
sta Sys.Prefix,x
sta PM.Filename,x
sta A2osX.QC.B.BOOT,x
sta A2osX.QC.B.ROOT,x
dex
@ -140,15 +146,11 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV
.8 jsr PrintFYA
*--------------------------------------
A2osX.EnumKM >LDYAI MSG.KMENUM
jsr PrintFYA
jsr EnumKM
*--------------------------------------
A2osX.SetupQC lda RRAMWRAMBNK2
lda RRAMWRAMBNK2
ldx #0
.1 lda A2osX.QC.B.Start,x
.1 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx
sta $D100,x
lda A2osX.QC.B.Start+$100,x
sta $D200,x
@ -159,6 +161,10 @@ A2osX.SetupQC lda RRAMWRAMBNK2
lda RROMBNK1
*--------------------------------------
A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC
jsr PrintFYA
jsr EnumPM
*--------------------------------------
A2osX.MLIQuit >LDYAI MSG.INIT0OK
jsr PrintFYA
>DEBUGOA
@ -174,23 +180,16 @@ A2osX.Screen80 lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300
ldx Boot.Prefix
.1 lda Boot.Prefix,x
sta LOGO.Filename,x
dex
bne .1
ldx Boot.Prefix
ldy #0
.2 inx
iny
lda A2osX.LOGO,y
sta LOGO.Filename,x
sta Logo.Filename,x
cpy A2osX.LOGO
bne .2
stx LOGO.Filename
stx Logo.Filename
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
@ -387,34 +386,42 @@ DisableRamDRV php
sec
rts
*--------------------------------------
EnumKM.EPB .EQ $0D
EnumKM.EL .EQ $27
EnumPM.EPB .EQ $0D
EnumPM.EL .EQ $27
*--------------------------------------
EnumKM ldx #0
EnumPM ldx #0
ldy Boot.Prefix
.1 inx
lda SYS,x
sta Boot.Prefix+1,y
sta Sys.Prefix+1,y
sta PM.Filename+1,y
iny
cpx SYS
bne .1
sty Boot.Prefix
lda #Boot.Prefix
sty Sys.Prefix
sty PM.Filename
lda #Sys.Prefix
pha
lda /Boot.Prefix
lda /Sys.Prefix
pha
>LDYAI MSG.KMSYSDIR
>LDYAI MSG.PMSYSDIR
jsr PrintFYA
jsr MLI
.DA #MLISETPREFIX
.DA MLISETPREFIX02
bcs .19
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN01
bcc .10
pha
>LDYAI MSG.KMSYSDIR.KO
.19 pha
>LDYAI MSG.PMSYSDIR.KO
jsr PrintFYA
sec
rts
@ -428,13 +435,13 @@ EnumKM ldx #0
.DA MLIREAD01
bcs .98
lda #EnumKM.EPB
sta EnumKM.EC
lda #EnumPM.EPB
sta EnumPM.EC
>LDYAI A2osX.ReadBuff+4
>STYA EnumKM.BPTR
>STYA EnumPM.BPTR
.3 >LDYA EnumKM.BPTR
.3 >LDYA EnumPM.BPTR
>STYA TmpPtr1
lda (TmpPtr1)
@ -446,7 +453,7 @@ EnumKM ldx #0
lda (TmpPtr1)
and #$0F
cmp KM.PREFIX at least enough chars for KM.*?
cmp PM. at least enough chars for PM.*?
bcc .5 no, skip
ldy #$10 file type
@ -454,26 +461,26 @@ EnumKM ldx #0
cmp #$06 'BIN'?
bne .5 skip
ldy KM.PREFIX
ldy PM.
.4 lda (TmpPtr1),y KM.* ?
cmp KM.PREFIX,y
.4 lda (TmpPtr1),y PM.* ?
cmp PM.,y
bne .5
dey
bne .4
jsr LoadKM
jsr LoadPM
.5 lda EnumKM.BPTR
.5 lda EnumPM.BPTR
clc
adc #EnumKM.EL
sta EnumKM.BPTR
adc #EnumPM.EL
sta EnumPM.BPTR
bcc .6
inc EnumKM.BPTR+1
inc EnumPM.BPTR+1
.6 dec EnumKM.EC
.6 dec EnumPM.EC
bne .3
bra .2
@ -491,47 +498,46 @@ EnumKM ldx #0
.8 jsr MLI
.DA #MLICLOSE
.DA MLICLOSE01
rts
*--------------------------------------
EnumKM.EC .BS 1
EnumKM.BPTR .BS 2
*--------------------------------------
LoadKM ldx Boot.Prefix
bcs .99
.1 lda Boot.Prefix,x
sta KM.Filename,x
dex
bne .1
jsr MLI
.DA #MLISETPREFIX
.DA MLISETPREFIX01
ldy #$1c
.99 rts
*--------------------------------------
EnumPM.EC .BS 1
EnumPM.BPTR .BS 2
*--------------------------------------
LoadPM ldy #$1c
lda (TmpPtr1),y
sta LoadKM.VERSION
sta LoadPM.VERSION
iny
lda (TmpPtr1),y
sta LoadKM.MVERSION
sta LoadPM.MVERSION
ldx Boot.Prefix
ldx Sys.Prefix
lda (TmpPtr1)
and #$0F
tay
clc
adc Boot.Prefix
sta KM.Filename
adc sys.Prefix
sta PM.Filename
tax
.2 bit LoadKM.MVERSION
.2 bit LoadPM.MVERSION
bpl .6
cpy #8
bcs .3
lda LoadKM.Bits,y
bit LoadKM.MVERSION
lda LoadPM.Bits,y
bit LoadPM.MVERSION
beq .6
bra .4
.3 lda LoadKM.Bits-8,y
bit LoadKM.VERSION
.3 lda LoadPM.Bits-8,y
bit LoadPM.VERSION
beq .6
.4 lda (TmpPtr1),y
@ -539,17 +545,17 @@ LoadKM ldx Boot.Prefix
.HS 2C BIT ABS
.6 lda (TmpPtr1),y
sta KM.Filename,x
sta PM.Filename,x
dex
dey
bne .2
lda #KM.Filename
lda #PM.Filename
pha
lda /KM.Filename
lda /PM.Filename
pha
>LDYAI MSG.KMLOAD
>LDYAI MSG.PMLOAD
jsr PrintFYA
jsr MLI
@ -567,7 +573,7 @@ LoadKM ldx Boot.Prefix
bcs .98
jsr .9
jmp A2osX.KMLOAD
jmp A2osX.PMLOAD
.98 pha
jsr .9
@ -581,9 +587,9 @@ LoadKM ldx Boot.Prefix
.DA MLICLOSE02
.99 rts
*--------------------------------------
LoadKM.VERSION .BS 1
LoadKM.MVERSION .BS 1
LoadKM.Bits .HS 8040201008040201
LoadPM.VERSION .BS 1
LoadPM.MVERSION .BS 1
LoadPM.Bits .HS 8040201008040201
*--------------------------------------
.INB usr/src/shared/x.printf.s
*--------------------------------------
@ -599,26 +605,30 @@ MSG.CPU.KO .AZ "A2osX Requires At Least A 65C02 CPU.\n"
MSG.RAMDRV .AZ "Checking ProDOS RamDrive..."
MSG.RAMDRV.OK .AZ "Successfully Disabled.\n"
MSG.RAMDRV.KO0 .AZ "Not Detected.\n"
MSG.RAMDRV.KO1 .AZ "Uninstall Failed !!!\n"
MSG.RAMDRV.KO1 .AZ "Uninstall Failed.\n"
MSG.BOOTPREFIX .AZ "Boot Prefix:%S\n"
MSG.KMENUM .AZ "Looking For Kernel Modules...\n"
MSG.KMSYSDIR .AZ "SYS dir is %S\n"
MSG.KMSYSDIR.KO .AZ "***Error : $%h\n"
MSG.KMLOAD .AZ "***Loading KM : %S\n"
MSG.PMENUM .AZ "Looking For ProDOS Modules...\n"
MSG.PMSYSDIR .AZ "SYS dir is %S\n"
MSG.PMSYSDIR.KO .AZ "***Error : $%h\n"
MSG.PMLOAD .AZ "***Loading PM : %S\n"
MSG.INIT0OK .AZ "A2osX[Stage0]:Complete.\n"
*--------------------------------------
MLIGETPREFIX01 .DA #1
MLIGETPREFIX01
MLISETPREFIX01 .DA #1
.DA Boot.Prefix
*--------------------------------------
MLISETPREFIX02 .DA #1
.DA Sys.Prefix
*--------------------------------------
MLIONLINE01 .DA #2
* .DA #0
.DA #$B0 S3D2
.DA MLIONLINE01BUF
*--------------------------------------
MLIOPEN00 .DA #3 For DIR listing
.DA LOGO.Filename
.DA Logo.Filename
.DA A2osX.OpenBuff1
.BS 1
MLIREAD00 .DA #4
@ -630,7 +640,7 @@ MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
MLIOPEN01 .DA #3 For DIR listing
.DA Boot.Prefix
.DA Sys.Prefix
.DA A2osX.OpenBuff1
.BS 1
MLIREAD01 .DA #4
@ -642,13 +652,13 @@ MLICLOSE01 .DA #1
.BS 1
*--------------------------------------
MLIOPEN02 .DA #3
.DA KM.Filename
.DA PM.Filename
.DA A2osX.OpenBuff2
.BS 1
MLIREAD02 .DA #4
.BS 1
.DA A2osX.KMLOAD Load address for KMs
.DA A2osX.KMMAXLEN Maxlen of KM
.DA A2osX.PMLOAD Load address for PMs
.DA A2osX.PMMAXLEN Maxlen of PM
.BS 2
MLICLOSE02 .DA #1
.BS 1
@ -661,7 +671,7 @@ MLIQUIT01 .DA #4
*--------------------------------------
A2osX.LOGO >PSTR "A2osX.logo"
SYS >PSTR "sys/"
KM.PREFIX >PSTR "KM."
PM. >PSTR "PM."
*--------------------------------------
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
@ -672,15 +682,16 @@ PALETTE.AUX .HS 00.01.02.03.04.05.06.07
.HS 08.09.0A.0B.0C.0D.0E.0F
*--------------------------------------
.EP
.LIST ON
SYSTEM.END .EQ *
.LIST OFF
*--------------------------------------
A2osX.QC.B.Start
A2osX.QC.B.BOOT .EQ *+4
A2osX.QC.B.ROOT .EQ *+4+64
.INB usr/src/a2osx.s.qc
.LIST ON
SYSTEM.END .EQ *
.LIST OFF
*--------------------------------------
MAN
SAVE USR/SRC/A2OSX.S
SAVE usr/src/a2osx.s
ASM

View File

@ -12,32 +12,31 @@ BS.ResetCSWKSW pha
sta ZP.KSW+1
pla
rts
*--------------------------------------
BS.SetState0 ldx #$00
jsr BS.SetState
lda ZP.KSW+1
cmp GP.VDOSI+1
bne L9A26
beq BS.SetCSWKSW2VDOS
jmp BS.SetCSWKSW2VDOS
L9A26 lda ZP.CSW+1
lda ZP.CSW+1
cmp GP.VDOSO+1
beq BS.SetCSWKSW2VDOS
bne BS.SaveCSWKSW
*--------------------------------------
BS.IO.OUT cmp X9F65
bne L9A54
stx GP.PREGX
tsx
lda $103,x
cmp #$12
cmp #$12 From AS rom: TRACE
bne L9A6E
lda $104,x
cmp #$D8
cmp #$D8 jsr from $D810, then JSR MON.COUT
bne L9A6E
ldx #$04
@ -81,6 +80,7 @@ L9A74 jsr BS.ResetCSWKSW
sta AS.TRCFLG
L9A8B lda #$8D
BS.SaveCSWKSW pha
lda ZP.KSW+1
sta GP.VECTIN+1
@ -104,7 +104,7 @@ BS.SetCSWKSW2VDOS
sta ZP.KSW+1
pla
rts
*--------------------------------------
BS.IO.IN bit GP.EXECACTV
bpl L9AC5
@ -142,11 +142,12 @@ BS.ERROUT sta GP.ERRCODE
php
lda #$0F
sta MLI.LEVEL
lda #$00
sta GP.IFILACTV
sta GP.OFILACTV
sta GP.PFXACTV
sta GP.MLICF.REFNUM
stz GP.IFILACTV
stz GP.OFILACTV
stz GP.PFXACTV
stz GP.MLICF.REFNUM
lda #MLI.C.CLOSE
jsr GP.GOSYSTEM
bcs L9B27
@ -154,9 +155,8 @@ BS.ERROUT sta GP.ERRCODE
jsr LA004
bcs L9B27
lda #$00
sta MLI.LEVEL
sta GP.MLICF.REFNUM
stz MLI.LEVEL
stz GP.MLICF.REFNUM
lda #MLI.C.FLUSH
jsr GP.GOSYSTEM
@ -192,8 +192,7 @@ L9B4D ldx AS.REMSTK
L9B53 lda #$03
jmp AS.BITERRFLG
L9B58 lda #$00
sta AS.ERRNUM
L9B58 stz AS.ERRNUM
lda #$A3
sta X9F65
jsr AS.NORMAL
@ -206,6 +205,7 @@ L9B58 lda #$00
BS.IO.IN0 jsr BS.SaveAXY
bit GP.PFXACTV
bpl L9B7E
jmp BS.IO.IN.CAT
L9B7E bit GP.IFILACTV
@ -296,6 +296,7 @@ L9C01 ldx #$00
L9C0E lda (ZP.BASL),y
jmp (ZP.KSW)
L9C13 jmp BS.ERROUT
BS.IO.IN.FILE lda ZP.PROMPT
@ -395,12 +396,8 @@ L9C95 cmp #$BE
jsr BS.ReadDirEnt
bcs L9D1F
lda GP.MLIRW.REFNUM
lsr
ror
ror
ror
tax
jsr BS.GetFTableIdx
lda XBC12
sta XBC5A,x
lda XBC13
@ -416,10 +413,13 @@ L9CD3 lda #$A2
L9CDF lda GP.CATFLAG
beq L9D22
bmi L9CF9
ldx #$00
dec GP.CATFLAG
beq L9CD3
jsr BS.LINEBUFCLR80
ldx #$10
jsr BS.PRINTERRMSGX
@ -431,9 +431,10 @@ L9CF9 cmp #$FF
bne L9D1C
dec GP.CATFLAG
lda #$00
sta GP.MLIRW.COUNT
sta GP.MLIRW.COUNT+1
stz GP.MLIRW.COUNT
stz GP.MLIRW.COUNT+1
lda #MLI.C.READ
jsr GP.GOSYSTEM
jsr LB157
@ -452,12 +453,9 @@ L9D1F jmp BS.ERROUT
L9D22 lda #$FF
sta XBC16
lda GP.MLIRW.REFNUM
lsr
ror
ror
ror
tax
jsr BS.GetFTableIdx
lda XBC5A,x
sta XBC12
lda XBC5B,x
@ -498,8 +496,8 @@ BS.IO.IN.CAT cmp #$DD
L9D72 lda GP.PREGA
sta (ZP.BASL),y
lda #$00
sta GP.PFXACTV
stz GP.PFXACTV
ldx BS.CMDBUF.LEN
L9D7F lda BS.CMDBUF.LEN,x
@ -518,9 +516,9 @@ BS.Setup4readEFBytesAt200
sta GP.MLIRW.DATAPTR+1
lda #$EF
sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1
sta GP.MLIRW.DATAPTR
stz GP.MLIRW.COUNT+1
stz GP.MLIRW.DATAPTR
rts
BS.VSYSO jsr BS.SaveAXY
@ -614,9 +612,6 @@ BS.IO.OUT.TRACE pha
bcs L9EBA
L9E46 pla
nop
nop
nop
ldx GP.PREGX
bit GP.OFILACTV
bpl L9E70
@ -762,10 +757,13 @@ L9F2E lda #$4A
L9F32 tya
jmp AS.EXECSTMT
lda #$00
sta AS.ERRNUM
tya
bne L9EF0
brk
* UNREACHABLE CODE ????
* lda #$00
* sta AS.ERRNUM
* tya
* bne L9EF0
L9F3D jsr BS.ResetCSWKSW
lda #$A3
@ -805,12 +803,12 @@ BS.RestoreAXY lda GP.PREGA
BS.SetState stx GP.STATE
ldy #$00
L9F7F lda BS.SYSIOVECTS,x
.1 lda BS.SYSIOVECTS,x
sta GP.VSYSO,y
inx
iny
cpy #$04
bne L9F7F
bne .1
rts
@ -826,15 +824,15 @@ BS.PRINTERRX jsr BS.PRINTERRMSGX
BS.LINEBUFOUT ldx #$00
L9FA3 lda IO.LINEBUF+1,x
.1 lda IO.LINEBUF+1,x
jsr BS.COUT
inx
cpx BS.CATWIDTH
bcc L9FA3
bcc .1
BS.CROUT lda #$8D
BS.COUT jmp MON.COUT
*--------------------------------------
BS.PRINTERRMSGX ldy #$00
clc
sty GP.INPTR
@ -878,7 +876,7 @@ L9FED inx
and #$0F
clc
rts
*--------------------------------------
BS.WriteTBUF256 lda #$00
ldy #$01
bne LA00B
@ -900,10 +898,9 @@ LA00B sta GP.MLIRW.COUNT
sty GP.MLIRW.COUNT+1
lda #MLI.C.WRITE
jsr GP.GOSYSTEM
pha
lda #$00
sta GP.TBUFPTR
pla
stz GP.TBUFPTR
bcs LA020
LA01F clc
@ -922,14 +919,14 @@ LA021 jsr BS.KW.01
sta XBBD9
lda AS.STRINGSTART+1
sta BS.MEMSIZE+1
lda #$00
sta BS.MEMSIZE
jsr LA089
jsr LA089 Z
LA047 rts
BS.KW.01 lda #$00
sta BS.TXTTAB
BS.KW.01 stz BS.TXTTAB
lda #$03
sta XBBD9
lda AS.HIMEM+1
@ -1281,10 +1278,11 @@ LA29B pla
LA29D rts
LA29E pla
LA29F sta GP.SBUFADR+1
sta XBBEE,x
lda #$00
sta GP.SBUFADR
stz GP.SBUFADR
lda XBBF6,x
sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.SETBUF

View File

@ -1,6 +1,8 @@
NEW
AUTO 3,1
*--------------------------------------
BS.WHICHBITS .HS 8040201008040201
BS.GETBUFR jsr LA1FB
bcs LA304
pha
@ -217,7 +219,7 @@ LA3FD lda (ZP.A2L),y
sta (ZP.A2L),y
LA410 rts
*--------------------------------------
LA411 jsr LA021
bcs LA47F
@ -308,7 +310,7 @@ LA480 lda BS.BAS.HDR
LA4D0 clc
rts
*--------------------------------------
LA4D2 jsr BS.LINEBUFCLR80
lda #$A2
sta IO.LINEBUF
@ -322,7 +324,38 @@ LA4E0 lda DIRENTBUF,y
dey
bne LA4E0
sty BS.TMPBUF4+2
.DO LOWERCASE=1
lda DIRENTBUF+$1D
bpl .18
lda DIRENTBUF
and #$0f
tay
.10 cpy #8
bcs .13
lda DIRENTBUF+$1D
and BS.WHICHBITS,y
beq .15
bne .14
.13 lda DIRENTBUF+$1C
and BS.WHICHBITS-8,y
beq .15
.14 lda IO.LINEBUF+1,y
eor #$20
sta IO.LINEBUF+1,y
.15 dey
bne .10
.18 .FIN
stz BS.TMPBUF4+2
lda DIRENTBUF.TYPE
ldx #$0E
@ -347,6 +380,7 @@ LA508 lda BS.PRODOSTYPES.ASC,y
dey
dex
bpl LA508
pla
bit BS.CATWIDTH
bvc LA561
@ -566,7 +600,7 @@ LA67E sta IO.LINEBUF+1,x
bpl LA67E
rts
*--------------------------------------
BS.DOSCMD lda #$FF
sta GP.XCNUM
lda #$20
@ -575,10 +609,10 @@ BS.DOSCMD lda #$FF
sta BS.GetCharMax
jsr BS.GetKWInCmdBuf
lda BS.CMDBUF
cmp #$41
cmp #'A'
bcs LA6A5
eor #$2D
eor #'-'
beq LA6A5
LA6A2 jmp BS.ERR10
@ -595,11 +629,11 @@ LA6A5 jsr BS.IsIntCmdMTR
jsr MON.CLREOL
jsr BS.CROUT
LA6BA lda #$00
sta GP.FoundBITS
sta GP.FoundBITS+1
sta BS.CMDBUF
sta MLI.PATHBUF
LA6BA stz GP.FoundBITS
stz GP.FoundBITS+1
stz BS.CMDBUF
stz MLI.PATHBUF
lda GP.VDEFSLT
sta GP.ParamS
lda GP.VDEFDRV
@ -629,14 +663,14 @@ LA6F8 pla
plp
beq LA744
cmp #$2C
cmp #','
bne LA703
jmp LA795
LA703 cmp #$2F
LA703 cmp #'/'
beq LA70B
cmp #$41
cmp #'A'
bcc LA73D
LA70B dex
@ -648,7 +682,7 @@ LA70B dex
jsr LAA2D
dey
sty BS.CMDBUF.LEN
lda #$01
lda #CMDBITS0.FN1
sta GP.FoundBITS
LA723 lda BS.CMDBUF.LEN,y
@ -681,11 +715,13 @@ LA747 jsr BS.GetKWInCmdBuf
beq LA79A
jsr BS.TMPBUF3Reset
sty XBC08
stz XBC08
ldy #$13
sty XBC09
ldy #$40
sty GP.FoundBITS
jsr LA96E
bcs LA76F
@ -783,9 +819,9 @@ LA7ED lda GP.FoundBITS+1
bcs LA806
lda #$00
sta BS.CMDBUF.LEN
sta BS.CMDBUF
stz BS.CMDBUF.LEN
stz BS.CMDBUF
lda #$01
ora GP.FoundBITS
sta GP.FoundBITS
@ -796,10 +832,13 @@ LA806 jsr BS.GetVolAtSxDy
LA80B lda GP.XCNUM
asl
tax
lda BS.KW.JMP,x
sta BS.KW.JMPADDR
lda BS.KW.JMP+1,x
sta BS.KW.JMPADDR+1
* >DEBUG
clc
txa
beq LA844
@ -833,7 +872,7 @@ LA844 jmp (BS.KW.JMPADDR)
BS.ERR10 lda #$10
LA849 sec
rts
*--------------------------------------
BS.GetVolAtSxDy lda GP.ParamS
asl
asl
@ -847,10 +886,11 @@ BS.GetVolAtSxDy lda GP.ParamS
pla
ror
sta GP.MLIMRKEOFBUF.REFNUM
lda #$01
sta GP.SBUFADR
lda #$02
sta GP.SBUFADR+1
ldx #$01
ldy #$02
jsr BS.SetSBUFADRXY
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcs LA849
@ -936,13 +976,15 @@ LA8F5 rts
LA8F6 jsr BS.TMPBUF3Reset
ldy #$09
jsr BS.ToUpper
LA8FB cmp BS.KW.OPT,y
beq LA935
dey
bpl LA8FB
cmp #$54
cmp #'T'
beq LA90A
LA907 jmp BS.ERR10
@ -953,8 +995,9 @@ LA90A lda #$04
ora GP.FoundBITS
sta GP.FoundBITS
lda #$00
sta XBC08
stz XBC08
lda #$12
sta XBC09
jsr BS.GetCharSpaceSep
@ -1005,7 +1048,7 @@ LA955 lda BS.KW.OPT.PBITSHI,y
beq LA984
LA96E stx GP.INPTR
jsr LAA6A
jsr BS.GetDecDigit
bcc LA97A
bmi LA9C1
@ -1022,7 +1065,7 @@ LA984 jsr BS.GetCharSpaceSep
beq LA9BE
LA989 stx GP.INPTR
jsr LAABC
jsr BS.GetHexDigit
bcc LA995
bmi LA9C1
@ -1103,7 +1146,7 @@ LA9FC lda #$0E
ldx GP.INPTR
clc
rts
*--------------------------------------
BS.GetPathInPathBuf
jsr BS.GetChar UC
sta MLI.PATHBUF,y
@ -1122,7 +1165,7 @@ BS.GetPathInPathBuf
ora #$00
rts
*--------------------------------------
BS.GetKWInCmdBuf
ldx #$00
ldy #$00
@ -1130,7 +1173,7 @@ BS.GetKWInCmdBuf
LAA2D jsr BS.GetChar UC
sta BS.CMDBUF,y
iny
cmp #$2C
cmp #','
beq LAA45
cmp #$20
@ -1144,33 +1187,42 @@ LAA2D jsr BS.GetCharUC
LAA45 ora #$00
rts
*--------------------------------------
BS.GetCharSpaceSep
lda #$20
sta BS.GetCharSep
jsr BS.GetChar UC
cmp #$2C
cmp #','
beq LAA57
cmp #$0D
LAA56 clc
LAA57 rts
*--------------------------------------
BS.GetCharUC lda IO.LINEBUF,x
and #$7F
cmp #$61
bcc LAA63
bcc .1
and #$5F
LAA63 inx
.1 inx
cmp BS.GetCharSep
beq BS.GetCharUC
rts
*--------------------------------------
BS.GetChar lda IO.LINEBUF,x
and #$7F
LAA6A cmp #$30
inx
cmp BS.GetCharSep
beq BS.GetChar
rts
*--------------------------------------
BS.GetDecDigit cmp #$30
bcc LAA72
cmp #$3A
@ -1225,8 +1277,8 @@ LAAA2 pla
LAAB8 lda #$FF
sec
LAABB rts
LAABC cmp #$30
*--------------------------------------
BS.GetHexDigit cmp #$30
bcc LAACC
cmp #$3A
@ -1243,6 +1295,7 @@ LAACC sec
rts
LAAD0 sbc #$06
LAAD2 and #$0F
ldx #$03
@ -1255,16 +1308,16 @@ LAAD6 jsr BS.TMPBUF3x2
ora BS.TMPBUF4
sta BS.TMPBUF4
rts
*--------------------------------------
BS.TMPBUF3x2 asl BS.TMPBUF4
rol BS.TMPBUF4+1
rol BS.TMPBUF4+2
rts
*--------------------------------------
BS.IsIntCmd ldx #$1F
stx GP.XCNUM
lda BS.CMDBUF
eor #$2D
eor #'-'
bne LAB03
inc GP.XCNUM
@ -1282,7 +1335,9 @@ LAB08 lda BS.KW.LEN,x
dec GP.XLEN
LAB13 tax
LAB14 lda BS.CMDBUF,y
jsr BS.ToUpper
cmp BS.KW.TABLE,x
bne LAB33
@ -1308,16 +1363,15 @@ LAB33 ldy GP.XLEN
dec GP.XCNUM
sec
jmp GP.EXTRNCMD
BS.TMPBUF3Reset ldy #$00
sty BS.TMPBUF4
sty BS.TMPBUF4+1
sty BS.TMPBUF4+2
*--------------------------------------
BS.TMPBUF3Reset stz BS.TMPBUF4
stz BS.TMPBUF4+1
stz BS.TMPBUF4+2
rts
*--------------------------------------
BS.KW.APPEND lda GP.FITYPE
cmp #$FC
beq BS.KW.02
beq BS.KW.RUN
cmp #$06
beq LABA3
@ -1338,12 +1392,13 @@ LAB63 cmp #$FF
LAB6F pha
jsr LB562
jsr LB36B
lda #$00
sta GP.ParamA
sta MLI.MEMTABL+19
sta MLI.MEMTABL+20
sta MLI.MEMTABL+21
sta MLI.MEMTABL+22
stz GP.ParamA
stz MLI.MEMTABL+19
stz MLI.MEMTABL+20
stz MLI.MEMTABL+21
stz MLI.MEMTABL+22
lda #$01
sta MLI.MEMTABL+23
lda #$20
@ -1363,7 +1418,7 @@ LABA6 sec
jsr MON.IIGSID
bcs LABA3
jmp LB099
jmp BS.QUIT.IIgs
BS.KW.X05 jsr LA411
lda AS.HIMEM+1
@ -1381,9 +1436,9 @@ BS.KW.X05 jsr LA411
lda #$00
beq LABE6
BS.KW.02 lda #$00
sta GP.IFILACTV
sta AS.ERRNUM
BS.KW.RUN stz GP.IFILACTV
stz AS.ERRNUM
lda GP.FoundBITS
lsr
bcc LABF4
@ -1524,7 +1579,7 @@ LACB6 lda GP.FoundBITS+1
sta AS.TXTPTR+1
clc
LACD9 rts
*--------------------------------------
BS.KW.STORE bcc LACFE
lda #$FC
@ -1550,13 +1605,16 @@ LACFE lda #$02
sec
sbc AS.PGRMSTART
tax
sta GP.SBUFADR
* sta GP.SBUFADR
lda AS.PGRMEND+1
sbc AS.PGRMSTART+1
tay
sta GP.SBUFADR+1
lda #$00
sta GP.SBUFADR+2
* sta GP.SBUFADR+1
* lda #$00
* sta GP.SBUFADR+2
jsr BS.SetSBUFADRXY0
lda AS.PGRMSTART
sta GP.MLIRW.DATAPTR
lda AS.PGRMSTART+1
@ -1585,12 +1643,12 @@ LAD47 rts
LAD48 stx GP.FIAUXTYPE
sta GP.FIAUXTYPE+1
jmp BS.SetFileInfoNoDate
BS.KW.CREATE lda #$00
sta GP.CRAUXTYPE
sta GP.CRAUXTYPE+1
*--------------------------------------
BS.KW.CREATE stz GP.CRAUXTYPE
stz GP.CRAUXTYPE+1
>DEBUG
lda GP.FoundBITS
and #$04
and #CMDBITS0.T
bne BS.CreateFileOrDir
lda #$0F

View File

@ -163,12 +163,9 @@ LAEF7 ldx GP.XCNUM
and #$30
beq LAF22
lda GP.MLIRW.COUNT
sta GP.SBUFADR
lda GP.MLIRW.COUNT+1
sta GP.SBUFADR+1
lda #$00
sta GP.SBUFADR+2
ldx GP.MLIRW.COUNT
ldy GP.MLIRW.COUNT+1
jsr BS.SetSBUFADRXY0
lda #MLI.C.SETEOF
jsr GP.GOSYSTEM
@ -176,6 +173,7 @@ LAF22 lda #MLI.C.WRITE
LAF24 jsr GP.GOSYSTEM
bcs LAF38
bit GP.FoundBITS+1
bvs LAF35
@ -224,6 +222,7 @@ LAF4E jsr LA411
lda #MLI.C.GETMARK
jsr GP.GOSYSTEM
lda #MLI.C.SETEOF
jsr GP.GOSYSTEM
bcs LAF95
@ -308,6 +307,7 @@ BS.KW.IN lda #$00
BS.KW.PR lda #$02
sta BS.GetCharSep
lda #$08
LB018 ora GP.ParamINPR
asl
tax
@ -372,30 +372,29 @@ LB081 lda (ZP.PCL),y
LB087 lda #$03
sec
rts
*--------------------------------------
BS.KW.BYE jsr LB562
jsr LB36B
lda #$65
jsr MLI
.DA #MLI.C.QUIT
.DA GP.MLIRW
LB099 jsr MLI
*--------------------------------------
BS.QUIT.IIgs jsr MLI
.DA #MLI.C.QUIT
.DA BS.MLIQUIT2.Param
BS.MLIQUIT2.Param
.DA #4
.DA .1
.1 .DA #4
.DA #$EE
.DA MLI.PATHBUF
.DA #0
.DA 0
*--------------------------------------
BS.KW.CAT lda #$27
bne LB0AC
.HS 2C BIT ABS
BS.KW.CATALOG lda #$4F
LB0AC sta BS.CATWIDTH
sta BS.CATWIDTH
lda GP.FoundBITS
and #$05
lsr
@ -422,8 +421,6 @@ LB0C1 jsr LB1BA
jsr BS.CROUT
lda XBC14
ora XBC15
nop
nop
LB0E8 jsr LB241
bcs LB113
@ -447,8 +444,7 @@ LB0FD lda IO.KBD
bit IO.KSTROBE
bcs LB113
LB10E nop
lda #$FF
LB10E lda #$FF
bne LB0E8
LB113 jsr BS.FileClose
@ -463,7 +459,7 @@ LB113 jsr BS.FileClose
clc
LB127 rts
*--------------------------------------
LB128 jsr BS.LINEBUFCLR80
ldx #$01
ldy DIRENTBUF.STNL
@ -491,10 +487,13 @@ LB142 lda DIRENTBUF,y
sta IO.LINEBUF
rts
LB157 lda #$18
sta GP.SBUFADR
lda #$BC
sta GP.SBUFADR+1
LB157 ldx #BS.CMDBUF
* sta GP.SBUFADR
ldy /BS.CMDBUF
* sta GP.SBUFADR+1
jsr BS.SetSBUFADRXY
lda MLI.DEVNUM
sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.ONLINE
@ -535,7 +534,7 @@ LB157 lda #$18
jsr BS.AXDEC2LINEBUFY
clc
rts
*--------------------------------------
LB1BA lda #$01
ldx #$0F
ldy GP.STTYPE
@ -553,8 +552,8 @@ BS.ReadDirEnt lda #$59
sta GP.MLIRW.DATAPTR+1
lda #$2B
sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1
stz GP.MLIRW.COUNT+1
lda #MLI.C.READ
jsr GP.GOSYSTEM
bcs LB203
@ -569,9 +568,9 @@ LB1EA lda $27C,x
sta GP.MLIRW.COUNT
lda #$01
sta XBC16
lda #$00
sta GP.SBUFADR+1
sta GP.SBUFADR+2
stz GP.SBUFADR+1
stz GP.SBUFADR+2
LB203 rts
BS.CheckFTypeXAccessA
@ -612,7 +611,7 @@ LB239 lda #$0D
LB23D lda #$0A
sec
rts
*--------------------------------------
LB241 lda GP.SBUFADR+1
and #$FE
sta GP.SBUFADR+1
@ -650,13 +649,14 @@ LB268 adc #$04
lda DIRENTBUF
and #$F0
beq LB241
* BUG on DEC word
dec XBC14
bne LB28D
dec XBC15
LB28D rts
BS.JMP.XTRNADDR jmp (GP.XTRNADDR)
BS.KW.EXEC jsr BS.CheckFilename
@ -666,10 +666,9 @@ BS.KW.EXEC jsr BS.CheckFilename
bpl LB2BC
sta GP.MLIMRKEOFBUF.REFNUM
lda #$00
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
jsr BS.ZeroSBUFADR
lda #MLI.C.SETMARK
jsr GP.GOSYSTEM
bcs LB2B5
@ -704,8 +703,8 @@ LB2D3 sec
LB2D5 jsr LA1F9
bcs LB2D3
lda #$00
sta GP.SBUFADR
stz GP.SBUFADR
lda XBBE3
sta GP.SBUFADR+1
ldx GP.OPENCNT
@ -738,8 +737,9 @@ LB2FB tya
LB30D pla
LB30E sta XBBE3
sta GP.OSYSBUF+1
lda #$00
sta MLI.LEVEL
stz MLI.LEVEL
lda #MLI.C.OPEN
jsr GP.GOSYSTEM
bcc LB327
@ -754,6 +754,7 @@ LB327 ldx GP.OSYSBUF+1
stx XBBF6
lda GP.OREFNUM
sta XBBFE
LB333 sta GP.MLIRW.REFNUM
sta GP.MLIMRKEOFBUF.REFNUM
sta GP.NEWLREF
@ -803,8 +804,8 @@ BS.KW.X10 bcs LB3B7
LB38D clc
rts
lda #$00
beq LB39F
* lda #$00
* beq LB39F
BS.KW.FLUSH lda GP.FoundBITS
and #$01
@ -918,6 +919,7 @@ LB443 lda #$00
lda GP.OREFNUM
sta XBBF7,x
inc GP.OPENCNT
LB45B asl
asl
asl
@ -1056,8 +1058,8 @@ LB515 sta GP.MLICF.REFNUM
pla
sta XBBF6,y
LB53F lda #$00
sta MLI.LEVEL
LB53F stz MLI.LEVEL
lda #MLI.C.CLOSE
jsr GP.GOSYSTEM
bcs LB572
@ -1066,11 +1068,9 @@ LB53F lda #$00
bit GP.EXECFILE
bpl LB55E
pha
lda #$00
sta GP.EXECACTV
sta GP.EXECFILE
pla
stz GP.EXECACTV
stz GP.EXECFILE
rts
LB55E dec GP.OPENCNT
@ -1086,8 +1086,8 @@ LB562 ldx GP.OPENCNT
LB572 rts
LB573 lda #$00
sta GP.MLICF.REFNUM
LB573 stz GP.MLICF.REFNUM
lda #$07
sta MLI.LEVEL
lda #MLI.C.CLOSE
@ -1118,9 +1118,10 @@ LB592 lda GP.FoundBITS+1
LB5AD lda #$EF
sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1
sta GP.MLIRW.DATAPTR
stz GP.MLIRW.COUNT+1
stz GP.MLIRW.DATAPTR
lda #$02
sta GP.MLIRW.DATAPTR+1
lda #$7F
@ -1154,12 +1155,12 @@ LB5F1 lda XBBFF
sta BS.TMPBUF4
lda XBC00
sta BS.TMPBUF4+1
lda #$00
sta BS.TMPBUF4+2
sta BS.TMPBUF4+3
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
stz BS.TMPBUF4+2
stz BS.TMPBUF4+3
jsr BS.ZeroSBUFADR
LB60E lsr GP.ParamR+1
ror GP.ParamR
ldx #$00
@ -1232,8 +1233,9 @@ LB67C sta GP.MLIRW.DATAPTR
stx GP.NLINEMASK
lda #$02
sta GP.MLIRW.DATAPTR+1
lda #$00
sta GP.MLIRW.COUNT+1
stz GP.MLIRW.COUNT+1
lda #MLI.C.NEWLINE
jsr GP.GOSYSTEM
bcs LB69B
@ -1253,10 +1255,8 @@ LB69C lda #$59
clc
beq LB696
lda #$00
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
jsr BS.ZeroSBUFADR
lda #MLI.C.SETMARK
jsr GP.GOSYSTEM
bcs LB6CA
@ -1333,8 +1333,7 @@ BS.KW.X08 jsr BS.CheckFilename
LB732 sec
rts
LB734 lda #$00
sta GP.MLIRW.DATAPTR
LB734 stz GP.MLIRW.DATAPTR
lda #$02
sta GP.MLIRW.DATAPTR+1
jsr LB6D0
@ -1397,12 +1396,7 @@ LB78A ldx GP.ParamL
ldy GP.FIAUXTYPE+1
LB79D txa
pha
lda GP.MLIRW.REFNUM
lsr
ror
ror
ror
tax
jsr BS.GetFTableIdx
pla
sta XBC5A,x
sta XBBFF
@ -1485,11 +1479,10 @@ BS.GetFileInfo lda #$0A
bne LB858
BS.SetFileInfoNoDate
lda #$00
sta GP.FIMDATE
sta GP.FIMDATE+1
sta GP.FICDATE
sta GP.FICDATE+1
stz GP.FIMDATE
stz GP.FIMDATE+1
stz GP.FICDATE
stz GP.FICDATE+1
BS.SetFileInfo lda #$07
sta GP.SSGINFO
@ -1500,6 +1493,37 @@ LB858 jmp GP.GOSYSTEM
BS.JMP.GP.VSYSO jmp (GP.VSYSO)
BS.JMP.GP.VSYSI jmp (GP.VSYSI)
*--------------------------------------
BS.ToUpper cmp #'a'
bcc .9
cmp #'z'+1
bcs .9
eor #$20
.9 rts
*--------------------------------------
BS.GetFTableIdx lda GP.MLIRW.REFNUM
lsr
ror
ror
ror
tax
rts
*--------------------------------------
BS.SetSBUFADRXY0
stz GP.SBUFADR+2
BS.SetSBUFADRXY stx GP.SBUFADR
sty GP.SBUFADR+1
rts
*--------------------------------------
BS.ZeroSBUFADR lda #0
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
rts
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.c
LOAD usr/src/basic.fx/basic.s

View File

@ -1,5 +1,10 @@
NEW
AUTO 3,1
*--------------------------------------
.LIST ON
BS.FREESPACE .EQ $B861-*
.BS BS.FREESPACE
.LIST OFF
*--------------------------------------
BS.SYSIOVECTS .DA BS.IO.OUT
.DA BS.IO.IN
@ -7,8 +12,8 @@ BS.SYSIOVECTS .DA BS.IO.OUT
.DA BS.IO.IN0
.DA BS.IO.OUT.CAT
.DA BS.IO.IN0
BS.VSYSO.LO .DA #$A7
BS.VSYSO.HI .DA #$9D
BS.VSYSO.LO .DA #BS.VSYSO
BS.VSYSO.HI .DA /BS.VSYSO
BS.ParamLByte .DA #$A0
.DA #$AC
.DA #$AF
@ -125,15 +130,15 @@ BS.KW.LEN .DA #$BF
.DA #$B5
.DA #$D8
BS.KW.TABLE .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND"
BS.KW.JMP .DA BS.JMP.XTRNADDR
BS.KW.JMP .DA BS.JMP.XTRNADDR $00
.DA BS.KW.PR
.DA BS.KW.IN
.DA BS.KW.CAT
.DA BS.KW.01
.DA BS.KW.BYE
.DA BS.KW.02
.DA BS.KW.RUN
.DA BS.KW.BRUN
.DA BS.KW.EXEC
.DA BS.KW.EXEC $10
.DA BS.KW.RESTORE
.DA BS.KW.LOCK
.DA BS.KW.03
@ -141,7 +146,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.STORE
.DA BS.KW.BLOAD
.DA BS.KW.BSAVE
.DA BS.KW.X05
.DA BS.KW.X05 $20
.DA BS.KW.X06
.DA BS.KW.FLUSH
.DA BS.KW.X07
@ -149,7 +154,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.X08
.DA BS.KW.X09
.DA BS.KW.CREATE
.DA BS.KW.DELETE
.DA BS.KW.DELETE $30
.DA BS.KW.PREFIX
.DA BS.KW.RENAME
.DA BS.KW.UNLOCK
@ -157,7 +162,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.CATALOG
.DA BS.KW.LOAD
.DA BS.KW.CLOSE
.DA BS.KW.APPEND
.DA BS.KW.APPEND $40
BS.KW.PBITS .DA $8040
.DA $8040
.DA $0495

View File

@ -279,11 +279,9 @@ LDR.GFINFO.P.PATHBUF
LDR.GETSETPFX1.P
.DA #1
LDR.GETSETPFX1.P.BUF
.DA LDR.GETSETPFX1.SLASHLEN
LDR.GETSETPFX1.SLASHLEN
.DA #1
.DA LDR.GETSETPFX1.SLASH
LDR.GETSETPFX1.SLASH
.DA #1
.AS "/"
LDR.STARTUP.LEN1
.DA #0
@ -295,12 +293,11 @@ LDR.ONLINE.P.BUF
.DA MLI.PATHBUF+1
LDR.GETSETPFX2.P
.DA #1
LDR.GETSETPFX2.P.BUF
.DA MLI.PATHBUF
LDR.PFXLEN .DA #0
LDR.UNABLE .AS -"*** UNABLE TO EXECUTE BASIC SYSTEM ***"
LDR.PRODOSBASIC .AS -" PRODOS BASIC 1.5 "
LDR.PRODOSBASIC .AS -" PRODOS BASIC FX"
LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92"
.BS $2400-*
*--------------------------------------

View File

@ -1,9 +1,36 @@
NEW
AUTO 3,1
.LIST OFF
.OP 6502
.OP 65c02
.OR $2000
.TF BASIC.FX,TSYS
.TF BASIC.SYSTEM,TSYS
*--------------------------------------
.MA DEBUG
:1 bit $C000
bpl :1
sta $C010
.EM
*--------------------------------------
LOWERCASE .EQ 1
*--------------------------------------
CMDBITS0.PFIX .EQ $80 ;Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 ;No parameters to be processed
CMDBITS0.RRUN .EQ $20 ;Command only valid during program
CMDBITS0.FNOPT .EQ $10 ;Filename is optional
CMDBITS0.CRFLG .EQ $08 ;CREATE allowed
CMDBITS0.T .EQ $04 ;File type
CMDBITS0.FN2 .EQ $02 ;Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 ;Filename expected
CMDBITS1.AD .EQ $80 ;Address
CMDBITS1.B .EQ $40 ;Byte
CMDBITS1.E .EQ $20 ;End address
CMDBITS1.L .EQ $10 ;Length
CMDBITS1.LINE .EQ $08 ;'@' line number
CMDBITS1.SD .EQ $04 ;Slot and drive numbers
CMDBITS1.F .EQ $02 ;Field
CMDBITS1.R .EQ $01 ;Record
CMDBITS1.V .EQ $00 ;Volume number ignored
*--------------------------------------
Ptr1 .EQ 0
Ptr2 .EQ 2

View File

@ -27,8 +27,9 @@ ILDR.ENUMPM .DO PM
jsr ILDR.EnumInit
.1 ldx #S.FI.T.BIN
ldy #ILDR.KMSFX
lda /ILDR.KMSFX
ldy #ILDR.KMPFX
lda /ILDR.KMPFX
clc prefix
jsr ILDR.EnumNext
bcs .4
@ -65,6 +66,7 @@ ILDR.ENUMPM .DO PM
ldx #S.FI.T.SYS
ldy #ILDR.SYSTEMSFX
lda /ILDR.SYSTEMSFX
sec suffix
jsr ILDR.EnumNext
bcs .9
@ -151,12 +153,14 @@ ILDR.EnumInit.RTS
rts
*--------------------------------------
* X = expected FileType
* Y,A = expected suffix
* Y,A = expected prefix/suffix
*--------------------------------------
ILDR.EnumNext stx ILDR.FT
sty src
sta src+1
ror ILDR.bPFXSFX
.1 inc ILDR.nFC
bne .2
@ -208,9 +212,12 @@ ILDR.EnumNext stx ILDR.FT
cmp ILDR.FT expected file type
bne .1
lda (src) expected suffix len
lda (src) expected prefix/suffix len
cmp pbuf
bcs .1 filename LE suffix
bcs .1 filename LE prefix/suffix
bit ILDR.bPFXSFX
bpl .12 go check prefix
tay
ldx pbuf
@ -223,8 +230,20 @@ ILDR.EnumNext stx ILDR.FT
dex
dey
bne .11
bra .15
ldy #$1D MIN_VERSION
.12 lda (src) expected prefix/suffix len
tay
.13 lda pbuf,y
eor (src),y
asl
bne .1
dey
bne .13
.15 ldy #$1D MIN_VERSION
lda (idxl),y
bpl .10 no lowercase information
@ -335,8 +354,8 @@ ILDR.QUIT .DA #4 PARAM CNT
*--------------------------------------
ILDR.ATINIT .DA #6
.AS "ATINIT"
ILDR.KMSFX .DA #3
.AS ".PM"
ILDR.KMPFX .DA #3
.AS "PM."
ILDR.SYSTEMSFX .DA #7
.AS ".SYSTEM"
*--------------------------------------
@ -348,6 +367,7 @@ ILDR.EL .BS 1
ILDR.nFC .BS 2
ILDR.FT .BS 1
ILDR.EITB .BS 1
ILDR.bPFXSFX .BS 1
.ED
*--------------------------------------
MAN

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF
.OP 65816
.OR $2000
.TF PRODOS.FX,TSYS
.TF PRODOS,TSYS
*--------------------------------------
READCAT .EQ 0 Boot Block read Catalog at $C00
ENHFILENAME .EQ 1

View File

@ -299,6 +299,10 @@ CS.QUIT
.8 clc
rts
*--------------------------------------
*
*--------------------------------------
CS.DRV
*--------------------------------------
CS.END
*--------------------------------------
* Initialized DATA

View File

@ -460,19 +460,18 @@ CPU.Init >PUSHWI MSG.CPU
>PUSHBI 1
>SYSCALL2 printf
ldy #0
stz A2osX.CPUSPEED+1
ldx A2osX.HZ
ldy #0
php
sei
ldx A2osX.HWType
cpx #A2osX.HWType.IIc
lda A2osX.HWType
cmp #A2osX.HWType.IIc
beq CPU.Init2c
ldx A2osX.HZ
.1 bit VBL //e : Wait VBL high....
bpl .1
@ -489,8 +488,6 @@ CPU.Init >PUSHWI MSG.CPU
pla (4)
pha (3)
pla (4)
pha (3)
pla (4)
iny
cpy #100
@ -507,21 +504,22 @@ CPU.Init >PUSHWI MSG.CPU
bra CPU.InitOK
*--------------------------------------
CPU.Init2c sta CLRIOUDIS
CPU.Init2c lda RDIOUDIS
pha
sta CLRIOUDIS
lda IO.IIC.RDVBLMSK
pha Save VBLIRQ enable
sta IO.IIC.ENVBL
lda IO.IIC.CLRVBLIRQ
ldx A2osX.HZ
lda IO.IIC.CLRVBLIRQ
.1 bit VBL Wait VBL high....
bpl .1
bit IO.IIC.CLRVBLIRQ clear //c IRQ
.3 lda #40
.3 lda #60
.4 pha (3)
pla (4)
@ -547,9 +545,14 @@ CPU.Init2c sta CLRIOUDIS
bne .3
pla Disable VBLIRQ ?
bpl CPU.InitOk
bpl .8
sta IO.IIC.DISVBL
.8 pla
bpl CPU.InitOk
sta SETIOUDIS
*--------------------------------------
CPU.InitOk plp

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF sys/km/km.appletalk
.TF sys/pm/pm.appletalk
*--------------------------------------
.INB inc/macros.i
.INB inc/io.i
@ -177,5 +177,5 @@ MLI.AT.FINaming .DA #0 Synchonous
.DA #%10000000 b7=1:Use AFP long Name, b6=0:Update ProDOS dev table
*--------------------------------------
MAN
SAVE usr/src/sys/km.appletalk.s
SAVE usr/src/sys/pm.appletalk.s
ASM

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF sys/km/km.nsc
.TF sys/pm/pm.nsc
*--------------------------------------
.INB inc/macros.i
.INB inc/io.i
@ -319,5 +319,5 @@ NSCDRV.SIZE .EQ *-NSCDRV.B.START
.FIN
*--------------------------------------
MAN
SAVE usr/src/sys/km.nsc.s
SAVE usr/src/sys/pm.nsc.s
ASM

View File

@ -3,8 +3,7 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF sys/km/km.ramworks
* .TF ramworks.pm
.TF sys/pm/pm.ramworks
*--------------------------------------
.INB inc/macros.i
.INB inc/io.i
@ -793,5 +792,5 @@ RWDRVX.SIZE .EQ RWDRVX.B.END-RWDRVX.B.START
.FIN
*--------------------------------------
MAN
SAVE usr/src/sys/km.ramworks.s
SAVE usr/src/sys/pm.ramworks.s
ASM

View File

@ -374,6 +374,6 @@ VEDRIVE.GetCharPtr1
.9 rts
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s.cf
LOAD usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s.cf
LOAD usr/src/sys/pm.vedrive.s
ASM

View File

@ -12,6 +12,6 @@ DRV.GS .EQ *
.EP
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s.gs
LOAD usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s.gs
LOAD usr/src/sys/pm.vedrive.s
ASM

View File

@ -524,6 +524,6 @@ VEDRIVE.CheckARPFrame
rts
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s.ip
LOAD usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s.ip
LOAD usr/src/sys/pm.vedrive.s
ASM

View File

@ -6,8 +6,7 @@ U1.Init lda CONF.SLOT
asl
asl
asl
sta DRV.U1+2 set DRV.U1.Slotn0
sta Slotn0
tax
lda /PP.ID
@ -47,7 +46,7 @@ U1.Init lda CONF.SLOT
>LDYAI VEDRIVE.NICOK
jsr PrintFYA
ldx DRV.U1+2
ldx Slotn0
lda /PP.RxCTL
sta PacketPagePTR+1,x
@ -104,7 +103,7 @@ U1.Init lda CONF.SLOT
U1.READ php
sei
ldx DRV.U1+2
ldx Slotn0
lda /PP.RxEvent
sta PacketPagePTR+1,x
@ -129,7 +128,7 @@ U1.READ php
eor #$ff
sta ZPnCnt
ldx DRV.U1+2
ldx Slotn0
lda ZPBufPtr+1
pha
@ -174,7 +173,7 @@ U1.READWRITE.9 plp
U1.WRITE php
sei
ldx DRV.U1+2
ldx Slotn0
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD+1,x
@ -201,7 +200,7 @@ U1.WRITE php
bit /PP.BusST.Rdy4TxNOW
beq U1.READWRITE.9
ldx DRV.U1+2
ldx Slotn0
ldy #0
@ -237,12 +236,10 @@ U1.Name >PSTR "Uthernet V1"
*--------------------------------------
DRV.U1 .EQ *
.PH $D400
cld
ldx #$ff SELF MODIFIED
.EP
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s.u1
LOAD usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s.u1
LOAD usr/src/sys/pm.vedrive.s
ASM

View File

@ -8,7 +8,7 @@ U2.Init lda CONF.SLOT
asl
clc
adc #$88
sta DRV.U2+2 set DRV.U2.Slotn0
sta Slotn0
tax
lda #W5100.MR.RST
@ -56,7 +56,7 @@ U2.Init lda CONF.SLOT
>LDYAI VEDRIVE.NICOK
jsr PrintFYA
ldx DRV.U2+2
ldx Slotn0
lda #W5100.MR.PB+W5100.MR.AI+W5100.MR.IND
sta W5100.MR,x
@ -83,14 +83,13 @@ U2.Init lda CONF.SLOT
lda #W5100.AR.Sn.CR.OPEN
sta W5100.DR,x
clc
rts
*--------------------------------------
U2.Read php
sei
ldx DRV.U2+2
ldx Slotn0
>AR.SELECT S0.RX.RSR
lda W5100.DR,x get the received size HI
@ -180,7 +179,7 @@ U2.READWRITE.9 plp
U2.Write php
sei
ldx DRV.U2+2
ldx Slotn0
lda ZPBufCnt
eor #$ff
@ -252,13 +251,181 @@ Offset .BS 2
TotalSize .BS 2
*--------------------------------------
DRV.U2 .EQ *
.PH $D400
cld
ldx #$ff SELF MODIFIED
.PH DRV.NIC.START
DRV.U2.START jmp DRV.U2.Write
DRV.U2.Read php
sei
ldx DRV.START
>AR.SELECT S0.RX.RSR
lda W5100.DR,x get the received size HI
nop
nop
ora W5100.DR,x LO
bne .1
jmp DRV.U2.9
.1 >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI
sta Offset+1
ldy W5100.DR,x get the received ptr LO
sty Offset
and /RXTX.MASK
ora /RX.BASE
sta W5100.AR,x
tya
sta W5100.AR+1,x
lda W5100.DR,x get RX.Size HI (Frame size + 2)
sta TotalSize+1
lda W5100.DR,x get RX.Size LO
sta TotalSize
sec
sbc #2 MACRAW:strip 2 bytes Header from Size
sta ZPBufCnt
eor #$ff
sta ZPnCnt
lda TotalSize+1
sbc #0
sta ZPBufCnt
eor #$ff
sta ZPnCnt+1
lda ZPBufPtr+1
pha
ldy #0
.2 inc ZPnCnt
bne .3
inc ZPnCnt+1
beq .8
.3 lda W5100.DR,x
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 >AR.SELECT S0.RX.RD
lda Offset
clc
adc TotalSize
pha save LO
lda Offset+1
adc TotalSize+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
>AR.SELECT S0.CR
lda #W5100.AR.Sn.CR.RCVD
sta W5100.DR,x
pla
sta ZPBufPtr+1
plp
clc
rts
*--------------------------------------
DRV.U2.9 plp
sec
rts
*--------------------------------------
DRV.U2.Write php
sei
>STYA ZPBufCnt
eor #$ff
sta ZPnCnt+1
tya
eor #$ff
sta ZPnCnt
>LDYA DRV.OutBuf
>STYA ZPBufPtr
ldx DRV.START
>AR.SELECT S0.TX.FSR
lda W5100.DR,x get send size HI
nop
nop
ldy W5100.DR,x LO
cpy ZPBufCnt
sbc ZPBufCnt+1
bcc DRV.U2.9
>AR.SELECT S0.TX.WR
lda W5100.DR,x Get HI
nop
nop
ldy W5100.DR,x Get LO
and /RXTX.MASK
ora /TX.BASE
sta W5100.AR,x Write HI
sta Offset+1
tya
sta W5100.AR+1,x Write LO
sta Offset
ldy #0
.2 inc ZPnCnt
bne .3
inc ZPnCnt+1
beq .8
.3 lda (ZPBufPtr),y
sta W5100.DR,x
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 >AR.SELECT S0.TX.WR
lda Offset
clc
adc ZPBufCnt
pha save LO
lda Offset+1
adc ZPBufCnt+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
>AR.SELECT S0.CR
lda #W5100.AR.Sn.CR.SEND
sta W5100.DR,x
plp
clc
rts
.EP
.LIST ON
DRV.U2.SIZE .EQ *-DRV.U2
.LIST OFF
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s.u2
LOAD usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s.u2
LOAD usr/src/sys/pm.vedrive.s
ASM

View File

@ -3,8 +3,8 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
* .TF sys/km.vedrive
.TF vedrive.pm
* .TF sys/pm/pm.vedrive
.TF sys/pm.vedrive
*--------------------------------------
.INB inc/macros.i
.INB inc/io.i
@ -31,11 +31,12 @@ ZPCheckSum .EQ 14
timerS .EQ 16
timerC .EQ 17
bRemoteMac .EQ 18
Slotn0 .EQ 19
*--------------------------------------
ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope
ADT.CMD.PING .EQ $D9 "Y": PING
DRV.EntryPoint .EQ $BF41
DRV.ADDR .EQ $D400
DRV.NIC.START .EQ $D500
*--------------------------------------
CONF.FBUF .EQ $4000
CONF.LBUF .EQ $4400
@ -67,7 +68,6 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
rts
.3 jsr VEDRIVE.MACInit
lda CONF.ADDRESS
bne .4
@ -111,7 +111,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
.7 >LDYAI VEDRIVE.SRVOK
jsr PrintFYA
jsr VEDRIVE.SetSlot
* jsr VEDRIVE.SetSlot
bcc .8
>LDYAI VEDRIVE.NOSLOT
@ -135,22 +135,20 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
rts
*--------------------------------------
VEDRIVE.CheckDRV
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
clc
lda $D400
eor #$D8 CLD
bne .8
lda $D401
eor #$A2 LDX #imm
bne .8
ldx #COPYRIGHT.LEN
sec
.8 bit RROMBNK1
rts
.1 lda DRV.EntryPoint-1,x
eor COPYRIGHT-1,x
bne .9
dex
bne .1
clc
.9 rts
*--------------------------------------
VEDRIVE.Ping lda CONF.PORT
sta ADT.REQ.UDP.DST
@ -287,28 +285,93 @@ VEDRIVE.SetSlot ldx #2 Starts at Slot1
*--------------------------------------
VEDRIVE.Install ldx #PATCH.SIZE
.1 lda PATCH-1,x
sta DRV.EntryPoint-1,x
dex
bne .1
*.1 lda PATCH-1,x
* sta DRV.EntryPoint-1,x
* dex
* bne .1
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
ldy #DRV.SIZE-1
.2 lda DRV,y
sta DRV.START,y
dey
bne .2
lda Slotn0
sta DRV.START
ldy #DRV.IP.SIZE-1
.3 lda DRV.IP,y
sta DRV.IP.START,y
dey
bne .3
ldx CONF.NIC
lda .10,x
sta ZPPtr1
lda .10+1,x
sta ZPPtr1+1
lda .20,x
eor #$ff
sta ZPnCnt
lda .20+1,x
eor #$ff
sta ZPnCnt+1
lda #DRV.NIC.START
sta ZPPtr2
lda /DRV.NIC.START
sta ZPPtr2+1
ldy #0
.4 inc ZPnCnt
bne .5
inc ZPnCnt+1
beq .6
.5 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .4
inc ZPPtr1+1
inc ZPPtr2+1
bra .4
.6 ldy #S.UDP
.7 lda ADT.REQ-1,y
sta DRV.OutBuf-1,y
dey
bne .7
bit RROMBNK1
clc
rts
*--------------------------------------
.10 .DA DRV.U2
.DA DRV.U2
.DA DRV.U2
*--------------------------------------
.20 .DA DRV.U2.SIZE
.DA DRV.U2.SIZE
.DA DRV.U2.SIZE
*--------------------------------------
.INB usr/src/shared/x.printf.s
*--------------------------------------
* ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes)
*--------------------------------------
COPYRIGHT .AS "(C)APPLE "
COPYRIGHT.LEN .EQ *-COPYRIGHT
PATCH .PH DRV.EntryPoint
bit RRAMWRAMBNK2
jsr $D002
@ -338,13 +401,18 @@ DRV.UNITNUM .EQ $43
DRV.BUFF .EQ $44
DRV.BLKNUM .EQ $46
*--------------------------------------
DRV.FrmBuf .EQ $DA00 Frame Buffer = 1536 bytes
DRV.FrmBuf.Env .EQ DRV.FrmBuf+S.UDP
DRV.FrmBuf.Cmd .EQ DRV.FrmBuf+S.UDP+1
DRV.FrmBuf.BlkL .EQ DRV.FrmBuf+S.UDP+2
DRV.FrmBuf.BlkH .EQ DRV.FrmBuf+S.UDP+3
DRV.FrmBuf.Sum .EQ DRV.FrmBuf+S.UDP+4
DRV.FrmBuf.Data .EQ DRV.FrmBuf+S.UDP+5
DRV.Write .EQ DRV.NIC.START
DRV.Read .EQ DRV.NIC.START+3
*--------------------------------------
DRV.OutBuf .EQ $D800-S.UDP-6 Frame Buffer = S.UDP+5+512+1 bytes
DRV.OutBuf.Env .EQ DRV.OutBuf+S.UDP
DRV.OutBuf.Cmd .EQ DRV.OutBuf+S.UDP+1
DRV.OutBuf.BlkL .EQ DRV.OutBuf+S.UDP+2
DRV.OutBuf.BlkH .EQ DRV.OutBuf+S.UDP+3
DRV.OutBuf.Sum .EQ DRV.OutBuf+S.UDP+4
DRV.OutBuf.Data .EQ DRV.OutBuf+S.UDP+5
*--------------------------------------
DRV.InBuf .EQ $DA00 Frame Buffer = 1536 bytes
*--------------------------------------
DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF
@ -363,7 +431,7 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
.1 cmp #3
beq .8 Format ....
* bcs DRV.DO.CMD.ERR more....IO error
bcs DRV.DO.CMD.ERR more....IO error
ora #2 W=2,R=3
ldy DRV.UNITNUM
@ -371,16 +439,16 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
adc #2 CC from bcs
.2 sta DRV.FrmBuf.Cmd store cmd
.2 sta DRV.OutBuf.Cmd store cmd
eor #ADT.CMD.VSD
eor DRV.BLKNUM
eor DRV.BLKNUM+1
sta DRV.FrmBuf.Sum Compute & store CheckSum
sta DRV.OutBuf.Sum Compute & store CheckSum
lda DRV.BLKNUM
sta DRV.FrmBuf.BlkL
sta DRV.OutBuf.BlkL
lda DRV.BLKNUM+1
sta DRV.FrmBuf.BlkH
sta DRV.OutBuf.BlkH
*--------------------------------------
lda DRV.COMMAND
dec 1-1=0 if read
@ -388,48 +456,12 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
*--------------------------------------
* Read block
*--------------------------------------
DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes
DRV.DO.CMD.R ldy #S.UDP+5
lda /S.UDP+5
jsr DRV.Write
.1 eor DRV.FrmBuf.BlkH,y
bne DRV.DO.CMD.ERR
dey
bpl .1
ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum
.2 eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
dey
bpl .2
tay Last EOR was with Checksum, must be 0
bne DRV.DO.CMD.ERR
* Y=0 from TAY
stz DRV.FrmBuf.Sum
sec
.3 jsr $100
eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
iny
bne .3
bcc .4
inc DRV.BUFF+1
clc
bcc .3
.4 dec DRV.BUFF+1
eor DRV.FrmBuf.Sum
bne DRV.DO.CMD.ERR
rts A=0,CC from bcc .4
*--------------------------------------
DRV.DO.CMD.ERR1
pla
pla
DRV.DO.CMD.ERR
lda #MLI.E.IO
sec
@ -439,34 +471,8 @@ DRV.DO.CMD.ERR
*--------------------------------------
DRV.DO.CMD.W lda #$B1 lda (),y
sta $103
ldy #0
stz DRV.FrmBuf.Sum
lda #MLI.E.IO
sec
.1
eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
iny
bne .1
bcc .2
inc DRV.BUFF+1
clc
bcc .1
.2 dec DRV.BUFF+1
* A = DRV.FrmBuf.Sum
* read back CMD
ldy #4 Read 5 bytes (echo from server)
.3
eor DRV.FrmBuf.Sum,y Check 5 bytes (including block Sum)
bne DRV.DO.CMD.ERR
dey
bpl .3
rts
*--------------------------------------
DRV.RWBYTE bit RRAMWRAMBNK1
@ -480,20 +486,174 @@ DRV.RWBYTE bit RRAMWRAMBNK1
DRV.SIZE .EQ *-DRV
.LIST OFF
*--------------------------------------
DRV.IP .PH $D400
DRV.IP.START ldy #S.IP.TOTAL.LENGTH+1
lda ZPBufCnt
sec
sbc #S.ETH.EII
sta (ZPBufPtr),y
dey
lda ZPBufCnt+1
sbc /S.ETH.EII
sta (ZPBufPtr),y
lda #0
ldy #S.IP.HDR.CHECKSUM
sta (ZPBufPtr),y
iny
sta (ZPBufPtr),y
stz ZPCheckSum RESET IP CHECKSUM
stz ZPCheckSum+1
clc
ldy #S.IP.V.IHL
ldx #10 10 words for IP Header
.1 lda (ZPBufPtr),y
adc ZPCheckSum
sta ZPCheckSum
iny
lda (ZPBufPtr),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
dex
bne .1
ldy #S.IP.HDR.CHECKSUM
lda ZPCheckSum
adc #0
eor #$FF
sta (ZPBufPtr),y
iny
lda ZPCheckSum+1
adc #0
eor #$FF
sta (ZPBufPtr),y
rts
*--------------------------------------
clc
ldy #S.UDP.LENGTH+1
lda (ZPBufPtr),y
adc #S.IP.PROTOCOL.UDP
sta ZPCheckSum+1
dey
lda (ZPBufPtr),y
adc /S.IP.PROTOCOL.UDP (all zero)
sta ZPCheckSum
ldy #S.IP.SRC
ldx #4 4 words for SRC & DST IP
.2 lda (ZPBufPtr),y
adc ZPCheckSum
sta ZPCheckSum
iny
lda (ZPBufPtr),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
dex
bne .2
ldy #S.UDP.LENGTH+1
lda (ZPBufPtr),y
eor #$ff
tax
dey
lda (ZPBufPtr),y
eor #$ff
ldy #S.UDP.CHECKSUM
phy Save Offset
pha Save !ByteCount.HI
lda #0 Reset Checksum
sta (ZPBufPtr),y
iny
sta (ZPBufPtr),y
>LDYA ZPBufPtr
>STYA ZPPtr1
ldy #S.IP
.3 inx
bne .4
pla
inc
beq .8
pha
.4 lda (ZPPtr1),y
adc ZPCheckSum
sta ZPCheckSum
iny
bne .5
inc ZPPtr1+1
.5 inx
bne .6
pla
inc
beq .7
pha
.6 lda (ZPPtr1),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
bne .3
inc ZPPtr1+1
bra .3
.7 adc ZPCheckSum+1 A=0 from beq .7
sta ZPCheckSum+1
.8 ply
lda ZPCheckSum
adc #0 Don't forget to add last carry!!!
eor #$FF
sta (ZPBufPtr),y
iny
lda ZPCheckSum+1
adc #0 Don't forget to add last carry!!!
eor #$FF
sta (ZPBufPtr),y
rts
*--------------------------------------
.EP
*--------------------------------------
.LIST ON
DRV.IP.SIZE .EQ *-DRV.IP
.LIST OFF
*--------------------------------------
* CONTROL SECTION :
*--------------------------------------
.DO DRV.SIZE>255
* ERROR:DRV.SIZE too big
ERROR:DRV.SIZE too big
.FIN
*--------------------------------------
*--------------------------------------
.INB usr/src/sys/km.vedrive.s.cf
.INB usr/src/sys/km.vedrive.s.ip
.INB usr/src/sys/km.vedrive.s.u1
.INB usr/src/sys/km.vedrive.s.u2
.INB usr/src/sys/km.vedrive.s.gs
.INB usr/src/sys/pm.vedrive.s.cf
.INB usr/src/sys/pm.vedrive.s.ip
.INB usr/src/sys/pm.vedrive.s.u1
.INB usr/src/sys/pm.vedrive.s.u2
.INB usr/src/sys/pm.vedrive.s.gs
*--------------------------------------
VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n"
VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n"
@ -693,5 +853,5 @@ ADT.REQ.END .EQ *
ADT.REQ.LEN .EQ *-ADT.REQ
*--------------------------------------
MAN
SAVE usr/src/sys/km.vedrive.s
SAVE usr/src/sys/pm.vedrive.s
ASM

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF sys/km/km.vsdrive
.TF sys/pm/pm.vsdrive
*--------------------------------------
.INB inc/macros.i
.INB inc/io.i
@ -618,5 +618,5 @@ DRV.SIZE .EQ *-DRV
.FIN
*--------------------------------------
MAN
SAVE usr/src/sys/km.vsdrive.s
SAVE usr/src/sys/pm.vsdrive.s
ASM