mirror of
https://github.com/a2stuff/prodos-drivers.git
synced 2024-06-06 13:29:51 +00:00
NSC: More structure determination
This commit is contained in:
parent
613c12d7f0
commit
d7b48628f4
|
@ -54,6 +54,7 @@ SETVID := $FE93
|
||||||
|
|
||||||
.define HI(c) ((c)|$80)
|
.define HI(c) ((c)|$80)
|
||||||
|
|
||||||
|
data_buffer = $1800
|
||||||
|
|
||||||
|
|
||||||
;;; --------------------------------------------------
|
;;; --------------------------------------------------
|
||||||
|
@ -139,10 +140,10 @@ L1046: cld
|
||||||
jsr INIT
|
jsr INIT
|
||||||
ldx #$17
|
ldx #$17
|
||||||
lda #$01
|
lda #$01
|
||||||
L1077: sta BITMAP,x
|
: sta BITMAP,x
|
||||||
lda #$00
|
lda #$00
|
||||||
dex
|
dex
|
||||||
bne L1077
|
bne :-
|
||||||
lda #$CF
|
lda #$CF
|
||||||
sta BITMAP
|
sta BITMAP
|
||||||
lda MACHID
|
lda MACHID
|
||||||
|
@ -164,6 +165,8 @@ L1090: lda MACHID
|
||||||
|
|
||||||
jmp exit
|
jmp exit
|
||||||
|
|
||||||
|
;;; --------------------------------------------------
|
||||||
|
|
||||||
L10BD: ldy #$03
|
L10BD: ldy #$03
|
||||||
L10BF: lda DATELO,y
|
L10BF: lda DATELO,y
|
||||||
sta L1197,y
|
sta L1197,y
|
||||||
|
@ -275,9 +278,11 @@ loop: lda L13FF,y
|
||||||
dey
|
dey
|
||||||
bpl loop
|
bpl loop
|
||||||
|
|
||||||
|
;; Set the "Recognizable Clock Card" bit
|
||||||
lda MACHID
|
lda MACHID
|
||||||
ora #$01
|
ora #$01
|
||||||
sta MACHID
|
sta MACHID
|
||||||
|
|
||||||
lda #$4C ; JMP opcode
|
lda #$4C ; JMP opcode
|
||||||
sta DATETIME
|
sta DATETIME
|
||||||
|
|
||||||
|
@ -294,7 +299,7 @@ loop: lda L13FF,y
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
;; Display the current date
|
;; Display the current date
|
||||||
lda DATELO+1
|
lda DATELO+1 ; month
|
||||||
ror a
|
ror a
|
||||||
pha
|
pha
|
||||||
lda DATELO
|
lda DATELO
|
||||||
|
@ -305,22 +310,26 @@ loop: lda L13FF,y
|
||||||
rol a
|
rol a
|
||||||
and #%00001111
|
and #%00001111
|
||||||
jsr cout_number
|
jsr cout_number
|
||||||
lda #(HI '/')
|
|
||||||
|
lda #(HI '/') ; /
|
||||||
jsr COUT
|
jsr COUT
|
||||||
pla
|
|
||||||
|
pla ; day
|
||||||
and #%00011111
|
and #%00011111
|
||||||
jsr cout_number
|
jsr cout_number
|
||||||
lda #(HI '/')
|
|
||||||
|
lda #(HI '/') ; /
|
||||||
jsr COUT
|
jsr COUT
|
||||||
pla
|
|
||||||
|
pla ; year
|
||||||
jsr cout_number
|
jsr cout_number
|
||||||
jsr CROUT
|
jsr CROUT
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
;;; --------------------------------------------------
|
;;; --------------------------------------------------
|
||||||
|
|
||||||
;; Twiddle reset vector?
|
|
||||||
exit:
|
exit:
|
||||||
|
;; Twiddle reset vector?
|
||||||
lda #$65
|
lda #$65
|
||||||
sta $03F2
|
sta $03F2
|
||||||
lda #$13
|
lda #$13
|
||||||
|
@ -331,37 +340,39 @@ exit:
|
||||||
;;; --------------------------------------------------
|
;;; --------------------------------------------------
|
||||||
;;; Invoke next .SYSTEM file
|
;;; Invoke next .SYSTEM file
|
||||||
|
|
||||||
|
|
||||||
.define SYSTEM_SUFFIX ".SYSTEM"
|
.define SYSTEM_SUFFIX ".SYSTEM"
|
||||||
|
|
||||||
|
.proc find_next_sys_file
|
||||||
|
ptr := $A5
|
||||||
|
|
||||||
lda DEVNUM
|
lda DEVNUM
|
||||||
sta read_block_params_unit_num
|
sta read_block_params_unit_num
|
||||||
jsr read_block
|
jsr read_block
|
||||||
lda $1823
|
lda data_buffer + $23
|
||||||
sta L128C
|
sta adc1+1
|
||||||
lda $1824
|
lda data_buffer + $24
|
||||||
sta L1298
|
sta cmp1+1
|
||||||
lda #$01
|
lda #1
|
||||||
sta $A7
|
sta $A7
|
||||||
lda #$2B
|
lda #<(data_buffer + $2B)
|
||||||
sta $A5
|
sta ptr
|
||||||
lda #$18
|
lda #>(data_buffer + $2B)
|
||||||
sta $A6
|
sta ptr+1
|
||||||
L124F: ldy #$10
|
L124F: ldy #$10
|
||||||
lda ($A5),y
|
lda (ptr),y
|
||||||
cmp #$FF ; type=SYS ???
|
cmp #$FF ; type=SYS ???
|
||||||
bne L1288
|
bne L1288
|
||||||
ldy #$00
|
ldy #$00
|
||||||
lda ($A5),y
|
lda (ptr),y
|
||||||
and #$30
|
and #$30
|
||||||
beq L1288
|
beq L1288
|
||||||
lda ($A5),y
|
lda (ptr),y
|
||||||
and #$0F
|
and #$0F
|
||||||
sta $A8
|
sta $A8
|
||||||
tay
|
tay
|
||||||
;; Compare suffix - is it .SYSTEM?
|
;; Compare suffix - is it .SYSTEM?
|
||||||
ldx #.strlen(SYSTEM_SUFFIX)-1
|
ldx #.strlen(SYSTEM_SUFFIX)-1
|
||||||
L1268: lda ($A5),y
|
L1268: lda (ptr),y
|
||||||
cmp suffix,x
|
cmp suffix,x
|
||||||
bne L1288
|
bne L1288
|
||||||
dey
|
dey
|
||||||
|
@ -370,7 +381,7 @@ L1268: lda ($A5),y
|
||||||
ldy self_name
|
ldy self_name
|
||||||
cpy $A8
|
cpy $A8
|
||||||
bne L12BE
|
bne L12BE
|
||||||
: lda ($A5),y
|
: lda (ptr),y
|
||||||
cmp self_name,y
|
cmp self_name,y
|
||||||
bne L12BE
|
bne L12BE
|
||||||
dey
|
dey
|
||||||
|
@ -379,17 +390,16 @@ L1268: lda ($A5),y
|
||||||
ror found_self_flag
|
ror found_self_flag
|
||||||
|
|
||||||
;; go on to next file (???)
|
;; go on to next file (???)
|
||||||
L1288: lda $A5
|
L1288: lda ptr
|
||||||
clc
|
clc
|
||||||
.byte $69
|
adc1: adc #$27
|
||||||
L128C: rmb2 $85
|
sta ptr
|
||||||
lda $90
|
bcc L1293
|
||||||
.byte $02
|
inc ptr+1
|
||||||
inc $A6
|
L1293: inc $A7
|
||||||
inc $A7
|
|
||||||
lda $A7
|
lda $A7
|
||||||
.byte $C9
|
cmp1: cmp #$0D
|
||||||
L1298: ora $B490
|
bcc $124F
|
||||||
lda $1802
|
lda $1802
|
||||||
sta read_block_params_block_num
|
sta read_block_params_block_num
|
||||||
lda $1803
|
lda $1803
|
||||||
|
@ -399,10 +409,10 @@ L1298: ora $B490
|
||||||
jsr read_block
|
jsr read_block
|
||||||
lda #$00
|
lda #$00
|
||||||
sta $A7
|
sta $A7
|
||||||
lda #$04
|
lda #<(data_buffer + $04)
|
||||||
sta $A5
|
sta ptr
|
||||||
lda #$18
|
lda #>(data_buffer + $04)
|
||||||
sta $A6
|
sta ptr+1
|
||||||
jmp L124F
|
jmp L124F
|
||||||
|
|
||||||
L12BE: bit found_self_flag
|
L12BE: bit found_self_flag
|
||||||
|
@ -417,10 +427,11 @@ L12C8: dex
|
||||||
eor #'/'
|
eor #'/'
|
||||||
asl a
|
asl a
|
||||||
bne L12C8
|
bne L12C8
|
||||||
L12D3: ldy #$00
|
|
||||||
|
L12D3: ldy #0
|
||||||
L12D5: iny
|
L12D5: iny
|
||||||
inx
|
inx
|
||||||
L12D7: lda ($A5),y
|
L12D7: lda (ptr),y
|
||||||
sta PATHNAME,x
|
sta PATHNAME,x
|
||||||
cpy $A8
|
cpy $A8
|
||||||
bcc L12D5
|
bcc L12D5
|
||||||
|
@ -441,30 +452,33 @@ L12E6: jsr zstrout
|
||||||
bpl :-
|
bpl :-
|
||||||
bit KBDSTRB
|
bit KBDSTRB
|
||||||
jmp quit
|
jmp quit
|
||||||
|
.endproc
|
||||||
|
|
||||||
;;; --------------------------------------------------
|
;;; --------------------------------------------------
|
||||||
;;; Output a high-ascii, null-terminated string.
|
;;; Output a high-ascii, null-terminated string.
|
||||||
;;; String immediately follows the JSR.
|
;;; String immediately follows the JSR.
|
||||||
|
|
||||||
.proc zstrout
|
.proc zstrout
|
||||||
|
ptr := $A5
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta $A5
|
sta ptr
|
||||||
pla
|
pla
|
||||||
sta $A6
|
sta ptr+1
|
||||||
bne L1334
|
bne L1334
|
||||||
L132A: cmp #(HI 'a') ; lower-case?
|
L132A: cmp #(HI 'a') ; lower-case?
|
||||||
bcc :+
|
bcc :+
|
||||||
and lowercase_mask ; make upper-case if needed
|
and lowercase_mask ; make upper-case if needed
|
||||||
: jsr COUT
|
: jsr COUT
|
||||||
L1334: inc $A5
|
L1334: inc ptr
|
||||||
bne L133A
|
bne L133A
|
||||||
inc $A6
|
inc ptr+1
|
||||||
L133A: ldy #$00
|
L133A: ldy #$00
|
||||||
lda ($A5),y
|
lda (ptr),y
|
||||||
bne L132A
|
bne L132A
|
||||||
lda $A6
|
lda ptr+1
|
||||||
pha
|
pha
|
||||||
lda $A5
|
lda ptr
|
||||||
pha
|
pha
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
@ -526,7 +540,7 @@ lowercase_mask:
|
||||||
.proc read_block_params
|
.proc read_block_params
|
||||||
.byte 3 ; param_count
|
.byte 3 ; param_count
|
||||||
unit_num: .byte $60 ; unit_num
|
unit_num: .byte $60 ; unit_num
|
||||||
.addr $1800 ; data_buffer
|
.addr data_buffer ; data_buffer
|
||||||
block_num: .word 2 ; block_num
|
block_num: .word 2 ; block_num
|
||||||
.endproc
|
.endproc
|
||||||
read_block_params_unit_num := read_block_params::unit_num
|
read_block_params_unit_num := read_block_params::unit_num
|
||||||
|
@ -584,7 +598,7 @@ block_num: .word 2 ; block_num
|
||||||
.proc open_params
|
.proc open_params
|
||||||
.byte 3 ; param_count
|
.byte 3 ; param_count
|
||||||
.addr PATHNAME ; pathname
|
.addr PATHNAME ; pathname
|
||||||
.addr $1800 ; io_buffer
|
.addr data_buffer ; io_buffer
|
||||||
ref_num:.byte 1 ; ref_num
|
ref_num:.byte 1 ; ref_num
|
||||||
.endproc
|
.endproc
|
||||||
open_params_ref_num := open_params::ref_num
|
open_params_ref_num := open_params::ref_num
|
||||||
|
|
Loading…
Reference in New Issue
Block a user