!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 !byte $00 ; ProDOS file refnum (filled by MLI_OPEN call) !word $2000 ; data address !word $2000 ; data length } CodeEnd