Kernel version 0.9 : X.PRINTF.S rewritten to support bank swiching save/restore (ATLK Crash)

This commit is contained in:
Rémy GIBERT 2017-05-02 17:56:43 +02:00
parent 25f5d697da
commit 993e1828fe
12 changed files with 188 additions and 161 deletions

View File

@ -56,10 +56,10 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
bit RROMBNK1 bit RROMBNK1
jsr HOME jsr HOME
>LDAXI MSG.INIT0 >LDAXI MSG.INIT0
jsr PrintCStrAX jsr PrintFAX
>LDAXI MSG.SYSMEM >LDAXI MSG.SYSMEM
jsr PrintCStrAX jsr PrintFAX
lda MACHID lda MACHID
and #MACHID.RAM and #MACHID.RAM
@ -67,23 +67,23 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
beq .1 beq .1
>LDAXI MSG.SYSMEM.KO >LDAXI MSG.SYSMEM.KO
jsr PrintCStrAX jsr PrintFAX
bra * bra *
.1 lda #$8C Reset 80 col screen ($0C:HOME) .1 lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300 jsr $C300
>LDAXI MSG.INIT0 >LDAXI MSG.INIT0
jsr PrintCStrAX jsr PrintFAX
>LDAXI MSG.SYSMEM >LDAXI MSG.SYSMEM
jsr PrintCStrAX jsr PrintFAX
>LDAXI MSG.SYSMEM.OK >LDAXI MSG.SYSMEM.OK
jsr PrintCStrAX jsr PrintFAX
>LDAXI MSG.CPU >LDAXI MSG.CPU
jsr PrintCStrAX jsr PrintFAX
sed Test 6502 BCD bug sed Test 6502 BCD bug
lda #$99 lda #$99
@ -93,14 +93,14 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
bpl .2 if minus, BUG!, we have 6502 bpl .2 if minus, BUG!, we have 6502
>LDAXI MSG.CPU.KO >LDAXI MSG.CPU.KO
jsr PrintCStrAX jsr PrintFAX
bra * bra *
.2 >LDAXI MSG.CPU.OK .2 >LDAXI MSG.CPU.OK
jsr PrintCStrAX jsr PrintFAX
*-------------------------------------- *--------------------------------------
A2osX.Prefix >LDAXI MSG.BOOTPREFIX A2osX.Prefix >LDAXI MSG.BOOTPREFIX
jsr PrintCStrAX jsr PrintFAX
jsr MLI jsr MLI
.DA #MLIGETPREFIX .DA #MLIGETPREFIX
.DA MLIGETPREFIX01 .DA MLIGETPREFIX01
@ -118,7 +118,7 @@ A2osX.Prefix >LDAXI MSG.BOOTPREFIX
jsr CROUT jsr CROUT
*-------------------------------------- *--------------------------------------
A2osX.RamDrv >LDAXI MSG.RAMDRV A2osX.RamDrv >LDAXI MSG.RAMDRV
jsr PrintCStrAX jsr PrintFAX
jsr DisableRamDRV jsr DisableRamDRV
bcc .2 bcc .2
@ -126,15 +126,15 @@ A2osX.RamDrv >LDAXI MSG.RAMDRV
tax tax
bne .1 bne .1
>LDAXI MSG.RAMDRV.KO0 >LDAXI MSG.RAMDRV.KO0
jsr PrintCStrAX jsr PrintFAX
bra A2osX.SetupQC bra A2osX.SetupQC
.1 >LDAXI MSG.RAMDRV.KO1 .1 >LDAXI MSG.RAMDRV.KO1
jsr PrintCStrAX jsr PrintFAX
bra A2osX.SetupQC bra A2osX.SetupQC
.2 >LDAXI MSG.RAMDRV.OK .2 >LDAXI MSG.RAMDRV.OK
jsr PrintCStrAX jsr PrintFAX
*-------------------------------------- *--------------------------------------
A2osX.SetupQC lda RRAMWRAMBNK2 A2osX.SetupQC lda RRAMWRAMBNK2
lda RRAMWRAMBNK2 lda RRAMWRAMBNK2
@ -153,11 +153,11 @@ A2osX.SetupQC lda RRAMWRAMBNK2
lda RROMBNK1 lda RROMBNK1
*-------------------------------------- *--------------------------------------
A2osX.EnumKM >LDAXI MSG.KMENUM A2osX.EnumKM >LDAXI MSG.KMENUM
jsr PrintCStrAX jsr PrintFAX
jsr EnumKM jsr EnumKM
*-------------------------------------- *--------------------------------------
A2osX.MLIQuit >LDAXI MSG.INIT0OK A2osX.MLIQuit >LDAXI MSG.INIT0OK
jsr PrintCStrAX jsr PrintFAX
>DEBUGOA >DEBUGOA
jsr MLI jsr MLI
@ -218,6 +218,7 @@ DisableRamDRV php
lda #0 Not detected lda #0 Not detected
sec sec
rts rts
*--------------------------------------
EnumKM.EPB .EQ $0D EnumKM.EPB .EQ $0D
EnumKM.EL .EQ $27 EnumKM.EL .EQ $27
*-------------------------------------- *--------------------------------------
@ -323,11 +324,13 @@ LoadKM ldx Boot.Prefix
dey dey
bne .2 bne .2
lda #KM.Filename
pha
lda /KM.Filename
pha
>LDAXI MSG.KMLOAD >LDAXI MSG.KMLOAD
jsr PrintCStrAX jsr PrintFAX
>LDAXI KM.Filename
jsr PrintPStrAX
jsr CROUT
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN
@ -345,7 +348,6 @@ LoadKM ldx Boot.Prefix
jsr .9 jsr .9
jsr A2osX.KMLOAD jsr A2osX.KMLOAD
jsr CROUT
.98 pha .98 pha
jsr .9 jsr .9
@ -377,7 +379,7 @@ MSG.RAMDRV.KO1 >CSTR "Uninstall Failed !!!\n"
MSG.BOOTPREFIX >CSTR "Boot Prefix:" MSG.BOOTPREFIX >CSTR "Boot Prefix:"
MSG.KMENUM >CSTR "Looking For Kernel Modules...\n" MSG.KMENUM >CSTR "Looking For Kernel Modules...\n"
MSG.KMLOAD >CSTR "***Loading KM : " MSG.KMLOAD >CSTR "***Loading KM : %S\n"
MSG.INIT0OK >CSTR "A2osX[Stage0]:Complete.\n" MSG.INIT0OK >CSTR "A2osX[Stage0]:Complete.\n"
*-------------------------------------- *--------------------------------------
MLIGETPREFIX01 .DA #1 MLIGETPREFIX01 .DA #1

