mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-12 16:29:29 +00:00
Load FDRAW.FAST from file at runtime.
This commit is contained in:
parent
78f722db28
commit
7c36bc0010
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -55,6 +55,9 @@ BLKBUFEND EQU $9200 ; 'hidden' bytes within screen
|
||||||
COPYBUF EQU $9200 ; File copy needs separate buffer
|
COPYBUF EQU $9200 ; File copy needs separate buffer
|
||||||
*COPYBUFEND EQU $9400
|
*COPYBUFEND EQU $9400
|
||||||
|
|
||||||
|
* Location of FDraw library in main memory
|
||||||
|
FDRAWADDR EQU $9400
|
||||||
|
|
||||||
* Address in aux memory where ROM will be loaded
|
* Address in aux memory where ROM will be loaded
|
||||||
AUXADDR EQU $8000
|
AUXADDR EQU $8000
|
||||||
|
|
||||||
|
@ -177,10 +180,6 @@ MAINZP MAC
|
||||||
PUT MAINMEM.WILD
|
PUT MAINMEM.WILD
|
||||||
PUT MAINMEM.LISTS
|
PUT MAINMEM.LISTS
|
||||||
PUT MAINMEM.MISC
|
PUT MAINMEM.MISC
|
||||||
PUT FDRAW
|
|
||||||
PUT FDRAW.LINE
|
|
||||||
PUT FDRAW.CIRCLE
|
|
||||||
PUT FDRAW.TABLES
|
|
||||||
PUT AUXMEM.MOSEQU
|
PUT AUXMEM.MOSEQU
|
||||||
PUT AUXMEM.INIT
|
PUT AUXMEM.INIT
|
||||||
PUT AUXMEM.VDU
|
PUT AUXMEM.VDU
|
||||||
|
|
20
auxmem.vdu.s
20
auxmem.vdu.s
|
@ -600,7 +600,7 @@ VDU18 LDA VDUQ+7 ; Argument 'k'
|
||||||
LDA #$01 ; XOR mode
|
LDA #$01 ; XOR mode
|
||||||
:NORM >>> WRTMAIN
|
:NORM >>> WRTMAIN
|
||||||
STA LINETYPE
|
STA LINETYPE
|
||||||
STA Entry+5
|
STA FDRAWADDR+5
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
>>> XF2MAIN,SETLINE
|
>>> XF2MAIN,SETLINE
|
||||||
VDU18RET1 >>> ENTAUX
|
VDU18RET1 >>> ENTAUX
|
||||||
|
@ -649,28 +649,28 @@ VDU25 JSR CVTCOORD ; Convert coordinate system
|
||||||
LDA VDUQ+4
|
LDA VDUQ+4
|
||||||
STA PLOTMODE
|
STA PLOTMODE
|
||||||
LDA VDUQ+5
|
LDA VDUQ+5
|
||||||
STA Entry+6 ; LSB of X1
|
STA FDRAWADDR+6 ; LSB of X1
|
||||||
LDA VDUQ+6
|
LDA VDUQ+6
|
||||||
STA Entry+7 ; MSB of X1
|
STA FDRAWADDR+7 ; MSB of X1
|
||||||
LDA VDUQ+7
|
LDA VDUQ+7
|
||||||
STA Entry+8 ; Y1
|
STA FDRAWADDR+8 ; Y1
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
>>> XF2MAIN,DRAWPNT
|
>>> XF2MAIN,DRAWPNT
|
||||||
:LINE >>> WRTMAIN
|
:LINE >>> WRTMAIN
|
||||||
LDA VDUQ+4
|
LDA VDUQ+4
|
||||||
STA PLOTMODE
|
STA PLOTMODE
|
||||||
LDA XPIXEL+0
|
LDA XPIXEL+0
|
||||||
STA Entry+6
|
STA FDRAWADDR+6
|
||||||
LDA XPIXEL+1
|
LDA XPIXEL+1
|
||||||
STA Entry+7
|
STA FDRAWADDR+7
|
||||||
LDA YPIXEL
|
LDA YPIXEL
|
||||||
STA Entry+8
|
STA FDRAWADDR+8
|
||||||
LDA VDUQ+5
|
LDA VDUQ+5
|
||||||
STA Entry+9 ; LSB of X1
|
STA FDRAWADDR+9 ; LSB of X1
|
||||||
LDA VDUQ+6
|
LDA VDUQ+6
|
||||||
STA Entry+10 ; MSB of X1
|
STA FDRAWADDR+10 ; MSB of X1
|
||||||
LDA VDUQ+7
|
LDA VDUQ+7
|
||||||
STA Entry+11 ; Y1
|
STA FDRAWADDR+11 ; Y1
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
>>> XF2MAIN,DRAWLINE
|
>>> XF2MAIN,DRAWLINE
|
||||||
VDU25RET >>> ENTAUX
|
VDU25RET >>> ENTAUX
|
||||||
|
|
|
@ -19,7 +19,7 @@ NOISE_ON equ 0
|
||||||
|
|
||||||
|
|
||||||
lst off
|
lst off
|
||||||
** org $6000
|
org $9400 ;;; CUSTOMIZED FOR APPLECORN
|
||||||
|
|
||||||
*
|
*
|
||||||
* Macros.
|
* Macros.
|
||||||
|
@ -781,25 +781,25 @@ fixrastxor
|
||||||
|
|
||||||
|
|
||||||
* include the line functions
|
* include the line functions
|
||||||
** put FDRAW.LINE
|
put FDRAW.LINE
|
||||||
|
|
||||||
* include the circle functions
|
* include the circle functions
|
||||||
** put FDRAW.CIRCLE
|
put FDRAW.CIRCLE
|
||||||
|
|
||||||
lst on
|
lst on
|
||||||
CODE_END equ * ;end of code section
|
CODE_END equ * ;end of code section
|
||||||
lst off
|
lst off
|
||||||
|
|
||||||
* include the data tables
|
* include the data tables
|
||||||
** put FDRAW.TABLES
|
put FDRAW.TABLES
|
||||||
|
|
||||||
lst on
|
lst on
|
||||||
DAT_END equ * ;end of data / BSS
|
DAT_END equ * ;end of data / BSS
|
||||||
lst off
|
lst off
|
||||||
|
|
||||||
* Save the appropriate object file.
|
* Save the appropriate object file.
|
||||||
** do USE_FAST
|
do USE_FAST
|
||||||
** sav FDRAW.FAST
|
sav FDRAW.FAST
|
||||||
** else
|
else
|
||||||
** sav FDRAW.SMALL
|
sav FDRAW.SMALL
|
||||||
** fin
|
fin
|
116
mainmem.ldr.s
116
mainmem.ldr.s
|
@ -16,8 +16,19 @@ START JSR CROUT
|
||||||
TRB $C035
|
TRB $C035
|
||||||
|
|
||||||
JSR ROMMENU
|
JSR ROMMENU
|
||||||
JSR LOADROM
|
LDA #>AUXADDR ; Address in aux
|
||||||
JSR LOADFDRAW
|
LDX #<AUXADDR
|
||||||
|
SEC ; Load into aux
|
||||||
|
JSR LOADCODE ; Load lang ROM
|
||||||
|
|
||||||
|
LDA #<:FDFILE
|
||||||
|
STA OPENPL+1
|
||||||
|
LDA #>:FDFILE
|
||||||
|
STA OPENPL+2
|
||||||
|
LDA #>FDRAWADDR ; Address in main
|
||||||
|
LDX #<FDRAWADDR
|
||||||
|
CLC ; Load into main
|
||||||
|
JSR LOADCODE
|
||||||
|
|
||||||
LDA #<MOSSHIM ; Start address of MOS shim
|
LDA #<MOSSHIM ; Start address of MOS shim
|
||||||
STA A1L
|
STA A1L
|
||||||
|
@ -57,27 +68,46 @@ START JSR CROUT
|
||||||
STA $C004 ; Write to main
|
STA $C004 ; Write to main
|
||||||
>>> XF2AUX,AUXMOS1
|
>>> XF2AUX,AUXMOS1
|
||||||
|
|
||||||
|
:FDFILE STR 'FDRAW.FAST' ; Filename for FDraw lib
|
||||||
|
|
||||||
* Load ROM image from file and copy to aux RAM
|
* Load image from file into memory
|
||||||
LOADROM STZ :BLOCKS
|
* On entry: OPENPL set up to point to file to load
|
||||||
|
* Load address in A,X
|
||||||
|
* Carry set->load to aux, carry clear->load to main
|
||||||
|
LOADCODE PHP ; Save carry flag
|
||||||
|
STA :ADDRH ; MSB of load address
|
||||||
|
STX :ADDRL ; LSB of load address
|
||||||
|
STZ :BLOCKS
|
||||||
JSR OPENFILE ; Open ROM file
|
JSR OPENFILE ; Open ROM file
|
||||||
BCC :S2
|
BCC :S1
|
||||||
LDX #$00
|
LDX #$00
|
||||||
:L2 LDA :CANTOPEN,X
|
:L1A LDA :CANTOPEN,X ; Part one of error msg
|
||||||
BEQ :ER1
|
BEQ :S0
|
||||||
JSR COUT1
|
JSR COUT1
|
||||||
INX
|
INX
|
||||||
BRA :L2
|
BRA :L1A
|
||||||
BRA :S2
|
:S0 LDA OPENPL+1 ; Print filename
|
||||||
:ER1 JSR CROUT
|
STA A1L
|
||||||
|
LDA OPENPL+2
|
||||||
|
STA A1H
|
||||||
|
LDY #$00
|
||||||
|
LDA (A1L),Y
|
||||||
|
STA :LEN
|
||||||
|
:L1B CPY :LEN
|
||||||
|
BEQ :ERR1
|
||||||
|
INY
|
||||||
|
LDA (A1L),Y
|
||||||
|
JSR COUT1
|
||||||
|
BRA :L1B
|
||||||
|
:ERR1 JSR CROUT
|
||||||
JSR BELL
|
JSR BELL
|
||||||
:SPIN BRA :SPIN
|
:SPIN BRA :SPIN
|
||||||
:S2 LDA OPENPL+5 ; File reference number
|
:S1 LDA OPENPL+5 ; File reference number
|
||||||
STA READPL+1
|
STA READPL+1
|
||||||
:L3 LDA #'.'+$80 ; Read file block by block
|
:L2 LDA #'.'+$80 ; Read file block by block
|
||||||
JSR COUT1
|
JSR COUT1
|
||||||
JSR RDFILE
|
JSR RDFILE
|
||||||
BCS :S3 ; EOF (0 bytes left) or some error
|
BCS :CLOSE ; EOF (0 bytes left) or some error
|
||||||
LDA #<BLKBUF ; Source start addr -> A1L,A1H
|
LDA #<BLKBUF ; Source start addr -> A1L,A1H
|
||||||
STA A1L
|
STA A1L
|
||||||
LDA #>BLKBUF
|
LDA #>BLKBUF
|
||||||
|
@ -86,53 +116,35 @@ LOADROM STZ :BLOCKS
|
||||||
STA A2L
|
STA A2L
|
||||||
LDA #>BLKBUFEND
|
LDA #>BLKBUFEND
|
||||||
STA A2H
|
STA A2H
|
||||||
LDA #<AUXADDR ; Dest in aux -> A4L, A4H
|
LDA :ADDRL ; Dest in aux -> A4L, A4H
|
||||||
STA A4L
|
STA A4L
|
||||||
LDA #>AUXADDR
|
LDA :ADDRH
|
||||||
LDX :BLOCKS
|
LDX :BLOCKS
|
||||||
:L4 CPX #$00
|
:L3 CPX #$00
|
||||||
BEQ :S25
|
BEQ :S2
|
||||||
INC
|
INC
|
||||||
INC
|
INC
|
||||||
DEX
|
DEX
|
||||||
BRA :L4
|
|
||||||
:S25 STA A4H
|
|
||||||
SEC ; Copy Main -> Aux
|
|
||||||
JSR AUXMOVE
|
|
||||||
INC :BLOCKS
|
|
||||||
BRA :L3
|
BRA :L3
|
||||||
:S3 LDA OPENPL+5 ; File reference number
|
:S2 STA A4H
|
||||||
|
PLP ; Recover carry flag
|
||||||
|
PHP
|
||||||
|
BCS :TOAUX
|
||||||
|
JSR MEMCPY ; Destination in main mem
|
||||||
|
BRA :S3
|
||||||
|
:TOAUX JSR AUXMOVE ; Carry already set (so to aux)
|
||||||
|
:S3 INC :BLOCKS
|
||||||
|
BRA :L2
|
||||||
|
:CLOSE LDA OPENPL+5 ; File reference number
|
||||||
STA CLSPL+1
|
STA CLSPL+1
|
||||||
JSR CLSFILE
|
JSR CLSFILE
|
||||||
|
JSR CROUT
|
||||||
|
PLP
|
||||||
RTS
|
RTS
|
||||||
:BLOCKS DB 0 ; Counter for blocks read
|
:ADDRL DB $00 ; Destination address (LSB)
|
||||||
:CANTOPEN ASC "Unable to open ROM file"
|
:ADDRH DB $00 ; Destination address (MSB)
|
||||||
|
:BLOCKS DB $00 ; Counter for blocks read
|
||||||
|
:LEN DB $00 ; Length of filename
|
||||||
|
:CANTOPEN ASC "Unable to open "
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
LOADFDRAW
|
|
||||||
RTS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,28 @@
|
||||||
*
|
*
|
||||||
* Miscellaneous routines used by main memory code.
|
* Miscellaneous routines used by main memory code.
|
||||||
|
|
||||||
|
* Copy a block of main memory
|
||||||
|
* A1L/A1H: Start address
|
||||||
|
* A2L/A2H: End address
|
||||||
|
* A4L/A4H: Destination start address
|
||||||
|
MEMCPY LDA (A1L)
|
||||||
|
STA (A4L)
|
||||||
|
LDA A1H
|
||||||
|
CMP A2H
|
||||||
|
BNE :S1
|
||||||
|
LDA A1L
|
||||||
|
CMP A2L
|
||||||
|
BNE :S1
|
||||||
|
BRA :DONE
|
||||||
|
:S1 INC A1L
|
||||||
|
BNE :S2
|
||||||
|
INC A1H
|
||||||
|
:S2 INC A4L
|
||||||
|
BNE :S3
|
||||||
|
INC A4H
|
||||||
|
:S3 BRA MEMCPY
|
||||||
|
:DONE RTS
|
||||||
|
|
||||||
* Copy 512 bytes from BLKBUF to AUXBLK in aux LC
|
* Copy 512 bytes from BLKBUF to AUXBLK in aux LC
|
||||||
COPYAUXBLK >>> ALTZP ; Alt ZP & Alt LC on
|
COPYAUXBLK >>> ALTZP ; Alt ZP & Alt LC on
|
||||||
LDY #$00
|
LDY #$00
|
||||||
|
|
|
@ -1060,17 +1060,17 @@ MAINRDEXIT >>> XF2AUX,NULLRTS ; Back to an RTS
|
||||||
* Call FDraw Clear routine
|
* Call FDraw Clear routine
|
||||||
CLRHGR >>> ENTMAIN
|
CLRHGR >>> ENTMAIN
|
||||||
LDA BGCOLOR
|
LDA BGCOLOR
|
||||||
STA Entry+5
|
STA FDRAWADDR+5
|
||||||
JSR Entry+16 ; FDRAW: SetColor
|
JSR FDRAWADDR+16 ; FDRAW: SetColor
|
||||||
JSR Entry+22 ; FDRAW: Clear
|
JSR FDRAWADDR+22 ; FDRAW: Clear
|
||||||
LDA FGCOLOR
|
LDA FGCOLOR
|
||||||
STA Entry+5
|
STA FDRAWADDR+5
|
||||||
JSR Entry+16 ; FDRAW: SetColor
|
JSR FDRAWADDR+16 ; FDRAW: SetColor
|
||||||
>>> XF2AUX,VDU16RET
|
>>> XF2AUX,VDU16RET
|
||||||
|
|
||||||
* Call FDraw SetLineMode routine
|
* Call FDraw SetLineMode routine
|
||||||
SETLINE >>> ENTMAIN
|
SETLINE >>> ENTMAIN
|
||||||
JSR Entry+43 ; FDRAW: SetLineMode
|
JSR FDRAWADDR+43 ; FDRAW: SetLineMode
|
||||||
>>> XF2AUX,VDU18RET1
|
>>> XF2AUX,VDU18RET1
|
||||||
|
|
||||||
* Call FDraw DrawLine routine
|
* Call FDraw DrawLine routine
|
||||||
|
@ -1088,9 +1088,9 @@ DRAWLINE >>> ENTMAIN
|
||||||
SBC FGCOLOR
|
SBC FGCOLOR
|
||||||
BRA :SETCOLOR
|
BRA :SETCOLOR
|
||||||
:S2 LDA BGCOLOR ; Draw in background colour
|
:S2 LDA BGCOLOR ; Draw in background colour
|
||||||
:SETCOLOR STA Entry+5
|
:SETCOLOR STA FDRAWADDR+5
|
||||||
JSR Entry+16 ; FDRAW: SetColor
|
JSR FDRAWADDR+16 ; FDRAW: SetColor
|
||||||
JSR Entry+28 ; FDRAW: DrawLine
|
JSR FDRAWADDR+28 ; FDRAW: DrawLine
|
||||||
>>> XF2AUX,VDU25RET
|
>>> XF2AUX,VDU25RET
|
||||||
|
|
||||||
* Call FDraw DrawPoint routine
|
* Call FDraw DrawPoint routine
|
||||||
|
@ -1108,25 +1108,25 @@ DRAWPNT >>> ENTMAIN
|
||||||
SBC FGCOLOR
|
SBC FGCOLOR
|
||||||
BRA :SETCOLOR
|
BRA :SETCOLOR
|
||||||
:S2 LDA BGCOLOR ; Draw in background colour
|
:S2 LDA BGCOLOR ; Draw in background colour
|
||||||
:SETCOLOR STA Entry+5
|
:SETCOLOR STA FDRAWADDR+5
|
||||||
JSR Entry+16 ; FDRAW: SetColor
|
JSR FDRAWADDR+16 ; FDRAW: SetColor
|
||||||
JSR Entry+25 ; FDRAW: DrawPoint
|
JSR FDRAWADDR+25 ; FDRAW: DrawPoint
|
||||||
>>> XF2AUX,VDU25RET
|
>>> XF2AUX,VDU25RET
|
||||||
|
|
||||||
* Reset colours and linetype
|
* Reset colours and linetype
|
||||||
GFXINIT JSR Entry+0 ; Initialize FDRAW library
|
GFXINIT JSR FDRAWADDR+0 ; Initialize FDRAW library
|
||||||
LDA #$20
|
LDA #$20
|
||||||
STA Entry+5
|
STA FDRAWADDR+5
|
||||||
JSR Entry+19 ; FDRAW: Set page $2000
|
JSR FDRAWADDR+19 ; FDRAW: Set page $2000
|
||||||
STZ LINETYPE
|
STZ LINETYPE
|
||||||
STZ Entry+5
|
STZ FDRAWADDR+5
|
||||||
JSR Entry+43 ; FDRAW: SetLineMode
|
JSR FDRAWADDR+43 ; FDRAW: SetLineMode
|
||||||
LDA #$07
|
LDA #$07
|
||||||
STA FGCOLOR
|
STA FGCOLOR
|
||||||
STA Entry+5
|
STA FDRAWADDR+5
|
||||||
JSR Entry+16 ; FDRAW: SetColor
|
JSR FDRAWADDR+16 ; FDRAW: SetColor
|
||||||
STZ BGCOLOR
|
STZ BGCOLOR
|
||||||
JSR Entry+22 ; FDRAW: clear HGR screen
|
JSR FDRAWADDR+22 ; FDRAW: clear HGR screen
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
FGCOLOR DB $00 ; Foreground colour
|
FGCOLOR DB $00 ; Foreground colour
|
||||||
|
|
Loading…
Reference in New Issue
Block a user