mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-11 15:31:09 +00:00
Kernel version 0.9 : X.PRINTF.S rewritten to support bank swiching save/restore (ATLK Crash)
This commit is contained in:
parent
25f5d697da
commit
993e1828fe
46
A2osX.S.txt
46
A2osX.S.txt
@ -56,10 +56,10 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
|
||||
bit RROMBNK1
|
||||
jsr HOME
|
||||
>LDAXI MSG.INIT0
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDAXI MSG.SYSMEM
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
lda MACHID
|
||||
and #MACHID.RAM
|
||||
@ -67,23 +67,23 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
|
||||
beq .1
|
||||
|
||||
>LDAXI MSG.SYSMEM.KO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
bra *
|
||||
|
||||
.1 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||
jsr $C300
|
||||
|
||||
>LDAXI MSG.INIT0
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDAXI MSG.SYSMEM
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDAXI MSG.SYSMEM.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDAXI MSG.CPU
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
sed Test 6502 BCD bug
|
||||
lda #$99
|
||||
@ -93,14 +93,14 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
|
||||
bpl .2 if minus, BUG!, we have 6502
|
||||
|
||||
>LDAXI MSG.CPU.KO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
bra *
|
||||
|
||||
.2 >LDAXI MSG.CPU.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
*--------------------------------------
|
||||
A2osX.Prefix >LDAXI MSG.BOOTPREFIX
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
jsr MLI
|
||||
.DA #MLIGETPREFIX
|
||||
.DA MLIGETPREFIX01
|
||||
@ -118,7 +118,7 @@ A2osX.Prefix >LDAXI MSG.BOOTPREFIX
|
||||
jsr CROUT
|
||||
*--------------------------------------
|
||||
A2osX.RamDrv >LDAXI MSG.RAMDRV
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr DisableRamDRV
|
||||
bcc .2
|
||||
@ -126,15 +126,15 @@ A2osX.RamDrv >LDAXI MSG.RAMDRV
|
||||
tax
|
||||
bne .1
|
||||
>LDAXI MSG.RAMDRV.KO0
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
bra A2osX.SetupQC
|
||||
|
||||
.1 >LDAXI MSG.RAMDRV.KO1
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
bra A2osX.SetupQC
|
||||
|
||||
.2 >LDAXI MSG.RAMDRV.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
*--------------------------------------
|
||||
A2osX.SetupQC lda RRAMWRAMBNK2
|
||||
lda RRAMWRAMBNK2
|
||||
@ -153,11 +153,11 @@ A2osX.SetupQC lda RRAMWRAMBNK2
|
||||
lda RROMBNK1
|
||||
*--------------------------------------
|
||||
A2osX.EnumKM >LDAXI MSG.KMENUM
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
jsr EnumKM
|
||||
*--------------------------------------
|
||||
A2osX.MLIQuit >LDAXI MSG.INIT0OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>DEBUGOA
|
||||
jsr MLI
|
||||
@ -218,6 +218,7 @@ DisableRamDRV php
|
||||
lda #0 Not detected
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
EnumKM.EPB .EQ $0D
|
||||
EnumKM.EL .EQ $27
|
||||
*--------------------------------------
|
||||
@ -323,11 +324,13 @@ LoadKM ldx Boot.Prefix
|
||||
dey
|
||||
bne .2
|
||||
|
||||
lda #KM.Filename
|
||||
pha
|
||||
lda /KM.Filename
|
||||
pha
|
||||
|
||||
>LDAXI MSG.KMLOAD
|
||||
jsr PrintCStrAX
|
||||
>LDAXI KM.Filename
|
||||
jsr PrintPStrAX
|
||||
jsr CROUT
|
||||
jsr PrintFAX
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIOPEN
|
||||
@ -345,7 +348,6 @@ LoadKM ldx Boot.Prefix
|
||||
jsr .9
|
||||
|
||||
jsr A2osX.KMLOAD
|
||||
jsr CROUT
|
||||
|
||||
.98 pha
|
||||
jsr .9
|
||||
@ -377,7 +379,7 @@ MSG.RAMDRV.KO1 >CSTR "Uninstall Failed !!!\n"
|
||||
MSG.BOOTPREFIX >CSTR "Boot Prefix:"
|
||||
|
||||
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"
|
||||
*--------------------------------------
|
||||
MLIGETPREFIX01 .DA #1
|
||||
|
@ -141,7 +141,7 @@ OPEN ldx DEVSLOTn0
|
||||
sei
|
||||
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
|
||||
|
||||
ldx DEVSLOTn0
|
||||
|
@ -150,7 +150,7 @@ OPEN php
|
||||
stz OUTBUF.HEAD
|
||||
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
|
||||
|
||||
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,10 +5,9 @@ INC 1
|
||||
AUTO 6
|
||||
*--------------------------------------
|
||||
Kernel.Init2 sei
|
||||
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||
|
||||
>LDAXI MSG.Init2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDYAI A2osX.GP
|
||||
>STYA ZPPtr1
|
||||
@ -19,10 +18,9 @@ Kernel.Init2 sei
|
||||
jsr Kernel.Move
|
||||
|
||||
sta CLRALTZP
|
||||
bit RROMBNK1
|
||||
|
||||
>LDAXI MSG.D000BNK2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK2
|
||||
@ -37,10 +35,9 @@ Kernel.Init2 sei
|
||||
jsr Kernel.Move
|
||||
|
||||
sta CLRALTZP
|
||||
bit RROMBNK1
|
||||
|
||||
>LDAXI MSG.D000BNK1
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK1
|
||||
@ -55,10 +52,9 @@ Kernel.Init2 sei
|
||||
jsr Kernel.Move
|
||||
|
||||
sta CLRALTZP
|
||||
bit RROMBNK1
|
||||
|
||||
>LDAXI MSG.E000
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK1
|
||||
@ -76,18 +72,17 @@ Kernel.Init2 sei
|
||||
>STYA pStack init Soft Stack
|
||||
|
||||
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||
bit RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||
cli
|
||||
|
||||
lda A2osX.HZ
|
||||
pha push HZ
|
||||
>LDAXI MSG.HZ
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr CPU.Init
|
||||
|
||||
>LDAXI MSG.Init2.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts Do NOT replace this JSR/RTS with a JMP
|
||||
*--------------------------------------
|
||||
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"
|
||||
*--------------------------------------
|
||||
CPU.Init >LDAXI MSG.CPU
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr Detect6502 A = CPU type
|
||||
sta A2osX.CPUTYPE
|
||||
lda MSG.CPUTYPEH,y
|
||||
tax
|
||||
lda MSG.CPUTYPEL,y
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
lda MACHID
|
||||
and #MACHID.TYPE
|
||||
@ -129,7 +124,7 @@ CPU.Init >LDAXI MSG.CPU
|
||||
beq CPU.Init.Z80
|
||||
|
||||
>LDAXI MSG.CPU.SPEED
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
stz A2osX.RANDOM16
|
||||
stz A2osX.RANDOM16+1
|
||||
@ -189,10 +184,10 @@ CPU.Init >LDAXI MSG.CPU
|
||||
lda A2osX.CPUSPEED
|
||||
pha push CPU speed HI
|
||||
>LDAXI MSG.CPU.SPEEDOK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
CPU.Init.Z80 >LDAXI MSG.Z80
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
jsr DetectZ80
|
||||
bcs .9
|
||||
sta A2osX.Z80SLOT
|
||||
@ -203,11 +198,11 @@ CPU.Init.Z80 >LDAXI MSG.Z80
|
||||
sta A2osX.SLOTS,x
|
||||
|
||||
>LDAXI MSG.Z80.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.9 >LDAXI MSG.Z80.KO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Out:
|
||||
|
@ -7,14 +7,13 @@ AUTO 6
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF SYS/KERNEL
|
||||
*--------------------------------------
|
||||
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/IO.I
|
||||
.INB INC/PRODOS.I
|
||||
.INB INC/MLI.ERR.I
|
||||
*--------------------------------------
|
||||
TmpPtr1 .EQ $0 for X.PRINTF.S
|
||||
|
||||
ZPPtr1 .EQ ZPKERNEL
|
||||
ZPPtr2 .EQ ZPKERNEL+2
|
||||
ZPPtr3 .EQ ZPKERNEL+4
|
||||
@ -38,12 +37,12 @@ ZPPtr4 .EQ ZPKERNEL+6
|
||||
.INB /A2OSX.SRC/X.PRINTF.S
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT2
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.INIT3
|
||||
* Global Page
|
||||
|
||||
A2osX.GP .PH $BD00
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.GP
|
||||
.EP
|
||||
A2osX.GP.E .EQ *
|
||||
* LC AUX $D000 BANK1 API Calls $00-$3E
|
||||
|
||||
A2osX.D1 .PH $D000
|
||||
.DA #RRAMWRAMBNK1
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
|
||||
@ -57,7 +56,7 @@ A2osX.D1 .PH $D000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.BIN
|
||||
.EP
|
||||
A2osX.D1.E .EQ *
|
||||
* LC AUX $D000 BANK2 API Calls $40-$8E
|
||||
|
||||
A2osX.D2 .PH $D000
|
||||
.DA #RRAMWRAMBNK2
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.CIO
|
||||
@ -72,7 +71,7 @@ A2osX.D2 .PH $D000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.TSK
|
||||
.EP
|
||||
A2osX.D2.E .EQ *
|
||||
* LC AUX $E000 API Calls $80-$FE
|
||||
|
||||
A2osX.E0 .PH $E000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP
|
||||
.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.CNV
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.CHR
|
||||
* Make sure KERNEL.S.D01 is the last one
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.D01
|
||||
.EP
|
||||
A2osX.E0.E .EQ *
|
||||
|
@ -16,7 +16,7 @@ AUTO 6
|
||||
TmpPtr1 .EQ $0
|
||||
*--------------------------------------
|
||||
AT.INIT >LDAXI MSG.INIT
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
lda #$F9
|
||||
sta TmpPtr1
|
||||
@ -44,7 +44,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
|
||||
pha
|
||||
>LDAXI MSG.FAILED
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.3 dec TmpPtr1+1
|
||||
@ -53,7 +53,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
bne .1
|
||||
|
||||
>LDAXI MSG.NOHW
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.4 stx WC.Flag
|
||||
@ -64,7 +64,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
pha Push slot #
|
||||
phy Push Type #
|
||||
>LDAXI MSG.HWOK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
>LDYA MLI+1
|
||||
>STYA GO.OLDMLI+1
|
||||
@ -80,7 +80,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
>STYA MLI+1
|
||||
|
||||
.5 >LDAXI MSG.ATINIT
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr GO.WSCARD
|
||||
.DA #MLIATALK
|
||||
@ -88,7 +88,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
bcs .9
|
||||
|
||||
>LDAXI MSG.IRQ
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIALLOCIRQ
|
||||
@ -98,7 +98,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
cli
|
||||
|
||||
>LDAXI MSG.PREFIX2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr GO.OLDMLI
|
||||
.DA #MLIGETPREFIX
|
||||
@ -106,7 +106,7 @@ AT.INIT >LDAXI MSG.INIT
|
||||
bcs .9
|
||||
|
||||
>LDAXI MSG.PREFIX2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr GO.WSCARD
|
||||
.DA #MLISETPREFIX
|
||||
@ -114,12 +114,12 @@ AT.INIT >LDAXI MSG.INIT
|
||||
bcs .9
|
||||
|
||||
>LDAXI MSG.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>LDAXI MSG.KO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
*--------------------------------------
|
||||
GO.WSCARD jmp $ffff Self Modifed
|
||||
|
@ -27,13 +27,13 @@ RW.BLOCK .EQ $A00
|
||||
RWBankSelect .EQ $C073
|
||||
*--------------------------------------
|
||||
RW.Init >LDAXI RW.MSG
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr RW.Detect1
|
||||
bcs .10
|
||||
|
||||
>LDAXI RW.MSG.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
rts
|
||||
|
||||
@ -41,7 +41,7 @@ RW.Init >LDAXI RW.MSG
|
||||
bcc .1
|
||||
|
||||
>LDAXI RW.MSG.KO1
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.1 pha Push Page count
|
||||
@ -56,27 +56,27 @@ RW.Init >LDAXI RW.MSG
|
||||
pha Push Kbyte HI
|
||||
|
||||
>LDAXI RW.MSG.OK1
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr RW.Install
|
||||
bcc .2
|
||||
|
||||
>LDAXI RW.MSG.KO2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.2 >LDAXI RW.MSG.OK2
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr RW.Format
|
||||
bcc .3
|
||||
|
||||
>LDAXI RW.MSG.KO3
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.3 >LDAXI RW.MSG.OK3
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
*--------------------------------------
|
||||
RW.Detect1 jsr MLI
|
||||
@ -146,9 +146,9 @@ RW.Detect2 php
|
||||
inx
|
||||
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
|
||||
|
||||
|
@ -20,7 +20,7 @@ VS.CMD .EQ $C5 "E": Virtual Drive Command Envelope
|
||||
DRV.EntryPoint .EQ $BF41
|
||||
*--------------------------------------
|
||||
VSDRIVE.Init >LDAXI VSDRIVE.MSG0
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr VSDRIVE.Check
|
||||
bcs .90
|
||||
@ -37,13 +37,13 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
|
||||
pha slot n
|
||||
|
||||
>LDAXI VSDRIVE.SSCOK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr VSDRIVE.Ping
|
||||
bcs .92
|
||||
|
||||
>LDAXI VSDRIVE.SRVOK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr VSDRIVE.SetSlot
|
||||
bcs .91
|
||||
@ -51,24 +51,24 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
|
||||
pha save slot
|
||||
pha 2 times
|
||||
>LDAXI VSDRIVE.DEVOK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
jsr VSDRIVE.Install
|
||||
|
||||
>LDAXI VSDRIVE.OK
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.90 >LDAXI VSDRIVE.DRVKO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.91 >LDAXI VSDRIVE.NOSLOT
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
|
||||
.92 >LDAXI VSDRIVE.SRVKO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
|
||||
inc .1+1
|
||||
lda .1+1
|
||||
@ -76,7 +76,7 @@ VSDRIVE.Init >LDAXI VSDRIVE.MSG0
|
||||
bne .2 Go try next SSC....
|
||||
|
||||
.99 >LDAXI VSDRIVE.SSCKO
|
||||
jsr PrintCStrAX
|
||||
jsr PrintFAX
|
||||
rts
|
||||
*--------------------------------------
|
||||
VSDRIVE.Check bit RRAMWRAMBNK2
|
||||
@ -119,7 +119,7 @@ SSC.Detect stz TmpPtr1
|
||||
pha zzzzzzz...
|
||||
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
|
||||
|
||||
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
|
||||
|
194
X.PRINTF.S.txt
194
X.PRINTF.S.txt
@ -5,109 +5,111 @@ INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
PrintPStrAX >STAX TmpPtr1
|
||||
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
|
||||
PrintFAX >STAX PrintFAX.Next+1
|
||||
pla
|
||||
sta .91+1
|
||||
sta PrintFAX.99+1
|
||||
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
|
||||
|
||||
jsr PrintCStrAX.Next
|
||||
beq .9
|
||||
jsr PrintFAX.Next
|
||||
beq PrintFAX.90
|
||||
|
||||
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
|
||||
|
||||
jsr PrintCStrAX.Next
|
||||
beq .9
|
||||
.2 jsr PrintFAX.Next
|
||||
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'
|
||||
bne .9
|
||||
bne .8
|
||||
lda #$0D
|
||||
|
||||
.7 ora #$80
|
||||
.8 ora #$80
|
||||
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
|
||||
.91 lda #$ff Self modified RTS LO
|
||||
PrintFAX.99 lda #$ff Self modified RTS LOPrintFAXPrintFAX
|
||||
pha
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintCStrAX.Next
|
||||
lda $ffff
|
||||
PrintFAX.Next lda $ffff
|
||||
beq .8
|
||||
inc PrintCStrAX.Next+1
|
||||
inc PrintFAX.Next+1
|
||||
bne .8
|
||||
inc PrintCStrAX.Next+2 Always !=0
|
||||
|
||||
inc PrintFAX.Next+2 Always !=0
|
||||
.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
|
||||
PrintAXDec >STAX X.HexBuffer
|
||||
PrintFAX.D ldx #0
|
||||
.HS D0 bne
|
||||
PrintFAX.DD plx
|
||||
pla
|
||||
>STAX X.HexBuffer
|
||||
stz X.BCDBuffer
|
||||
stz X.BCDBuffer+1
|
||||
stz X.BCDBuffer+2
|
||||
@ -182,7 +184,37 @@ PrintAXDec >STAX X.HexBuffer
|
||||
cpy #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.BCDBuffer .BS 3
|
||||
|
Loading…
x
Reference in New Issue
Block a user