View File

@ -141,7 +141,7 @@ OPEN ldx DEVSLOTn0
sei sei
stz SSC.RESET,x stz SSC.RESET,x
lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP lda #SSC.CTL.CLKEXT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL,x sta SSC.CTL,x
ldx DEVSLOTn0 ldx DEVSLOTn0

View File

@ -150,7 +150,7 @@ OPEN php
stz OUTBUF.HEAD stz OUTBUF.HEAD
stz OUTBUF.TAIL stz OUTBUF.TAIL
lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP lda #SSC.CTL.CLKEXT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL,x sta SSC.CTL,x
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,10 +5,9 @@ INC 1
AUTO 6 AUTO 6
*-------------------------------------- *--------------------------------------
Kernel.Init2 sei Kernel.Init2 sei
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
>LDAXI MSG.Init2 >LDAXI MSG.Init2
jsr PrintCStrAX jsr PrintFAX
>LDYAI A2osX.GP >LDYAI A2osX.GP
>STYA ZPPtr1 >STYA ZPPtr1
@ -19,10 +18,9 @@ Kernel.Init2 sei
jsr Kernel.Move jsr Kernel.Move
sta CLRALTZP sta CLRALTZP
bit RROMBNK1
>LDAXI MSG.D000BNK2 >LDAXI MSG.D000BNK2
jsr PrintCStrAX jsr PrintFAX
sta SETALTZP sta SETALTZP
lda RRAMWRAMBNK2 lda RRAMWRAMBNK2
@ -37,10 +35,9 @@ Kernel.Init2 sei
jsr Kernel.Move jsr Kernel.Move
sta CLRALTZP sta CLRALTZP
bit RROMBNK1
>LDAXI MSG.D000BNK1 >LDAXI MSG.D000BNK1
jsr PrintCStrAX jsr PrintFAX
sta SETALTZP sta SETALTZP
lda RRAMWRAMBNK1 lda RRAMWRAMBNK1
@ -55,10 +52,9 @@ Kernel.Init2 sei
jsr Kernel.Move jsr Kernel.Move
sta CLRALTZP sta CLRALTZP
bit RROMBNK1
>LDAXI MSG.E000 >LDAXI MSG.E000
jsr PrintCStrAX jsr PrintFAX
sta SETALTZP sta SETALTZP
lda RRAMWRAMBNK1 lda RRAMWRAMBNK1
@ -76,18 +72,17 @@ Kernel.Init2 sei
>STYA pStack init Soft Stack >STYA pStack init Soft Stack
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
bit RROMBNK1 Make sure ROM is enabled for X.PRINT.F
cli cli
lda A2osX.HZ lda A2osX.HZ
pha push HZ pha push HZ
>LDAXI MSG.HZ >LDAXI MSG.HZ
jsr PrintCStrAX jsr PrintFAX
jsr CPU.Init jsr CPU.Init
>LDAXI MSG.Init2.OK >LDAXI MSG.Init2.OK
jsr PrintCStrAX jsr PrintFAX
rts Do NOT replace this JSR/RTS with a JMP rts Do NOT replace this JSR/RTS with a JMP
*-------------------------------------- *--------------------------------------
Kernel.Move ldy #0 Kernel.Move ldy #0
@ -114,14 +109,14 @@ MSG.HZ >CSTR "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n" MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n"
*-------------------------------------- *--------------------------------------
CPU.Init >LDAXI MSG.CPU CPU.Init >LDAXI MSG.CPU
jsr PrintCStrAX jsr PrintFAX
jsr Detect6502 A = CPU type jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE sta A2osX.CPUTYPE
lda MSG.CPUTYPEH,y lda MSG.CPUTYPEH,y
tax tax
lda MSG.CPUTYPEL,y lda MSG.CPUTYPEL,y
jsr PrintCStrAX jsr PrintFAX
lda MACHID lda MACHID
and #MACHID.TYPE and #MACHID.TYPE
@ -129,7 +124,7 @@ CPU.Init >LDAXI MSG.CPU
beq CPU.Init.Z80 beq CPU.Init.Z80
>LDAXI MSG.CPU.SPEED >LDAXI MSG.CPU.SPEED
jsr PrintCStrAX jsr PrintFAX
stz A2osX.RANDOM16 stz A2osX.RANDOM16
stz A2osX.RANDOM16+1 stz A2osX.RANDOM16+1
@ -189,10 +184,10 @@ CPU.Init >LDAXI MSG.CPU
lda A2osX.CPUSPEED lda A2osX.CPUSPEED
pha push CPU speed HI pha push CPU speed HI
>LDAXI MSG.CPU.SPEEDOK >LDAXI MSG.CPU.SPEEDOK
jsr PrintCStrAX jsr PrintFAX
CPU.Init.Z80 >LDAXI MSG.Z80 CPU.Init.Z80 >LDAXI MSG.Z80
jsr PrintCStrAX jsr PrintFAX
jsr DetectZ80 jsr DetectZ80
bcs .9 bcs .9
sta A2osX.Z80SLOT sta A2osX.Z80SLOT
@ -203,11 +198,11 @@ CPU.Init.Z80 >LDAXI MSG.Z80
sta A2osX.SLOTS,x sta A2osX.SLOTS,x
>LDAXI MSG.Z80.OK >LDAXI MSG.Z80.OK
jsr PrintCStrAX jsr PrintFAX
rts rts
.9 >LDAXI MSG.Z80.KO .9 >LDAXI MSG.Z80.KO
jsr PrintCStrAX jsr PrintFAX
rts rts
*-------------------------------------- *--------------------------------------
* Out: * Out:

