mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
KM.NSC.S Initial Commit
This commit is contained in:
parent
53fe243b01
commit
8e56af9fe3
294
SYS/KM.NSC.S.txt
Normal file
294
SYS/KM.NSC.S.txt
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /DATA/A2OSX
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65C02
|
||||||
|
.OR $2000
|
||||||
|
.TF SYS/KM.NSC
|
||||||
|
*--------------------------------------
|
||||||
|
.INB INC/MACROS.I
|
||||||
|
.INB INC/A2OSX.I
|
||||||
|
.INB INC/IO.I
|
||||||
|
.INB INC/MONITOR.I
|
||||||
|
.INB INC/PRODOS.I
|
||||||
|
*--------------------------------------
|
||||||
|
TmpPtr1 .EQ $0
|
||||||
|
TmpPtr2 .EQ $2
|
||||||
|
*--------------------------------------
|
||||||
|
NSC.Init >LDAXI NSC.MSG0
|
||||||
|
jsr NSC.Print
|
||||||
|
lda MACHID
|
||||||
|
and #MACHID.CLK Clock already installed ?
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
>LDAXI NSC.MSG1
|
||||||
|
jsr NSC.Print
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 jsr NSC.Detect
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
>LDAXI NSC.MSG2
|
||||||
|
jsr NSC.Print
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 jsr NSC.Install
|
||||||
|
|
||||||
|
lda MACHID
|
||||||
|
ora #MACHID.CLK
|
||||||
|
sta MACHID
|
||||||
|
|
||||||
|
>LDAXI NSC.MSG3
|
||||||
|
jsr NSC.Print
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
NSC.Detect php
|
||||||
|
sei
|
||||||
|
sta $CFFF
|
||||||
|
sta $C00A
|
||||||
|
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
.1 ldy #8
|
||||||
|
.2 lda $C304
|
||||||
|
|
||||||
|
lsr
|
||||||
|
ror DS1216E.DATA1,x
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda $C304 Reset DS1216E comparison register with READ A2=1
|
||||||
|
|
||||||
|
ldx #7 Read 8 bytes...
|
||||||
|
|
||||||
|
.3 lda DS1216E.PATTERN,x
|
||||||
|
phx
|
||||||
|
ldx #8 ....of 8 bits
|
||||||
|
|
||||||
|
.4 ldy #0
|
||||||
|
lsr
|
||||||
|
bcc .5
|
||||||
|
iny
|
||||||
|
.5 sta $C300,y Write Pattern bit in A0, with A2=0
|
||||||
|
dex
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
plx
|
||||||
|
dex
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
.6 ldy #8
|
||||||
|
.7 lda $C304
|
||||||
|
|
||||||
|
lsr
|
||||||
|
ror DS1216E.DATA2,x
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .6
|
||||||
|
|
||||||
|
ldx #7
|
||||||
|
.8 lda DS1216E.DATA1,x
|
||||||
|
cmp DS1216E.DATA2,x
|
||||||
|
bne .9
|
||||||
|
dex
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
DS1216E.DATA1 .BS 8
|
||||||
|
DS1216E.DATA2 .BS 8
|
||||||
|
*--------------------------------------
|
||||||
|
NSC.Install lda DATETIME+1
|
||||||
|
sta TmpPtr1
|
||||||
|
sec
|
||||||
|
sbc #NSCDRV.B.START
|
||||||
|
sta NSCDRV.OFFSET
|
||||||
|
|
||||||
|
lda DATETIME+2
|
||||||
|
sta TmpPtr1+1
|
||||||
|
sbc /NSCDRV.B.START
|
||||||
|
sta NSCDRV.OFFSET+1
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 lda NSCDRV.RELOC,x
|
||||||
|
beq .2
|
||||||
|
sta TmpPtr2
|
||||||
|
inx
|
||||||
|
lda NSCDRV.RELOC,x
|
||||||
|
sta TmpPtr2+1
|
||||||
|
|
||||||
|
lda (TmpPtr2)
|
||||||
|
clc
|
||||||
|
adc NSCDRV.OFFSET
|
||||||
|
sta (TmpPtr2)
|
||||||
|
|
||||||
|
lda (TmpPtr2),y
|
||||||
|
adc NSCDRV.OFFSET+1
|
||||||
|
sta (TmpPtr2),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 lda RRAMWRAMBNK1
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
|
||||||
|
.3 ldy #0
|
||||||
|
.7 lda NSCDRV.B.START,y
|
||||||
|
sta (TmpPtr1),y
|
||||||
|
iny
|
||||||
|
cpy #NSCDRV.SIZE
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
lda RROMBNK1
|
||||||
|
|
||||||
|
lda #$4C
|
||||||
|
sta DATETIME
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
NSCDRV.OFFSET .BS 2
|
||||||
|
NSCDRV.RELOC .DA NSCDRV.R1+1
|
||||||
|
.DA NSCDRV.R2+1
|
||||||
|
.DA NSCDRV.R3+1
|
||||||
|
.DA NSCDRV.R4+1
|
||||||
|
.DA NSCDRV.R5+1
|
||||||
|
.DA NSCDRV.R6+1
|
||||||
|
.DA NSCDRV.R7+1
|
||||||
|
.DA NSCDRV.R8+1
|
||||||
|
.DA NSCDRV.R9+1
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
NSC.Print >STAX TmpPtr1
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda (TmpPtr1),y
|
||||||
|
beq .9
|
||||||
|
ora #$80
|
||||||
|
jsr COUT
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
.9 jmp CROUT
|
||||||
|
*--------------------------------------
|
||||||
|
NSC.MSG0 >CSTRING "NSC ('No-Slot-Clock'/DS1216E) Driver For A2osX."
|
||||||
|
NSC.MSG1 >CSTRING " A Clock Driver Is Already Installed."
|
||||||
|
NSC.MSG2 >CSTRING " DS1216E Chip Not Detected."
|
||||||
|
NSC.MSG3 >CSTRING " DS1216E Driver Successfully Installed."
|
||||||
|
*--------------------------------------
|
||||||
|
* Driver For DS1216E
|
||||||
|
*--------------------------------------
|
||||||
|
NSCDRV.B.START .EQ *
|
||||||
|
NSCDRV php
|
||||||
|
sei
|
||||||
|
sta $CFFF Make cards release $C8xx space
|
||||||
|
sta $C00A Force IIe/IIc Internal C300 rom
|
||||||
|
|
||||||
|
lda $C304 Reset DS1216E comparison register with READ A2=1
|
||||||
|
|
||||||
|
ldx #7 Read 8 bytes...
|
||||||
|
|
||||||
|
NSCDRV.1
|
||||||
|
NSCDRV.R1 lda DS1216E.PATTERN,x
|
||||||
|
phx
|
||||||
|
ldx #8 ....of 8 bits
|
||||||
|
|
||||||
|
NSCDRV.2 ldy #0
|
||||||
|
lsr
|
||||||
|
bcc NSCDRV.21
|
||||||
|
iny
|
||||||
|
NSCDRV.21 sta $C300,y Write Pattern bit in A0, with A2=0
|
||||||
|
dex
|
||||||
|
bne NSCDRV.2
|
||||||
|
|
||||||
|
plx
|
||||||
|
dex
|
||||||
|
bpl NSCDRV.1
|
||||||
|
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
NSCDRV.4 ldy #8
|
||||||
|
NSCDRV.5 lda $C304 Read Byte...
|
||||||
|
|
||||||
|
lsr
|
||||||
|
NSCDRV.R2 ror DS1216E.DATA,x
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne NSCDRV.5
|
||||||
|
|
||||||
|
NSCDRV.R3 lda DS1216E.DATA,x
|
||||||
|
pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
and #$0F
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.HS 2C Bit Absolute to skip adc #$0A
|
||||||
|
|
||||||
|
NSCDRV.6 adc #$0A
|
||||||
|
dey
|
||||||
|
bpl NSCDRV.6
|
||||||
|
|
||||||
|
NSCDRV.R4 sta DS1216E.DATA,x
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl NSCDRV.4
|
||||||
|
|
||||||
|
NSCDRV.R5 lda DS1216E.DATA+4 Get HH
|
||||||
|
sta TIMELO+1
|
||||||
|
|
||||||
|
NSCDRV.R6 lda DS1216E.DATA+5 Get mm
|
||||||
|
sta TIMELO
|
||||||
|
|
||||||
|
NSCDRV.R7 lda DS1216E.DATA+1 Get MM
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
NSCDRV.R8 ora DS1216E.DATA+2 Get DD
|
||||||
|
sta DATELO
|
||||||
|
NSCDRV.R9 lda DS1216E.DATA Get YY
|
||||||
|
rol
|
||||||
|
sta DATELO+1
|
||||||
|
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
DS1216E.PATTERN .HS 5CA33AC55CA33AC5 Reverted 7->0
|
||||||
|
DS1216E.DATA .BS 8 Reverted YY MM DD Day HH mm SS CS
|
||||||
|
*--------------------------------------
|
||||||
|
NSCDRV.B.END .EQ *
|
||||||
|
NSCDRV.SIZE .EQ NSCDRV.B.END-NSCDRV.B.START
|
||||||
|
*--------------------------------------
|
||||||
|
* CONTROL SECTION :
|
||||||
|
*--------------------------------------
|
||||||
|
.DO NSCDRV.SIZE>125
|
||||||
|
ERROR:NSCDRV.SIZE too big
|
||||||
|
.FIN
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KM.NSC.S
|
||||||
|
ASM
|
Loading…
Reference in New Issue
Block a user