!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 ; ; other stuff ; aFileBuffer = $9200 MLI = $BF00 MACHID = $BF98 jmp Start ; magic jump !byte $EE,$EE ; magic bytes !byte $40 ; length of sStartupPath sStartupPath !fill $40 Start ldy #(CodeEnd-CodeStart) ; copy code to lower memory so we can load graphic at $2000 - ldx CodeStart-1,y ; the last byte fetched (3, for the MLI_OPEN parameter count) ; is later re-used for unrelated purposes stx $4f,y dey bne - ; Y is 0 on exit, required later ;CheckFor128K lda MACHID and #$30 cmp #$30 ; 128K? beq + ; yes, continue sty sStartupPath ; no, trash startup path so MLI_OPEN fails and we quit immediately + jsr MLI ; open file !byte kMLIOpen !word mliParamForOpen inx ; convert to kMLIReadOrQuitCount, clear Z flag stx aux copy loop ; read first half of graphic (belongs in auxmem) ; does not return if error ;DHGRCopy sta $C005 ; read from mainmem, write to auxmem - lda (CopyToAux),y ; Y is zero from first loop sta (CopyToAux),y ; Y is zero from first loop iny bne - inc <(CopyToAuxHigh) bit <(CopyToAuxHigh) ; copy until $4000 bvc - SoftswitchBase=*+1 sta $C000,x ; read from mainmem, write to mainmem ($C004 because X is 4 from above) jsr Read ; read second half of graphic (stays in main memory) ; does not return if error ;DHGRShow ldx #(softswitches_e-softswitches)-1 - ldy