View File

@ -7,14 +7,13 @@ AUTO 6
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF SYS/KERNEL .TF SYS/KERNEL
*--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/IO.I .INB INC/IO.I
.INB INC/PRODOS.I .INB INC/PRODOS.I
.INB INC/MLI.ERR.I .INB INC/MLI.ERR.I
*--------------------------------------
TmpPtr1 .EQ $0 for X.PRINTF.S
ZPPtr1 .EQ ZPKERNEL ZPPtr1 .EQ ZPKERNEL
ZPPtr2 .EQ ZPKERNEL+2 ZPPtr2 .EQ ZPKERNEL+2
ZPPtr3 .EQ ZPKERNEL+4 ZPPtr3 .EQ ZPKERNEL+4
@ -38,12 +37,12 @@ ZPPtr4 .EQ ZPKERNEL+6
.INB /A2OSX.SRC/X.PRINTF.S .INB /A2OSX.SRC/X.PRINTF.S
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT2 .INB /A2OSX.SRC/SYS/KERNEL.S.INIT2
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT3 .INB /A2OSX.SRC/SYS/KERNEL.S.INIT3
* Global Page
A2osX.GP .PH $BD00 A2osX.GP .PH $BD00
.INB /A2OSX.SRC/SYS/KERNEL.S.GP .INB /A2OSX.SRC/SYS/KERNEL.S.GP
.EP .EP
A2osX.GP.E .EQ * A2osX.GP.E .EQ *
* LC AUX $D000 BANK1 API Calls $00-$3E
A2osX.D1 .PH $D000 A2osX.D1 .PH $D000
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO .INB /A2OSX.SRC/SYS/KERNEL.S.FIO
@ -57,7 +56,7 @@ A2osX.D1 .PH $D000
.INB /A2OSX.SRC/SYS/KERNEL.S.BIN .INB /A2OSX.SRC/SYS/KERNEL.S.BIN
.EP .EP
A2osX.D1.E .EQ * A2osX.D1.E .EQ *
* LC AUX $D000 BANK2 API Calls $40-$8E
A2osX.D2 .PH $D000 A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.INB /A2OSX.SRC/SYS/KERNEL.S.CIO .INB /A2OSX.SRC/SYS/KERNEL.S.CIO
@ -72,7 +71,7 @@ A2osX.D2 .PH $D000
.INB /A2OSX.SRC/SYS/KERNEL.S.TSK .INB /A2OSX.SRC/SYS/KERNEL.S.TSK
.EP .EP
A2osX.D2.E .EQ * A2osX.D2.E .EQ *
* LC AUX $E000 API Calls $80-$FE
A2osX.E0 .PH $E000 A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP .INB /A2OSX.SRC/SYS/KERNEL.S.JMP
.INB /A2OSX.SRC/SYS/KERNEL.S.DAT .INB /A2OSX.SRC/SYS/KERNEL.S.DAT
@ -80,7 +79,6 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.MEM .INB /A2OSX.SRC/SYS/KERNEL.S.MEM
.INB /A2OSX.SRC/SYS/KERNEL.S.CNV .INB /A2OSX.SRC/SYS/KERNEL.S.CNV
.INB /A2OSX.SRC/SYS/KERNEL.S.CHR .INB /A2OSX.SRC/SYS/KERNEL.S.CHR
* Make sure KERNEL.S.D01 is the last one
.INB /A2OSX.SRC/SYS/KERNEL.S.D01 .INB /A2OSX.SRC/SYS/KERNEL.S.D01
.EP .EP
A2osX.E0.E .EQ * A2osX.E0.E .EQ *

