pitch-dark/src/onbeyond/onbeyond.system.s

205 lines
3.4 KiB
ArmAsm
Raw Normal View History

2018-02-17 20:10:38 +00:00
;license:MIT
;(c) 2018 by qkumba
2018-02-20 21:37:28 +00:00
!to "build/ONBEYOND.SYSTEM",plain
2018-02-17 20:10:38 +00:00
*=$2000
jmp init
!byte $ee,$ee,64
!fill 64
filetype=$f5
auxtype=$8000 ;really $80xx
;get prefix, if any
init
lda $bf30
sta c5_parms+1
- jsr $bf00
op_c7
!byte $c7
!word c7_parms
2018-04-28 05:12:45 +00:00
ldx $280
2018-02-17 20:10:38 +00:00
bne +
;if not, get volume name
jsr $bf00
!byte $c5
!word c5_parms
2018-06-15 00:17:43 +00:00
lda $281
2018-02-17 20:10:38 +00:00
and #$0f
2018-06-15 00:17:43 +00:00
tax
inx
stx $280
2018-02-17 20:10:38 +00:00
lda #$2f
2018-04-28 05:12:45 +00:00
sta $281
2018-02-17 20:10:38 +00:00
;set that as prefix
dec op_c7
bne -
+ lda #$2f
2018-04-28 05:12:45 +00:00
cmp $280,x
2018-02-17 20:10:38 +00:00
beq +
2018-04-17 22:50:28 +00:00
inx
2018-04-28 05:12:45 +00:00
stx $280
sta $280,x
2018-04-17 22:50:28 +00:00
;form absolute path
+ ldy $2006
- dey
beq +
lda $2006,y
cmp #$2f
bne -
tya
pha
clc
2018-04-28 05:12:45 +00:00
adc $280
sta $280
2018-04-17 22:50:28 +00:00
tax
- lda $2006,y
2018-04-28 05:12:45 +00:00
sta $280,x
2018-04-17 22:50:28 +00:00
dex
dey
bne -
pla
tay
ldx #0
- iny
lda $2006,y
sta $2007,x
inx
cpy $2006
bne -
stx $2006
;set that as prefix
jsr $bf00
!byte $c6
!word c7_parms
2018-02-17 20:10:38 +00:00
;get attributes for passed file
+ jsr $bf00
!byte $c4
!word c4_parms
bcc +
quit jsr $bf00
!byte $65
!word quit_parms
+ lda c4_parms+4
cmp #filetype
bne quit
lda c4_parms+6
cmp #>auxtype
bne quit
;select interpreter by auxtype
2018-03-21 22:25:48 +00:00
;1, 2, 3, 4, 5, "$55" (special case)
2018-02-17 20:10:38 +00:00
lda c4_parms+5
2018-03-21 22:25:48 +00:00
beq quit
2018-02-17 20:10:38 +00:00
cmp #$55
2018-03-21 22:25:48 +00:00
beq +
2018-02-17 20:10:38 +00:00
cmp #6
bcs quit
2018-03-21 22:25:48 +00:00
dec filename
2018-02-17 20:10:38 +00:00
ora #$30
2018-02-20 23:54:12 +00:00
sta version
2018-03-21 22:25:48 +00:00
+
2018-02-17 20:10:38 +00:00
;get volume name
2018-04-17 22:50:28 +00:00
inc c5_parms+3
lda #$81
sta c5_parms+2
2018-02-17 20:10:38 +00:00
jsr $bf00
!byte $c5
!word c5_parms
ldx $381
2018-02-17 20:10:38 +00:00
inx
txa
and #$0f
sta $380
2018-02-17 20:10:38 +00:00
lda #$2f
sta $381
2018-02-17 20:10:38 +00:00
;use that for intepreter location
jsr $bf00
!byte $c6
!word c6_parms
;open/read/close
jsr $bf00
!byte $c8
!word c8_parms
lda c8_parms+5
sta ca_parms+1
jsr $bf00
!byte $ca
!word ca_parms
jsr $bf00
!byte $cc
!word cc_parms
;set prefix to passed file
jsr $bf00
!byte $c6
!word c7_parms
;run interpreter
jmp $3000
c7_parms
!byte 1
2018-04-28 05:12:45 +00:00
!word $280
2018-02-17 20:10:38 +00:00
c5_parms
!byte 2
!byte 0
2018-04-28 05:12:45 +00:00
!word $281
2018-02-17 20:10:38 +00:00
!byte $d1
c6_parms
!byte 1
!word $380
2018-02-17 20:10:38 +00:00
c4_parms
!byte $0a
!word $2006
!text "qkumba was here"
c8_parms
!byte 3
!word filename
!word $800
!byte 0
quit_parms
ca_parms
!byte 4
!byte $ff
!word $3000
!word $ffff
!word $ffff
2018-04-28 05:12:45 +00:00
cc_parms
!byte 1
!byte 0
2018-02-17 20:10:38 +00:00
filename
!byte (filename_e-filename)-1
2018-02-22 20:48:51 +00:00
!text "LIB/ONBEYONDZ"
2018-02-20 23:54:12 +00:00
version !text "5U"
2018-02-17 20:10:38 +00:00
filename_e
2018-02-20 21:37:28 +00:00
!byte $D3,$C1,$CE,$A0,$C9,$CE,$C3,$AE