mirror of
https://github.com/a2-4am/a2fc.system.git
synced 2024-06-26 23:29:31 +00:00
117 lines
2.3 KiB
Plaintext
117 lines
2.3 KiB
Plaintext
!cpu 6502
|
|
!to "../build/A2FC.SYSTEM#FF2000",plain
|
|
*=$2000
|
|
;
|
|
; A2FC.SYSTEM
|
|
; (c) 2018 by 4am
|
|
; a very small DHGR graphics viewer
|
|
; takes pathname of .a2fc file (in $2006),
|
|
; loads it,
|
|
; displays it,
|
|
; waits for key,
|
|
; quits via MLI
|
|
;
|
|
|
|
;
|
|
; MLI commands
|
|
;
|
|
kMLIOpen = $C8
|
|
kMLIRead = $CA
|
|
kMLIClose = $CC
|
|
kMLIQuit = $65
|
|
;
|
|
; MLI parameter counts
|
|
;
|
|
kMLIOpenCount = $03
|
|
kMLIReadCount = $04
|
|
kMLICloseCount = $01
|
|
kMLIQuitCount = $04
|
|
;
|
|
; other stuff
|
|
;
|
|
aFileBuffer = $9200
|
|
MLI = $BF00
|
|
|
|
jmp Start ; magic jump
|
|
!byte $EE,$EE ; magic bytes
|
|
!byte $40 ; length of inputfile buffer
|
|
inputfilebuffer
|
|
!fill $40
|
|
Start
|
|
ldx #(CodeEnd-CodeStart)
|
|
txs
|
|
- lda CodeStart-1,x
|
|
pha
|
|
dex
|
|
bne -
|
|
jmp MLI
|
|
|
|
CodeStart
|
|
!pseudopc $101 {
|
|
!word Open-1
|
|
Open
|
|
!byte kMLIOpen
|
|
!word mliParamForOpen
|
|
bcs Quit
|
|
jsr Read
|
|
bcs Close
|
|
;DHGRCopy
|
|
sta $C00A
|
|
sta $C000
|
|
sta $C005 ; read from mainmem, write to auxmem
|
|
ldx #$20
|
|
stx $45 ; $44 is always 0 after MLI read
|
|
tay
|
|
- lda ($44),y
|
|
sta ($44),y
|
|
iny
|
|
bne -
|
|
inc $45
|
|
dex
|
|
bne -
|
|
sta $C004 ; read/write from mainmem
|
|
jsr Read
|
|
Close
|
|
php
|
|
lda #kMLIClose
|
|
ldy #kMLICloseCount
|
|
jsr CallMLI
|
|
plp
|
|
bcs Quit
|
|
;DHGRShow
|
|
lda $C05E
|
|
sta $C00D
|
|
bit $C050
|
|
bit $C054
|
|
bit $C052
|
|
bit $C057
|
|
;WaitForKey
|
|
- lda $C000
|
|
bpl -
|
|
Quit
|
|
lda #kMLIQuit
|
|
ldy #kMLIQuitCount
|
|
bne CallMLI ; always branches
|
|
Read
|
|
lda #kMLIRead
|
|
ldy #kMLIReadCount
|
|
CallMLI
|
|
sta mlicmd
|
|
sty mliparam
|
|
jsr MLI
|
|
mlicmd !byte kMLIRead
|
|
!word mliparam
|
|
rts
|
|
|
|
mliParamForOpen
|
|
!byte kMLIOpenCount
|
|
!word inputfilebuffer
|
|
!byte <aFileBuffer
|
|
mliparam
|
|
!byte >aFileBuffer
|
|
!byte $00 ; ProDOS file refnum (filled by MLI_OPEN call)
|
|
!word $2000 ; data address
|
|
!word $2000 ; data length
|
|
}
|
|
CodeEnd
|