View File

@ -16,7 +16,7 @@ AUTO 6
TmpPtr1 .EQ $0 TmpPtr1 .EQ $0
*-------------------------------------- *--------------------------------------
AT.INIT >LDAXI MSG.INIT AT.INIT >LDAXI MSG.INIT
jsr PrintCStrAX jsr PrintFAX
lda #$F9 lda #$F9
sta TmpPtr1 sta TmpPtr1
@ -44,7 +44,7 @@ AT.INIT >LDAXI MSG.INIT
pha pha
>LDAXI MSG.FAILED >LDAXI MSG.FAILED
jsr PrintCStrAX jsr PrintFAX
rts rts
.3 dec TmpPtr1+1 .3 dec TmpPtr1+1
@ -53,7 +53,7 @@ AT.INIT >LDAXI MSG.INIT
bne .1 bne .1
>LDAXI MSG.NOHW >LDAXI MSG.NOHW
jsr PrintCStrAX jsr PrintFAX
rts rts
.4 stx WC.Flag .4 stx WC.Flag
@ -64,7 +64,7 @@ AT.INIT >LDAXI MSG.INIT
pha Push slot # pha Push slot #
phy Push Type # phy Push Type #
>LDAXI MSG.HWOK >LDAXI MSG.HWOK
jsr PrintCStrAX jsr PrintFAX
>LDYA MLI+1 >LDYA MLI+1
>STYA GO.OLDMLI+1 >STYA GO.OLDMLI+1
@ -80,7 +80,7 @@ AT.INIT >LDAXI MSG.INIT
>STYA MLI+1 >STYA MLI+1
.5 >LDAXI MSG.ATINIT .5 >LDAXI MSG.ATINIT
jsr PrintCStrAX jsr PrintFAX
jsr GO.WSCARD jsr GO.WSCARD
.DA #MLIATALK .DA #MLIATALK
@ -88,7 +88,7 @@ AT.INIT >LDAXI MSG.INIT
bcs .9 bcs .9
>LDAXI MSG.IRQ >LDAXI MSG.IRQ
jsr PrintCStrAX jsr PrintFAX
jsr MLI jsr MLI
.DA #MLIALLOCIRQ .DA #MLIALLOCIRQ
@ -98,7 +98,7 @@ AT.INIT >LDAXI MSG.INIT
cli cli
>LDAXI MSG.PREFIX2 >LDAXI MSG.PREFIX2
jsr PrintCStrAX jsr PrintFAX
jsr GO.OLDMLI jsr GO.OLDMLI
.DA #MLIGETPREFIX .DA #MLIGETPREFIX
@ -106,7 +106,7 @@ AT.INIT >LDAXI MSG.INIT
bcs .9 bcs .9
>LDAXI MSG.PREFIX2 >LDAXI MSG.PREFIX2
jsr PrintCStrAX jsr PrintFAX
jsr GO.WSCARD jsr GO.WSCARD
.DA #MLISETPREFIX .DA #MLISETPREFIX
@ -114,12 +114,12 @@ AT.INIT >LDAXI MSG.INIT
bcs .9 bcs .9
>LDAXI MSG.OK >LDAXI MSG.OK
jsr PrintCStrAX jsr PrintFAX
rts rts
.9 pha .9 pha
>LDAXI MSG.KO >LDAXI MSG.KO
jsr PrintCStrAX jsr PrintFAX
rts rts
*-------------------------------------- *--------------------------------------
GO.WSCARD jmp $ffff Self Modifed GO.WSCARD jmp $ffff Self Modifed

