mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-03 19:29:29 +00:00
Merge branch 'bobbimanners:main' into main
This commit is contained in:
commit
a6c5479985
0
.gitignore
vendored
Normal file
0
.gitignore
vendored
Normal file
BIN
Releases/applecorn-0.52-beta.po
Normal file
BIN
Releases/applecorn-0.52-beta.po
Normal file
Binary file not shown.
BIN
Releases/applecorn-0.53-beta.po
Normal file
BIN
Releases/applecorn-0.53-beta.po
Normal file
Binary file not shown.
BIN
Releases/applecorn-0.54-beta.po
Normal file
BIN
Releases/applecorn-0.54-beta.po
Normal file
Binary file not shown.
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -273,6 +273,7 @@ MAINZP MAC
|
||||||
PUT MAINMEM.LDR
|
PUT MAINMEM.LDR
|
||||||
PUT AUXMEM.MOSEQU
|
PUT AUXMEM.MOSEQU
|
||||||
PUT AUXMEM.INIT
|
PUT AUXMEM.INIT
|
||||||
|
PUT AUXMEM.VERS
|
||||||
PUT AUXMEM.VDU
|
PUT AUXMEM.VDU
|
||||||
PUT AUXMEM.HGR
|
PUT AUXMEM.HGR
|
||||||
PUT AUXMEM.SHR
|
PUT AUXMEM.SHR
|
||||||
|
|
|
@ -224,5 +224,4 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
||||||
RTS ; %000x1xxx host type, 'A'pple
|
RTS ; %000x1xxx host type, 'A'pple
|
||||||
BYTE00A BRK
|
BYTE00A BRK
|
||||||
DB $F7
|
DB $F7
|
||||||
HELLO ASC 'Applecorn MOS 2022-01-13'
|
|
||||||
DB $00 ; Unify MOS messages
|
|
||||||
|
|
86
auxmem.shr.s
86
auxmem.shr.s
|
@ -119,70 +119,25 @@ SHRPRCHAR LDX VDUPIXELS ; Pixels per byte
|
||||||
* VS read cursor / VC write cursor
|
* VS read cursor / VC write cursor
|
||||||
* The read and write cursors have separate save-unders in :SAVEBYTES
|
* The read and write cursors have separate save-unders in :SAVEBYTES
|
||||||
SHRCURSOR PHP ; Preserve flags
|
SHRCURSOR PHP ; Preserve flags
|
||||||
PHA ; Preserve character
|
PHA ; Preserve A
|
||||||
LDA VDUSTATUS ; If VDU5 mode, bail
|
LDA VDUSTATUS ; If VDU5 mode, bail
|
||||||
AND #$20
|
AND #$20
|
||||||
BNE :BAIL
|
BNE SHRCURSBAIL
|
||||||
LDA VDUPIXELS ; Pixels per byte
|
|
||||||
CMP #$02 ; 2 is 320-mode (MODE 1)
|
|
||||||
BNE :MODE0
|
|
||||||
LDA #$04 ; 4 bytes in 320 mode
|
|
||||||
LDX #$71 ; White/red
|
|
||||||
BRA :S1
|
|
||||||
:MODE0 LDA #$02 ; 2 bytes in 640 mode
|
|
||||||
LDX #%11011101 ; White/red/white/red
|
|
||||||
:S1 STA :BYTES ; Bytes per char
|
|
||||||
STX :CURSBYTE
|
|
||||||
LDA #$E1
|
|
||||||
STA VDUBANK2
|
|
||||||
JSR SHRCHARADDR ; Screen addr in VDUADDR
|
JSR SHRCHARADDR ; Screen addr in VDUADDR
|
||||||
LDA VDUADDR+0 ; LSB
|
>>> WRTMAIN
|
||||||
CLC
|
LDA VDUADDR+0 ; Copy addr to SHRVDUQ
|
||||||
ADC #<$460 ; $460 is seven rows
|
STA SHRVDUQ+0
|
||||||
STA VDUADDR+0
|
LDA VDUADDR+1
|
||||||
LDA VDUADDR+1 ; MSB
|
STA SHRVDUQ+1
|
||||||
ADC #>$460 ; $460 is seven rows
|
>>> WRTAUX
|
||||||
STA VDUADDR+1
|
PLA ; Recover A
|
||||||
LDY #$00
|
PLY ; Flags -> Y
|
||||||
LDX #$00
|
>>> XF2MAIN,SHRCURSM
|
||||||
PLA ; Recover character
|
SHRCURSRET >>> ENTAUX
|
||||||
PLP ; Recover flags
|
|
||||||
BVC :S2 ; VC: Write cursor
|
|
||||||
INX ; Advance to 2nd half of :SAVEBYTES
|
|
||||||
INX
|
|
||||||
INX
|
|
||||||
INX
|
|
||||||
:S2 BCC :CURSOROFF ; CC: Remove cursor
|
|
||||||
:CURSORON
|
|
||||||
LDA [VDUADDR],Y ; See if cursor shown
|
|
||||||
CMP :CURSBYTE
|
|
||||||
BEQ :DONE ; Cursor shown already, skip
|
|
||||||
:L1 LDAL [VDUADDR],Y
|
|
||||||
STA :SAVEBYTES,X ; Preserve bytes under cursor
|
|
||||||
LDA :CURSBYTE ; Byte of cursor data
|
|
||||||
STAL [VDUADDR],Y
|
|
||||||
INX
|
|
||||||
INY
|
|
||||||
CPY :BYTES
|
|
||||||
BNE :L1
|
|
||||||
RTS
|
RTS
|
||||||
:CURSOROFF
|
SHRCURSBAIL PLA
|
||||||
LDA [VDUADDR],Y ; See if cursor shown
|
PLP
|
||||||
CMP :CURSBYTE
|
|
||||||
BNE :DONE ; Cursor not shown, skip
|
|
||||||
:L2 LDA :SAVEBYTES,X ; Restore bytes under cursor
|
|
||||||
STAL [VDUADDR],Y
|
|
||||||
INX
|
|
||||||
INY
|
|
||||||
CPY :BYTES
|
|
||||||
BNE :L2
|
|
||||||
:DONE RTS
|
|
||||||
:BAIL PLA ; Fix stack
|
|
||||||
PLA
|
|
||||||
RTS
|
RTS
|
||||||
:BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode
|
|
||||||
:CURSBYTE DB $00 ; Cursor byte for mode
|
|
||||||
:SAVEBYTES DS 8 ; Bytes under cursors
|
|
||||||
|
|
||||||
|
|
||||||
* Write character to SHR screen in 320 pixel mode
|
* Write character to SHR screen in 320 pixel mode
|
||||||
|
@ -199,8 +154,6 @@ SHRPRCH320RET >>> ENTAUX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
SHRPRCH320V4 TXA
|
SHRPRCH320V4 TXA
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -284,7 +237,6 @@ SHRPRCH320V4 TXA
|
||||||
SEC ; Back to emulation mode
|
SEC ; Back to emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Normal service resumed
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
@ -301,8 +253,6 @@ SHRPRCH640 SEC
|
||||||
* (Returns via SHRPRCH320RET)
|
* (Returns via SHRPRCH320RET)
|
||||||
|
|
||||||
SHRPRCH640V4 TXA
|
SHRPRCH640V4 TXA
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -361,7 +311,6 @@ SHRPRCH640V4 TXA
|
||||||
SEC ; Back to emulation mode
|
SEC ; Back to emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Normal service resumed
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
@ -416,8 +365,6 @@ SHRSCR1LINE PHY
|
||||||
PHX
|
PHX
|
||||||
STA VDUADDR+1 ; Screen line -> MSB
|
STA VDUADDR+1 ; Screen line -> MSB
|
||||||
STZ VDUADDR+0 ; Zero LSB
|
STZ VDUADDR+0 ; Zero LSB
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; Enter native mode
|
CLC ; Enter native mode
|
||||||
XCE
|
XCE
|
||||||
PHB ; Preserve data bank
|
PHB ; Preserve data bank
|
||||||
|
@ -479,7 +426,6 @@ SHRSCR1LINE PHY
|
||||||
:DONE PLB ; Recover data bank
|
:DONE PLB ; Recover data bank
|
||||||
SEC ; Back to emulation mode
|
SEC ; Back to emulation mode
|
||||||
XCE
|
XCE
|
||||||
* PLP ; Recover flags + regs
|
|
||||||
PLX
|
PLX
|
||||||
PLY
|
PLY
|
||||||
RTS
|
RTS
|
||||||
|
@ -491,8 +437,6 @@ SHRRSCR1LINE PHY
|
||||||
PHX
|
PHX
|
||||||
STA VDUADDR+1 ; Screen line -> MSB
|
STA VDUADDR+1 ; Screen line -> MSB
|
||||||
STZ VDUADDR+0 ; Zero LSB
|
STZ VDUADDR+0 ; Zero LSB
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; Enter native mode
|
CLC ; Enter native mode
|
||||||
XCE
|
XCE
|
||||||
PHB ; Preserve data bank
|
PHB ; Preserve data bank
|
||||||
|
@ -554,7 +498,6 @@ SHRRSCR1LINE PHY
|
||||||
:DONE PLB ; Recover data bank
|
:DONE PLB ; Recover data bank
|
||||||
SEC ; Back to emulation mode
|
SEC ; Back to emulation mode
|
||||||
XCE
|
XCE
|
||||||
* PLP ; Recover flags + regs
|
|
||||||
PLX
|
PLX
|
||||||
PLY
|
PLY
|
||||||
RTS
|
RTS
|
||||||
|
@ -701,6 +644,7 @@ SHRSETGCOL PHA
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
* Wrapper to call SHRDEFPALM (which sets up default palette)
|
* Wrapper to call SHRDEFPALM (which sets up default palette)
|
||||||
SHRDEFPAL >>> XF2MAIN,SHRDEFPALM
|
SHRDEFPAL >>> XF2MAIN,SHRDEFPALM
|
||||||
SHRDEFPALRET >>> ENTAUX
|
SHRDEFPALRET >>> ENTAUX
|
||||||
|
|
134
auxmem.vdu.s
134
auxmem.vdu.s
|
@ -311,12 +311,23 @@ COPYSWAP4 RTS
|
||||||
***************************
|
***************************
|
||||||
* Perform backspace & delete operation
|
* Perform backspace & delete operation
|
||||||
VDU127 JSR VDU08 ; Move cursor back
|
VDU127 JSR VDU08 ; Move cursor back
|
||||||
LDA #' ' ; Overwrite with a space
|
LDA VDUSTATUS
|
||||||
BNE PUTCHRC
|
AND #$20 ; Bit 5 VDU5 mode
|
||||||
|
BEQ :NOTVDU5
|
||||||
|
>>> XF2MAIN,SHRVDU127
|
||||||
|
RTS
|
||||||
|
:NOTVDU5 LDA #' ' ; Overwrite with a space
|
||||||
|
BRA PUTCHRC
|
||||||
|
|
||||||
* Display character at current (TEXTX,TEXTY)
|
* Display character at current (TEXTX,TEXTY)
|
||||||
PRCHRC PHA ; Save character
|
PRCHRC PHA ; Save character
|
||||||
BIT ESCFLAG
|
|
||||||
|
LDA VDUSTATUS
|
||||||
|
AND #$20 ; Bit 5 VDU5 mode
|
||||||
|
BEQ :S1
|
||||||
|
JMP PRCHR7 ; Jump over text mode stuff
|
||||||
|
|
||||||
|
:S1 BIT ESCFLAG
|
||||||
BMI :RESUME
|
BMI :RESUME
|
||||||
JSR ESCPOLL
|
JSR ESCPOLL
|
||||||
BCS :RESUME
|
BCS :RESUME
|
||||||
|
@ -529,54 +540,80 @@ CHARADDROK STA VDUBANK
|
||||||
* CC=auxmem, CS=mainmem, X=preserved
|
* CC=auxmem, CS=mainmem, X=preserved
|
||||||
|
|
||||||
|
|
||||||
|
* Handle paged mode when moving up the screen
|
||||||
|
VDUUP DEC FXLINES
|
||||||
|
BPL :DONE
|
||||||
|
STZ FXLINES
|
||||||
|
:DONE RTS
|
||||||
|
|
||||||
|
* Handle paged mode when moving down the screen
|
||||||
|
VDUDOWN LDA VDUSTATUS
|
||||||
|
AND #$04 ; Bit 2 -> paged mode
|
||||||
|
BEQ :DONE
|
||||||
|
LDA TXTWINBOT
|
||||||
|
SEC
|
||||||
|
SBC TXTWINTOP
|
||||||
|
STA :HEIGHT
|
||||||
|
INC FXLINES
|
||||||
|
LDA FXLINES
|
||||||
|
CMP :HEIGHT
|
||||||
|
BCC :DONE ; FXLINES <= limit
|
||||||
|
:L1 JSR BYTE76 ; Check keyboard
|
||||||
|
LDA FXKBDSTATE
|
||||||
|
AND #$01 ; See if Open Apple depressed
|
||||||
|
BEQ :L1 ; If not, spin
|
||||||
|
STZ FXLINES
|
||||||
|
:DONE RTS
|
||||||
|
:HEIGHT DB $00
|
||||||
|
|
||||||
|
* Generic return for all SHRVDUxx returns to aux mem
|
||||||
|
VDUXXRET >>> ENTAUX ; SHRVDU08 returns here
|
||||||
|
RTS
|
||||||
|
|
||||||
* Move text cursor position
|
* Move text cursor position
|
||||||
***************************
|
***************************
|
||||||
* Move cursor left
|
* Move cursor left
|
||||||
VDU08 LDA VDUTEXTX ; COL
|
VDU08 LDA VDUSTATUS
|
||||||
|
AND #$20 ; Bit 5 -> VDU5 mode
|
||||||
|
BEQ VDU08VDU4 ; VDU5 not in effect
|
||||||
|
BIT VDUSCREEN
|
||||||
|
BVC VDU08DONE ; VDU5 but not SHR
|
||||||
|
>>> XF2MAIN,SHRVDU08
|
||||||
|
VDU08VDU4 LDA VDUTEXTX ; COL
|
||||||
CMP TXTWINLFT
|
CMP TXTWINLFT
|
||||||
BEQ :S1
|
BEQ :S1
|
||||||
DEC VDUTEXTX ; COL
|
DEC VDUTEXTX ; COL
|
||||||
BRA :S3
|
BRA VDU08DONE
|
||||||
:S1 LDA VDUTEXTY ; ROW
|
:S1 LDA VDUTEXTY ; ROW
|
||||||
CMP TXTWINTOP
|
CMP TXTWINTOP
|
||||||
BEQ :S3
|
BEQ VDU08DONE
|
||||||
DEC VDUTEXTY ; ROW
|
DEC VDUTEXTY ; ROW
|
||||||
LDA TXTWINRGT
|
LDA TXTWINRGT
|
||||||
STA VDUTEXTX ; COL
|
STA VDUTEXTX ; COL
|
||||||
:S3 LDA VDUSTATUS
|
JSR VDUUP ; Handle paged mode
|
||||||
AND #$20 ; Bit 5 -> VDU5 mode
|
|
||||||
BEQ VDU08DONE
|
|
||||||
BIT VDUSCREEN
|
|
||||||
BVC VDU08DONE ; Not SHR, skip
|
|
||||||
>>> XF2MAIN,SHRVDU08
|
|
||||||
VDU08RET >>> ENTAUX
|
|
||||||
VDU08DONE RTS
|
VDU08DONE RTS
|
||||||
|
|
||||||
* Move cursor right
|
* Move cursor right
|
||||||
VDU09 LDA VDUSTATUS
|
VDU09 LDA VDUSTATUS
|
||||||
AND #$20 ; Bit 5 VDU 5 mode
|
AND #$20 ; Bit 5 VDU 5 mode
|
||||||
BEQ VDU09SKIP
|
BEQ VDU09VDU4 ; VDU5 not in effect
|
||||||
BIT VDUSCREEN
|
BIT VDUSCREEN
|
||||||
BVC VDU09SKIP ; Not SHR, skip
|
BVC VDU09DONE ; VDU5 but not SHR
|
||||||
>>> XF2MAIN,SHRVDU09
|
>>> XF2MAIN,SHRVDU09
|
||||||
VDU09RET >>> ENTAUX
|
VDU09VDU4 LDA VDUTEXTX ; COL
|
||||||
VDU09SKIP LDA VDUTEXTX ; COL
|
|
||||||
CMP TXTWINRGT
|
CMP TXTWINRGT
|
||||||
BCC :S2
|
BCC VDU09RGHT
|
||||||
LDA TXTWINLFT
|
LDA TXTWINLFT
|
||||||
STA VDUTEXTX ; COL
|
STA VDUTEXTX ; COL
|
||||||
|
JSR VDUDOWN ; Handle paged mode
|
||||||
LDA VDUTEXTY ; ROW
|
LDA VDUTEXTY ; ROW
|
||||||
CMP TXTWINBOT
|
CMP TXTWINBOT
|
||||||
BEQ SCROLL
|
BEQ SCROLL
|
||||||
INC VDUTEXTY ; ROW
|
INC VDUTEXTY ; ROW
|
||||||
:DONE RTS
|
VDU09DONE RTS
|
||||||
:S2 INC VDUTEXTX ; COL
|
VDU09RGHT INC VDUTEXTX ; COL
|
||||||
BRA :DONE
|
BRA VDU09DONE
|
||||||
SCROLL LDA VDUSTATUS
|
SCROLL JSR SCROLLER
|
||||||
AND #$20 ; Bit 5 VDU5 mode
|
|
||||||
BEQ :S3
|
|
||||||
RTS ; No scroll in VDU5
|
|
||||||
:S3 JSR SCROLLER
|
|
||||||
LDA TXTWINLFT
|
LDA TXTWINLFT
|
||||||
STA VDUTEXTX
|
STA VDUTEXTX
|
||||||
JSR CLREOL
|
JSR CLREOL
|
||||||
|
@ -585,12 +622,12 @@ SCROLL LDA VDUSTATUS
|
||||||
* Move cursor down
|
* Move cursor down
|
||||||
VDU10 LDA VDUSTATUS
|
VDU10 LDA VDUSTATUS
|
||||||
AND #$20 ; Bit 5 -> VDU5 mode
|
AND #$20 ; Bit 5 -> VDU5 mode
|
||||||
BEQ VDU10SKIP
|
BEQ VDU10VDU4 ; VDU5 not in effect
|
||||||
BIT VDUSCREEN
|
BIT VDUSCREEN
|
||||||
BVC VDU10SKIP ; Not SHR, skip
|
BVC VDU10DONE ; VDU5 but not SHR
|
||||||
>>> XF2MAIN,SHRVDU10
|
>>> XF2MAIN,SHRVDU10
|
||||||
VDU10RET >>> ENTAUX
|
VDU10VDU4 JSR VDUDOWN ; Handle paged mode
|
||||||
VDU10SKIP LDA VDUTEXTY ; ROW
|
LDA VDUTEXTY ; ROW
|
||||||
CMP TXTWINBOT
|
CMP TXTWINBOT
|
||||||
BEQ VDU10SCRL
|
BEQ VDU10SCRL
|
||||||
INC VDUTEXTY ; ROW
|
INC VDUTEXTY ; ROW
|
||||||
|
@ -600,37 +637,36 @@ VDU10SCRL JMP SCROLL
|
||||||
* Move cursor up
|
* Move cursor up
|
||||||
VDU11 LDA VDUSTATUS
|
VDU11 LDA VDUSTATUS
|
||||||
AND #$20 ; Bit 5 -> VDU5 mode
|
AND #$20 ; Bit 5 -> VDU5 mode
|
||||||
BEQ VDU11SKIP
|
BEQ VDU11VDU4 ; VDU5 not in effect
|
||||||
BIT VDUSCREEN
|
BIT VDUSCREEN
|
||||||
BVC VDU11SKIP ; Not SHR, skip
|
BVC VDU11DONE ; VDU5 but not SHR
|
||||||
>>> XF2MAIN,SHRVDU11
|
>>> XF2MAIN,SHRVDU11
|
||||||
VDU11RET >>> ENTAUX
|
VDU11VDU4 LDA VDUTEXTY ; ROW
|
||||||
VDU11SKIP LDA VDUTEXTY ; ROW
|
|
||||||
CMP TXTWINTOP
|
CMP TXTWINTOP
|
||||||
BNE :S1
|
BNE VDU11UP
|
||||||
LDA VDUTEXTX ; COL
|
LDA VDUTEXTX ; COL
|
||||||
CMP TXTWINLFT
|
CMP TXTWINLFT
|
||||||
BNE :DONE
|
BNE VDU11DONE
|
||||||
JSR RSCROLLER
|
JSR RSCROLLER
|
||||||
LDA TXTWINLFT
|
LDA TXTWINLFT
|
||||||
STA VDUTEXTX
|
STA VDUTEXTX
|
||||||
JSR CLREOL
|
JSR CLREOL
|
||||||
RTS
|
RTS
|
||||||
:S1 DEC VDUTEXTY ; ROW
|
VDU11UP DEC VDUTEXTY ; ROW
|
||||||
:DONE RTS
|
JSR VDUUP ; Handle paged mode
|
||||||
|
VDU11DONE RTS
|
||||||
|
|
||||||
* Move to start of line
|
* Move to start of line
|
||||||
VDU13 LDA #$BF
|
VDU13 LDA VDUSTATUS
|
||||||
|
AND #$20 ; Bit 5 -> VDU5 mode
|
||||||
|
BEQ VDU13VDU4 ; VDU5 not in effect
|
||||||
|
BIT VDUSCREEN
|
||||||
|
BVC VDU13DONE ; VDU5 but not SHR
|
||||||
|
>>> XF2MAIN,SHRVDU13
|
||||||
|
VDU13VDU4 LDA #$BF
|
||||||
JSR CLRSTATUS ; Turn copy cursor off
|
JSR CLRSTATUS ; Turn copy cursor off
|
||||||
LDA TXTWINLFT
|
LDA TXTWINLFT
|
||||||
STA VDUTEXTX ; COL
|
STA VDUTEXTX ; COL
|
||||||
LDA VDUSTATUS
|
|
||||||
AND #$20 ; Bit 5 -> VDU5 mode
|
|
||||||
BEQ VDU13DONE
|
|
||||||
BIT VDUSCREEN
|
|
||||||
BVC VDU13DONE ; Not SHR, skip
|
|
||||||
>>> XF2MAIN,SHRVDU13
|
|
||||||
VDU13RET >>> ENTAUX
|
|
||||||
VDU13DONE RTS
|
VDU13DONE RTS
|
||||||
|
|
||||||
* Move to (0,0)
|
* Move to (0,0)
|
||||||
|
@ -1134,8 +1170,6 @@ VDU19 LDA VDUQ+5 ; Second parm
|
||||||
STX SHRVDUQ ; Stash X for call to main
|
STX SHRVDUQ ; Stash X for call to main
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
>>> XF2MAIN,SHRPALCUSTOM
|
>>> XF2MAIN,SHRPALCUSTOM
|
||||||
VDU19RET >>> ENTAUX
|
|
||||||
RTS
|
|
||||||
:TMP DB $00
|
:TMP DB $00
|
||||||
|
|
||||||
|
|
||||||
|
@ -1221,8 +1255,6 @@ VDU24 BIT VDUBANK ; Check if this is a GS
|
||||||
BNE :L1
|
BNE :L1
|
||||||
>>> WRTAUX
|
>>> WRTAUX
|
||||||
>>> XF2MAIN,SHRVDU24
|
>>> XF2MAIN,SHRVDU24
|
||||||
VDU24RETBAD >>> ENTAUX
|
|
||||||
RTS ; Validation failure
|
|
||||||
VDU24RET >>> ENTAUX
|
VDU24RET >>> ENTAUX
|
||||||
LDY #GFXWINLFT+7-VDUVARS ; Copy to gfx window params
|
LDY #GFXWINLFT+7-VDUVARS ; Copy to gfx window params
|
||||||
LDA #$08
|
LDA #$08
|
||||||
|
@ -1373,8 +1405,6 @@ VDU23 BIT VDUSCREEN ; Check we are in SHR mode
|
||||||
RTS
|
RTS
|
||||||
:SHR JSR VDUCOPYMAIN ; Copy VDUQ to main mem
|
:SHR JSR VDUCOPYMAIN ; Copy VDUQ to main mem
|
||||||
>>> XF2MAIN,SHRUSERCHAR
|
>>> XF2MAIN,SHRUSERCHAR
|
||||||
VDU23RET >>> ENTAUX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
* Copy VDUQ to SHRVDUQ in main memory
|
* Copy VDUQ to SHRVDUQ in main memory
|
||||||
VDUCOPYMAIN LDY #$00
|
VDUCOPYMAIN LDY #$00
|
||||||
|
|
3
auxmem.vers.s
Normal file
3
auxmem.vers.s
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
* Auto-generated by .git/hooks/pre-commit
|
||||||
|
HELLO ASC 'Applecorn v0.54-beta-0-g3325769'
|
||||||
|
DB $00
|
15
hooks_pre-commit
Executable file
15
hooks_pre-commit
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Pre-commit hook for Applecorn
|
||||||
|
|
||||||
|
f="auxmem.vers.s"
|
||||||
|
V=`git describe`
|
||||||
|
echo '* Auto-generated by .git/hooks/pre-commit' > $f
|
||||||
|
echo "HELLO ASC 'Applecorn $V'" >> $f
|
||||||
|
echo " DB \$00" >> $f
|
||||||
|
|
||||||
|
if ! ./m32build; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
8
m32build
8
m32build
|
@ -3,7 +3,13 @@
|
||||||
# Uses cadius for manipulating ProDOS disk images
|
# Uses cadius for manipulating ProDOS disk images
|
||||||
#
|
#
|
||||||
|
|
||||||
merlin32 -v applecorn.s
|
if ! merlin32 -v applecorn.s; then
|
||||||
|
echo +++++++++++++++++++++++
|
||||||
|
echo +++++ BUILD ERROR +++++
|
||||||
|
echo +++++++++++++++++++++++
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
cp APLCORN.SYSTEM APLCORN.SYSTEM#FF2000
|
cp APLCORN.SYSTEM APLCORN.SYSTEM#FF2000
|
||||||
cadius deletefile applecorn.po /APPLECORN/APLCORN.SYSTEM
|
cadius deletefile applecorn.po /APPLECORN/APLCORN.SYSTEM
|
||||||
cadius addfile applecorn.po /APPLECORN APLCORN.SYSTEM#FF2000
|
cadius addfile applecorn.po /APPLECORN APLCORN.SYSTEM#FF2000
|
||||||
|
|
251
mainmem.shr.s
251
mainmem.shr.s
|
@ -90,8 +90,8 @@ SHRXPLDFONT >>> ENTMAIN
|
||||||
INC A
|
INC A
|
||||||
CMP #128 ; 96 chars in FONT8
|
CMP #128 ; 96 chars in FONT8
|
||||||
BNE :L1
|
BNE :L1
|
||||||
|
JSR SHRCLR24 ; Clear row 24
|
||||||
>>> XF2AUX,SHRV22RET
|
>>> XF2AUX,SHRV22RET
|
||||||
RTS
|
|
||||||
|
|
||||||
|
|
||||||
* Explode one character to location pointed to by A3L
|
* Explode one character to location pointed to by A3L
|
||||||
|
@ -165,7 +165,7 @@ SHRUSERCHAR >>> ENTMAIN
|
||||||
INY
|
INY
|
||||||
CPY #$08 ; Last row?
|
CPY #$08 ; Last row?
|
||||||
BNE :L1
|
BNE :L1
|
||||||
:DONE >>> XF2AUX,VDU23RET
|
:DONE >>> XF2AUX,VDUXXRET
|
||||||
:INCREMENT DB $00
|
:INCREMENT DB $00
|
||||||
|
|
||||||
|
|
||||||
|
@ -198,6 +198,24 @@ SHRXPLDROW LDX SHRPIXELS ; Pixels per byte
|
||||||
:S4 RTS
|
:S4 RTS
|
||||||
|
|
||||||
|
|
||||||
|
* Clear text row 24 (0-based index)
|
||||||
|
SHRCLR24 CLC ; 65816 native mode
|
||||||
|
XCE
|
||||||
|
REP #$30 ; 16 bit M & X
|
||||||
|
MX %00 ; Tell Merlin
|
||||||
|
LDX #$00
|
||||||
|
LDA #$00
|
||||||
|
:L1 STAL $E19800,X
|
||||||
|
INX
|
||||||
|
INX
|
||||||
|
CPX #$0500
|
||||||
|
BNE :L1
|
||||||
|
SEC ; 65816 emulation mode
|
||||||
|
XCE
|
||||||
|
MX %11 ; Tell Merlin
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
||||||
* Explode one pixel row of font in 320 mode
|
* Explode one pixel row of font in 320 mode
|
||||||
* 4 bytes per char, 4 bits per pixel
|
* 4 bytes per char, 4 bits per pixel
|
||||||
* On entry: A contains row of font data
|
* On entry: A contains row of font data
|
||||||
|
@ -256,10 +274,76 @@ SHRCHAR640 PHY ; Preserve Y
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
* Handle plotting & unplotting cursors
|
||||||
|
* On entry: character in A, flags in Y
|
||||||
|
* pointer to screen address in SHRVDUQ+0..1
|
||||||
|
SHRCURSM >>> ENTMAIN
|
||||||
|
PHY ; Preserve flags
|
||||||
|
PHA ; Preserve character
|
||||||
|
LDA SHRVDUQ+0 ; Copy pointer to A3L/H
|
||||||
|
STA A3L
|
||||||
|
LDA SHRVDUQ+1
|
||||||
|
STA A3H
|
||||||
|
LDA #$E1 ; Bank $E1
|
||||||
|
STA A4L
|
||||||
|
LDA SHRPIXELS ; Pixels per byte
|
||||||
|
CMP #$02 ; 2 is 320-mode (MODE 1)
|
||||||
|
BNE :MODE0
|
||||||
|
LDA #$04 ; 4 bytes in 320 mode
|
||||||
|
LDX #$71 ; White/red
|
||||||
|
BRA :S1
|
||||||
|
:MODE0 LDA #$02 ; 2 bytes in 640 mode
|
||||||
|
LDX #%11011101 ; White/red/white/red
|
||||||
|
:S1 STA :BYTES ; Bytes per char
|
||||||
|
STX :CURSBYTE
|
||||||
|
LDA A3L ; LSB
|
||||||
|
CLC
|
||||||
|
ADC #<$460 ; $460 is seven rows
|
||||||
|
STA A3L
|
||||||
|
LDA A3H ; MSB
|
||||||
|
ADC #>$460 ; $460 is seven rows
|
||||||
|
STA A3H
|
||||||
|
LDY #$00
|
||||||
|
LDX #$00
|
||||||
|
PLA ; Recover character
|
||||||
|
PLP ; Recover flags
|
||||||
|
BVC :S2 ; VC: Write cursor
|
||||||
|
INX ; Advance to 2nd half of :SAVEBYTES
|
||||||
|
INX
|
||||||
|
INX
|
||||||
|
INX
|
||||||
|
:S2 BCC :CURSOROFF ; CC: Remove cursor
|
||||||
|
:CURSORON
|
||||||
|
LDAL [A3L],Y ; See if cursor shown
|
||||||
|
CMP :CURSBYTE
|
||||||
|
BEQ :DONE ; Cursor shown already, skip
|
||||||
|
:L1 LDAL [A3L],Y
|
||||||
|
STA :SAVEBYTES,X ; Preserve bytes under cursor
|
||||||
|
LDA :CURSBYTE ; Byte of cursor data
|
||||||
|
STAL [A3L],Y
|
||||||
|
INX
|
||||||
|
INY
|
||||||
|
CPY :BYTES
|
||||||
|
BNE :L1
|
||||||
|
>>> XF2AUX,SHRCURSRET
|
||||||
|
:CURSOROFF
|
||||||
|
LDAL [A3L],Y ; See if cursor shown
|
||||||
|
CMP :CURSBYTE
|
||||||
|
BNE :DONE ; Cursor not shown, skip
|
||||||
|
:L2 LDA :SAVEBYTES,X ; Restore bytes under cursor
|
||||||
|
STAL [A3L],Y
|
||||||
|
INX
|
||||||
|
INY
|
||||||
|
CPY :BYTES
|
||||||
|
BNE :L2
|
||||||
|
:DONE >>> XF2AUX,SHRCURSRET
|
||||||
|
:BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode
|
||||||
|
:CURSBYTE DB $00 ; Cursor byte for mode
|
||||||
|
:SAVEBYTES DS 8 ; Bytes under cursors
|
||||||
|
|
||||||
|
|
||||||
* VDU5 plot char at graphics cursor position
|
* VDU5 plot char at graphics cursor position
|
||||||
SHRVDU5CH >>> ENTMAIN
|
SHRVDU5CH >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -385,7 +469,6 @@ SHRVDU5CH >>> ENTMAIN
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP
|
|
||||||
>>> XF2AUX,SHRPRCH320RET
|
>>> XF2AUX,SHRPRCH320RET
|
||||||
* Zero page
|
* Zero page
|
||||||
:COLCTR EQU TMPZP+0
|
:COLCTR EQU TMPZP+0
|
||||||
|
@ -445,10 +528,9 @@ SHRSHIFT MX %00 ; Tell merlin we are 16 bit M&X
|
||||||
RTS
|
RTS
|
||||||
MX %11
|
MX %11
|
||||||
|
|
||||||
|
|
||||||
* Handle cursor left in VDU5 mode
|
* Handle cursor left in VDU5 mode
|
||||||
SHRVDU08 >>> ENTMAIN
|
SHRVDU08 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -457,35 +539,32 @@ SHRVDU08 >>> ENTMAIN
|
||||||
SEC
|
SEC
|
||||||
SBC #$08 ; Move to previous column
|
SBC #$08 ; Move to previous column
|
||||||
CMP SHRWINLFT
|
CMP SHRWINLFT
|
||||||
BMI :PREVLINE
|
BMI :PREVLINE ; x-pos < SHRWINLFT
|
||||||
STA SHRXPIXEL
|
STA SHRXPIXEL
|
||||||
BRA :DONE
|
BRA :DONE
|
||||||
:PREVLINE LDA SHRWINRGT
|
:PREVLINE LDA SHRYPIXEL
|
||||||
SEC
|
|
||||||
SBC #$08
|
|
||||||
STA SHRXPIXEL
|
|
||||||
LDA SHRYPIXEL
|
|
||||||
CLC ; Add 8 rows (go up)
|
CLC ; Add 8 rows (go up)
|
||||||
ADC #$08
|
ADC #$08
|
||||||
CMP SHRWINTOP
|
CMP SHRWINTOP
|
||||||
BMI :BOTTOMROW
|
BCS :HOME ; y-pos >= SHRWINTOP
|
||||||
STA SHRYPIXEL
|
STA SHRYPIXEL
|
||||||
|
LDA SHRWINRGT
|
||||||
|
SEC
|
||||||
|
SBC #$07
|
||||||
|
STA SHRXPIXEL
|
||||||
BRA :DONE
|
BRA :DONE
|
||||||
:BOTTOMROW LDA SHRWINBTM
|
:HOME LDA SHRWINTOP
|
||||||
CLC
|
|
||||||
ADC #$08 ; Go up one row from bottom
|
|
||||||
STA SHRYPIXEL
|
STA SHRYPIXEL
|
||||||
|
LDA SHRWINLFT
|
||||||
|
STA SHRXPIXEL
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP
|
>>> XF2AUX,VDUXXRET
|
||||||
>>> XF2AUX,VDU08RET
|
|
||||||
|
|
||||||
|
|
||||||
* Handle cursor right in VDU5 mode
|
* Handle cursor right in VDU5 mode
|
||||||
SHRVDU09 >>> ENTMAIN
|
SHRVDU09 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -494,7 +573,7 @@ SHRVDU09 >>> ENTMAIN
|
||||||
CLC
|
CLC
|
||||||
ADC #$08 ; Advance to next column
|
ADC #$08 ; Advance to next column
|
||||||
CMP SHRWINRGT
|
CMP SHRWINRGT
|
||||||
BCS :NEWLINE ; X-pos >= limit
|
BCS :NEWLINE ; x-pos >= SHRWINRGT
|
||||||
STA SHRXPIXEL
|
STA SHRXPIXEL
|
||||||
BRA :DONE
|
BRA :DONE
|
||||||
:NEWLINE LDA SHRWINLFT
|
:NEWLINE LDA SHRWINLFT
|
||||||
|
@ -503,14 +582,11 @@ SHRVDU09 >>> ENTMAIN
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP
|
>>> XF2AUX,VDUXXRET
|
||||||
>>> XF2AUX,VDU09RET
|
|
||||||
|
|
||||||
|
|
||||||
* Handle cursor down / linefeed in VDU5 mode
|
* Handle cursor down / linefeed in VDU5 mode
|
||||||
SHRVDU10 >>> ENTMAIN
|
SHRVDU10 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -519,8 +595,7 @@ SHRVDU10 >>> ENTMAIN
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP
|
>>> XF2AUX,VDUXXRET
|
||||||
>>> XF2AUX,VDU10RET
|
|
||||||
|
|
||||||
|
|
||||||
* Handle cursor up in VDU5 mode
|
* Handle cursor up in VDU5 mode
|
||||||
|
@ -533,15 +608,15 @@ SHRVDU11 >>> ENTMAIN
|
||||||
CLC
|
CLC
|
||||||
ADC #$08 ; Height of row of text
|
ADC #$08 ; Height of row of text
|
||||||
CMP SHRWINTOP
|
CMP SHRWINTOP
|
||||||
BPL :TOPPAGE
|
BCS :TOP ; y-pos >= SHRWINTOP
|
||||||
STA SHRYPIXEL
|
STA SHRYPIXEL
|
||||||
BRA :DONE
|
BRA :DONE
|
||||||
:TOPPAGE LDA SHRWINTOP
|
:TOP LDA SHRWINTOP
|
||||||
STA SHRYPIXEL
|
STA SHRYPIXEL
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
>>> XF2AUX,VDU11RET
|
>>> XF2AUX,VDUXXRET
|
||||||
|
|
||||||
|
|
||||||
* Handle linefeed in VDU5 mode - does the actual work
|
* Handle linefeed in VDU5 mode - does the actual work
|
||||||
|
@ -551,7 +626,7 @@ SHRVDU5LF MX %00 ; Tell Merlin
|
||||||
SEC
|
SEC
|
||||||
SBC #16 ; Height of this+next row
|
SBC #16 ; Height of this+next row
|
||||||
CMP SHRWINBTM
|
CMP SHRWINBTM
|
||||||
BMI :NEWPAGE ; Less than 16 rows left
|
BCC :NEWPAGE ; Less than 16 rows left
|
||||||
LDA SHRYPIXEL
|
LDA SHRYPIXEL
|
||||||
SEC
|
SEC
|
||||||
SBC #$08
|
SBC #$08
|
||||||
|
@ -565,8 +640,6 @@ SHRVDU5LF MX %00 ; Tell Merlin
|
||||||
|
|
||||||
* Handle carriage return in VDU5 mode
|
* Handle carriage return in VDU5 mode
|
||||||
SHRVDU13 >>> ENTMAIN
|
SHRVDU13 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -576,8 +649,83 @@ SHRVDU13 >>> ENTMAIN
|
||||||
:DONE SEC ; 65816 emulation mode
|
:DONE SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP
|
>>> XF2AUX,VDUXXRET
|
||||||
>>> XF2AUX,VDU13RET
|
|
||||||
|
|
||||||
|
* Handle erasing char for VDU127 in VDU5 mode
|
||||||
|
* Called after SHRVDU08 has already backspaced cursor
|
||||||
|
SHRVDU127 >>> ENTMAIN
|
||||||
|
LDX SHRYPIXEL ; Screen row (Y-coord)
|
||||||
|
LDA SHRROWSL,X ; Look up addr (LS byte)
|
||||||
|
STA A3L ; Stash in A3L
|
||||||
|
LDA SHRROWSH,X ; Look up addr (MS byte)
|
||||||
|
STA A3H ; Stash in A3H
|
||||||
|
LDA #$E1 ; Bank $E1
|
||||||
|
STA A4L
|
||||||
|
LDX SHRPIXELS
|
||||||
|
CPX #$02
|
||||||
|
BNE :MODE0
|
||||||
|
CLC ; 65816 native mode
|
||||||
|
XCE
|
||||||
|
REP #$30 ; 16 bit M & X
|
||||||
|
MX %00 ; Tell Merlin
|
||||||
|
LDA SHRXPIXEL ; Screen col (X-coord)
|
||||||
|
LSR A ; Divide by 2
|
||||||
|
BRA :MODE1
|
||||||
|
:MODE0 CLC ; 65816 native mode
|
||||||
|
XCE
|
||||||
|
REP #$30 ; 16 bit M & X
|
||||||
|
MX %00 ; Tell Merlin
|
||||||
|
LDA SHRXPIXEL ; Screen col (X-coord)
|
||||||
|
LSR A ; Divide by 2
|
||||||
|
LSR A ; Divide by 4
|
||||||
|
TAY
|
||||||
|
LDX #$00
|
||||||
|
SEP #$30 ; 8 bit M & X
|
||||||
|
MX %11 ; Tell Merlin
|
||||||
|
:L1 LDA SHRGFXBGMASK
|
||||||
|
STAL [A3L],Y
|
||||||
|
INY
|
||||||
|
STAL [A3L],Y
|
||||||
|
DEY
|
||||||
|
JSR SHRNXTROWM ; Advance A3L/H to next pixel row
|
||||||
|
INX
|
||||||
|
CPX #$08 ; Erased all 8 rows?
|
||||||
|
BNE :L1
|
||||||
|
BRA :DONE
|
||||||
|
:MODE1 MX %00 ; Tell Merlin it's 16 bit M&X
|
||||||
|
TAY
|
||||||
|
LDX #$00
|
||||||
|
SEP #$30 ; 8 bit M & X
|
||||||
|
MX %11 ; Tell Merlin
|
||||||
|
:L2 LDA SHRGFXBGMASK
|
||||||
|
STAL [A3L],Y
|
||||||
|
INY
|
||||||
|
STAL [A3L],Y
|
||||||
|
INY
|
||||||
|
STAL [A3L],Y
|
||||||
|
INY
|
||||||
|
STAL [A3L],Y
|
||||||
|
DEY
|
||||||
|
DEY
|
||||||
|
DEY
|
||||||
|
JSR SHRNXTROWM ; Advance A3L/H to next pixel row
|
||||||
|
INX
|
||||||
|
CPX #$08 ; Erased all 8 rows?
|
||||||
|
BNE :L2
|
||||||
|
:DONE SEC ; 65816 emulation mode
|
||||||
|
XCE
|
||||||
|
>>> XF2AUX,VDUXXRET
|
||||||
|
|
||||||
|
* Advance A3L/H to next pixel row on screen
|
||||||
|
SHRNXTROWM LDA A3L ; Advance A3L/H to next row
|
||||||
|
CLC
|
||||||
|
ADC #160
|
||||||
|
STA A3L
|
||||||
|
LDA A3H
|
||||||
|
ADC #$00
|
||||||
|
STA A3H
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
||||||
* Plot actions: PLOT k,x,y
|
* Plot actions: PLOT k,x,y
|
||||||
|
@ -620,8 +768,6 @@ SHRPLOT >>> ENTMAIN
|
||||||
:S1 CMP #$40 ; Plot point
|
:S1 CMP #$40 ; Plot point
|
||||||
BNE :BAIL ; Other? Bail out
|
BNE :BAIL ; Other? Bail out
|
||||||
|
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
SEP #$30 ; 8 bit M & X
|
SEP #$30 ; 8 bit M & X
|
||||||
|
@ -630,7 +776,6 @@ SHRPLOT >>> ENTMAIN
|
||||||
SEC ; 65816 emulation mode
|
SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Resume normal service
|
|
||||||
|
|
||||||
BRA :S2
|
BRA :S2
|
||||||
:S2 PLA ; Store prev pt in screen coords
|
:S2 PLA ; Store prev pt in screen coords
|
||||||
|
@ -672,6 +817,7 @@ SHRPLOTCOL LDA SHRGFXFGMASK ; Preserve FG colour
|
||||||
|
|
||||||
* Plot a point
|
* Plot a point
|
||||||
* Called in 65816 native mode, 8 bit M & X
|
* Called in 65816 native mode, 8 bit M & X
|
||||||
|
* On entry: A1L/H x-coordinate, A2L/H y-coordinate
|
||||||
SHRPOINT REP #$30 ; 16 bit M & X
|
SHRPOINT REP #$30 ; 16 bit M & X
|
||||||
MX %00 ; Tell Merlin
|
MX %00 ; Tell Merlin
|
||||||
LDA A2L ; y coordinate
|
LDA A2L ; y coordinate
|
||||||
|
@ -840,8 +986,6 @@ SHRLINE LDA A2L ; y1
|
||||||
INC A
|
INC A
|
||||||
:S1 STA TMPZP+0 ; abs(y1 - y0)
|
:S1 STA TMPZP+0 ; abs(y1 - y0)
|
||||||
STZ TMPZP+1 ; Pad to 16 bit
|
STZ TMPZP+1 ; Pad to 16 bit
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -948,12 +1092,11 @@ SHRLINELO MX %00 ; Tell merlin 16 bit M & X
|
||||||
STA :D ; D = D + 2 * dy
|
STA :D ; D = D + 2 * dy
|
||||||
:S3 INX
|
:S3 INX
|
||||||
CPX :LIM ; Compare with x1
|
CPX :LIM ; Compare with x1
|
||||||
BNE :L1
|
BCC :L1
|
||||||
|
|
||||||
SEC ; 65816 emulation mode
|
SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Resume normal service
|
|
||||||
RTS
|
RTS
|
||||||
* Zero page
|
* Zero page
|
||||||
:DX EQU TMPZP+0 ; dx initially, then (2 * (dy - dx))
|
:DX EQU TMPZP+0 ; dx initially, then (2 * (dy - dx))
|
||||||
|
@ -1025,7 +1168,7 @@ SHRLINEHI MX %00 ; Tell Merlin 16 bit M & X
|
||||||
STA :D ; D = D + 2 * dx
|
STA :D ; D = D + 2 * dx
|
||||||
:S3 INX
|
:S3 INX
|
||||||
CPX :LIM ; Compare with y1
|
CPX :LIM ; Compare with y1
|
||||||
BNE :L1
|
BCC :L1
|
||||||
|
|
||||||
SEC ; 65816 emulation mode
|
SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
|
@ -1045,8 +1188,6 @@ SHRLINEHI MX %00 ; Tell Merlin 16 bit M & X
|
||||||
* from 1280x1024 to 640x200 or 320x200
|
* from 1280x1024 to 640x200 or 320x200
|
||||||
* On return: X-coordinate in A1L/H, Y-coordinate in A2L (A2H=0)
|
* On return: X-coordinate in A1L/H, Y-coordinate in A2L (A2H=0)
|
||||||
SHRCOORD MAC
|
SHRCOORD MAC
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -1094,7 +1235,6 @@ SHRCOORDM0 LDA SHRVDUQ+5
|
||||||
SEC ; Back to emulation mode
|
SEC ; Back to emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Normal service resumed
|
|
||||||
BRA SHRCOORDEND
|
BRA SHRCOORDEND
|
||||||
|
|
||||||
SHRCOORDNEG MX %00 ; Tell Merlin we are 16 bit
|
SHRCOORDNEG MX %00 ; Tell Merlin we are 16 bit
|
||||||
|
@ -1169,8 +1309,6 @@ SHRCOORD2M0 LDA SHRVDUQ,X
|
||||||
|
|
||||||
* Clear the graphics window
|
* Clear the graphics window
|
||||||
SHRVDU16 >>> ENTMAIN
|
SHRVDU16 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 816 native mode
|
CLC ; 816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -1267,7 +1405,6 @@ SHRVDU16 >>> ENTMAIN
|
||||||
SEC ; Back to 6502 emu mode
|
SEC ; Back to 6502 emu mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
* PLP ; Normal service resumed
|
|
||||||
>>> XF2AUX,SHRCLRRET
|
>>> XF2AUX,SHRCLRRET
|
||||||
:LEFT320 DB %11111111
|
:LEFT320 DB %11111111
|
||||||
DB %00001111
|
DB %00001111
|
||||||
|
@ -1320,8 +1457,6 @@ SHRVDU16V PHA
|
||||||
* Validate graphics window parms & store if okay
|
* Validate graphics window parms & store if okay
|
||||||
* First 8 bytes of SHRVDUQ: left, bottom, right, top
|
* First 8 bytes of SHRVDUQ: left, bottom, right, top
|
||||||
SHRVDU24 >>> ENTMAIN
|
SHRVDU24 >>> ENTMAIN
|
||||||
* PHP ; Disable interrupts
|
|
||||||
* SEI
|
|
||||||
CLC ; 65816 native mode
|
CLC ; 65816 native mode
|
||||||
XCE
|
XCE
|
||||||
REP #$30 ; 16 bit M & X
|
REP #$30 ; 16 bit M & X
|
||||||
|
@ -1352,12 +1487,10 @@ SHRVDU24 >>> ENTMAIN
|
||||||
|
|
||||||
SEC ; 65816 emulation mode
|
SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
* PLP
|
|
||||||
>>> XF2AUX,VDU24RET
|
>>> XF2AUX,VDU24RET
|
||||||
:BAD SEC ; 65816 emulation mode
|
:BAD SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
* PLP
|
>>> XF2AUX,VDUXXRET
|
||||||
>>> XF2AUX,VDU24RETBAD
|
|
||||||
|
|
||||||
|
|
||||||
* Reset graphics window
|
* Reset graphics window
|
||||||
|
@ -1434,7 +1567,7 @@ SHRPALCHANGE >>> ENTMAIN
|
||||||
STAL $E19E00+9,X
|
STAL $E19E00+9,X
|
||||||
STAL $E19E00+17,X
|
STAL $E19E00+17,X
|
||||||
STAL $E19E00+25,X
|
STAL $E19E00+25,X
|
||||||
RTS
|
BRA :DONE
|
||||||
:MODE320 TXA
|
:MODE320 TXA
|
||||||
AND #%00011110 ; Has already been shifted
|
AND #%00011110 ; Has already been shifted
|
||||||
TAX
|
TAX
|
||||||
|
@ -1442,7 +1575,7 @@ SHRPALCHANGE >>> ENTMAIN
|
||||||
STAL $E19E00,X ; Store in logical slot
|
STAL $E19E00,X ; Store in logical slot
|
||||||
LDA PALETTE320+1,Y ; Byte 2 of physical colour
|
LDA PALETTE320+1,Y ; Byte 2 of physical colour
|
||||||
STAL $E19E00+1,X ; Store in logical slot
|
STAL $E19E00+1,X ; Store in logical slot
|
||||||
>>> XF2AUX,VDU19RET
|
:DONE >>> XF2AUX,VDUXXRET
|
||||||
|
|
||||||
|
|
||||||
* Assign a custom RGB colour to a 'logical' colour
|
* Assign a custom RGB colour to a 'logical' colour
|
||||||
|
@ -1466,7 +1599,7 @@ SHRPALCUSTOM >>> ENTMAIN
|
||||||
STAL $E19E00+9,X
|
STAL $E19E00+9,X
|
||||||
STAL $E19E00+17,X
|
STAL $E19E00+17,X
|
||||||
STAL $E19E00+25,X
|
STAL $E19E00+25,X
|
||||||
RTS
|
BRA :DONE
|
||||||
:MODE320 TXA
|
:MODE320 TXA
|
||||||
AND #%00011110 ; Has already been shifted
|
AND #%00011110 ; Has already been shifted
|
||||||
TAX
|
TAX
|
||||||
|
@ -1474,7 +1607,7 @@ SHRPALCUSTOM >>> ENTMAIN
|
||||||
STAL $E19E00,X ; Store in logical slot
|
STAL $E19E00,X ; Store in logical slot
|
||||||
TYA ; R component
|
TYA ; R component
|
||||||
STAL $E19E00+1,X ; Store in logical slot
|
STAL $E19E00+1,X ; Store in logical slot
|
||||||
>>> XF2AUX,VDU19RET
|
:DONE >>> XF2AUX,VDUXXRET
|
||||||
|
|
||||||
|
|
||||||
* Table of addresses of SHR rows (in reverse order)
|
* Table of addresses of SHR rows (in reverse order)
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#mame -w apple2ee -debug -sl5 mouse -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po
|
#mame -w apple2ee -debug -sl5 mouse -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po
|
||||||
mame -w apple2gs -debug -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po -harddisk2 tests/JGHMusic2.po
|
mame -w apple2gs -debug -sl7 cffa2 -harddisk1 ~/Personal/Development/Applecorn/applecorn.po -harddisk2 tests/acrn*po # tests/Creat*po
|
||||||
|
|
BIN
tests/Creative_Graphics.po
Normal file
BIN
tests/Creative_Graphics.po
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user