View File

@ -27,13 +27,13 @@ RW.BLOCK .EQ $A00
RWBankSelect .EQ $C073 RWBankSelect .EQ $C073
*-------------------------------------- *--------------------------------------
RW.Init >LDAXI RW.MSG RW.Init >LDAXI RW.MSG
jsr PrintCStrAX jsr PrintFAX
jsr RW.Detect1 jsr RW.Detect1
bcs .10 bcs .10
>LDAXI RW.MSG.OK >LDAXI RW.MSG.OK
jsr PrintCStrAX jsr PrintFAX
rts rts
@ -41,7 +41,7 @@ RW.Init >LDAXI RW.MSG
bcc .1 bcc .1
>LDAXI RW.MSG.KO1 >LDAXI RW.MSG.KO1
jsr PrintCStrAX jsr PrintFAX
rts rts
.1 pha Push Page count .1 pha Push Page count
@ -56,27 +56,27 @@ RW.Init >LDAXI RW.MSG
pha Push Kbyte HI pha Push Kbyte HI
>LDAXI RW.MSG.OK1 >LDAXI RW.MSG.OK1
jsr PrintCStrAX jsr PrintFAX
jsr RW.Install jsr RW.Install
bcc .2 bcc .2
>LDAXI RW.MSG.KO2 >LDAXI RW.MSG.KO2
jsr PrintCStrAX jsr PrintFAX
rts rts
.2 >LDAXI RW.MSG.OK2 .2 >LDAXI RW.MSG.OK2
jsr PrintCStrAX jsr PrintFAX
jsr RW.Format jsr RW.Format
bcc .3 bcc .3
>LDAXI RW.MSG.KO3 >LDAXI RW.MSG.KO3
jsr PrintCStrAX jsr PrintFAX
rts rts
.3 >LDAXI RW.MSG.OK3 .3 >LDAXI RW.MSG.OK3
jsr PrintCStrAX jsr PrintFAX
rts rts
*-------------------------------------- *--------------------------------------
RW.Detect1 jsr MLI RW.Detect1 jsr MLI
@ -146,9 +146,9 @@ RW.Detect2 php
inx inx
bpl .3 bpl .3
dex we reached 128,last detected page was 127 .4 dex we reached 128,last detected page was 127
.4 ldy #127 X = detected page count ldy #127 X = detected page count
.6 sty RWBankSelect .6 sty RWBankSelect

View File

@ -20,7 +20,7 @@ VS.CMD .EQ $C5 "E": Virtual Drive Command Envelope
DRV.EntryPoint .EQ $BF41 DRV.EntryPoint .EQ $BF41
*-------------------------------------- *--------------------------------------
VSDRIVE.Init >LDAXI VSDRIVE.MSG0 VSDRIVE.Init >LDAXI VSDRIVE.MSG0
jsr PrintCStrAX jsr PrintFAX
jsr VSDRIVE.Check jsr VSDRIVE.Check
bcs .90 bcs .90
@ -37,13 +37,13 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
pha slot n pha slot n
>LDAXI VSDRIVE.SSCOK >LDAXI VSDRIVE.SSCOK
jsr PrintCStrAX jsr PrintFAX
jsr VSDRIVE.Ping jsr VSDRIVE.Ping
bcs .92 bcs .92
>LDAXI VSDRIVE.SRVOK >LDAXI VSDRIVE.SRVOK
jsr PrintCStrAX jsr PrintFAX
jsr VSDRIVE.SetSlot jsr VSDRIVE.SetSlot
bcs .91 bcs .91
@ -51,24 +51,24 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
pha save slot pha save slot
pha 2 times pha 2 times
>LDAXI VSDRIVE.DEVOK >LDAXI VSDRIVE.DEVOK
jsr PrintCStrAX jsr PrintFAX
jsr VSDRIVE.Install jsr VSDRIVE.Install
>LDAXI VSDRIVE.OK >LDAXI VSDRIVE.OK
jsr PrintCStrAX jsr PrintFAX
rts rts
.90 >LDAXI VSDRIVE.DRVKO .90 >LDAXI VSDRIVE.DRVKO
jsr PrintCStrAX jsr PrintFAX
rts rts
.91 >LDAXI VSDRIVE.NOSLOT .91 >LDAXI VSDRIVE.NOSLOT
jsr PrintCStrAX jsr PrintFAX
rts rts
.92 >LDAXI VSDRIVE.SRVKO .92 >LDAXI VSDRIVE.SRVKO
jsr PrintCStrAX jsr PrintFAX
inc .1+1 inc .1+1
lda .1+1 lda .1+1
@ -76,7 +76,7 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
bne .2 Go try next SSC.... bne .2 Go try next SSC....
.99 >LDAXI VSDRIVE.SSCKO .99 >LDAXI VSDRIVE.SSCKO
jsr PrintCStrAX jsr PrintFAX
rts rts
*-------------------------------------- *--------------------------------------
VSDRIVE.Check bit RRAMWRAMBNK2 VSDRIVE.Check bit RRAMWRAMBNK2
@ -119,7 +119,7 @@ SSC.Detect stz TmpPtr1
pha zzzzzzz... pha zzzzzzz...
pla pla
lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP lda #SSC.CTL.CLKEXT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL,x sta SSC.CTL,x
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR

View File

@ -5,109 +5,111 @@ INC 1
AUTO 6 AUTO 6
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
PrintPStrAX >STAX TmpPtr1 PrintFAX >STAX PrintFAX.Next+1
lda (TmpPtr1)
tax
beq .9
ldy #1
.1 lda (TmpPtr1),y
ora #$80
jsr $FDED COUT
iny
dex
bne .1
.9 rts
*--------------------------------------
PrintCStrAX >STAX PrintCStrAX.Next+1
pla pla
sta .91+1 sta PrintFAX.99+1
pla pla
sta .9+1 sta PrintFAX.98+1
.1 stz X.b0Flag lda $C011 RDLCBNK2
sta PrintFAX.91+1
lda $C012 RDLCRAM
sta PrintFAX.90+1
lda $C08A RROMBNK1, make sure $D000-$FFFF ROM selected
lda $CFFF get access to $C800-$CFFF internal ROM
PrintFAX.1 stz X.b0Flag
stz X.DigitCount stz X.DigitCount
jsr PrintCStrAX.Next jsr PrintFAX.Next
beq .9 beq PrintFAX.90
cmp #'%' cmp #'%'
bne .5
.11 jsr PrintCStrAX.Next
beq .9
cmp #'0'
bne .22
ror X.b0Flag beq -> CS
bra .11
.22 bcc .21
cmp #'9'+1
bcs .21
and #$0f
sta X.DigitCount
bra .11
.21 cmp #'d'
bne .2
pla
jsr PrintADec
bra .1
.2 cmp #'D'
bne .3
plx
pla
jsr PrintAXDec
bra .1
.3 cmp #'h'
bne .4
pla
jsr $FDDA PRBYTE
bra .1
.4 cmp #'H'
bne .5
pla
jsr $FDDA PRBYTE
pla
jsr $FDDA PRBYTE
bra .1
.5 cmp #'\'
bne .7 bne .7
jsr PrintCStrAX.Next .2 jsr PrintFAX.Next
beq .9 beq PrintFAX.90
cmp #'0'
bne .3
ror X.b0Flag beq -> CS
bra .2
.3 bcc .4
cmp #'9'+1
bcs .4
and #$0f
sta X.DigitCount
bra .2
.4 ldx #PrintFAX.Tbl-PrintFAX.Esc-1
.5 cmp PrintFAX.Esc,x
beq .6
dex
bpl .5
bra PrintFAX.1
.6 txa
asl
tax
jmp (PrintFAX.Tbl,x)
.7 cmp #'\'
bne .8
jsr PrintFAX.Next
beq PrintFAX.90
cmp #'n' cmp #'n'
bne .9 bne .8
lda #$0D lda #$0D
.7 ora #$80 .8 ora #$80
jsr $FDED COUT jsr $FDED COUT
bra .1 bra PrintFAX.1
.9 lda #$ff Self modified RTS HI PrintFAX.90 lda #$ff
bpl PrintFAX.98 ROM was selected, nothing to do
PrintFAX.91 lda #$ff
bmi PrintFAX.92 RAM bank 2 was selected
ldx #$8B RRAMWRAMBNK1
.HS 2C bit abs
PrintFAX.92 ldx #$83 RRAMWRAMBNK2
lda $C000,x
lda $C000,x
PrintFAX.98 lda #$ff Self modified RTS HI
pha pha
.91 lda #$ff Self modified RTS LO PrintFAX.99 lda #$ff Self modified RTS LOPrintFAXPrintFAX
pha pha
rts rts
*-------------------------------------- *--------------------------------------
PrintCStrAX.Next PrintFAX.Next lda $ffff
lda $ffff
beq .8 beq .8
inc PrintCStrAX.Next+1 inc PrintFAX.Next+1
bne .8 bne .8
inc PrintCStrAX.Next+2 Always !=0 inc PrintFAX.Next+2 Always !=0
.8 rts .8 rts
*--------------------------------------
PrintFAX.Esc .AS "dDhHS"
PrintFAX.Tbl .DA PrintFAX.D
.DA PrintFAX.DD
.DA PrintFAX.H
.DA PrintFAX.HH
.DA PrintFAX.S
*-------------------------------------- *--------------------------------------
PrintADec ldx #0 PrintFAX.D ldx #0
PrintAXDec >STAX X.HexBuffer .HS D0 bne
PrintFAX.DD plx
pla
>STAX X.HexBuffer
stz X.BCDBuffer stz X.BCDBuffer
stz X.BCDBuffer+1 stz X.BCDBuffer+1
stz X.BCDBuffer+2 stz X.BCDBuffer+2
@ -182,7 +184,37 @@ PrintAXDec >STAX X.HexBuffer
cpy #6 cpy #6
bne .6 bne .6
.9 rts .9 jmp PrintFAX.1
*--------------------------------------
PrintFAX.HH pla
jsr $FDDA PRBYTE
PrintFAX.H pla
jsr $FDDA PRBYTE
jmp PrintFAX.1
*--------------------------------------
PrintFAX.S pla
sta .1+2
sta .2+2
pla
sta .1+1
sta .2+1
.1 lda $ffff
beq .9
tax
ldy #1
.2 lda $ffff,y
ora #$80
jsr $FDED COUT
iny
dex
bne .2
.9 jmp PrintFAX.1
*-------------------------------------- *--------------------------------------
X.HexBuffer .BS 2 X.HexBuffer .BS 2
X.BCDBuffer .BS 3 X.BCDBuffer .BS 3