mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-08-14 02:26:04 +00:00
Merge branch 'bobbimanners:main' into main
This commit is contained in:
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
@@ -94,7 +94,6 @@ RDVBL EQU $C019
|
|||||||
RD80VID EQU $C01F
|
RD80VID EQU $C01F
|
||||||
|
|
||||||
TBCOLOR EQU $C022 ; GS-specific, used but commented out
|
TBCOLOR EQU $C022 ; GS-specific, used but commented out
|
||||||
KEYMOD EQU $C025 ; GS-specific
|
|
||||||
NEWVIDEO EQU $C029 ; GS-specific, new video register
|
NEWVIDEO EQU $C029 ; GS-specific, new video register
|
||||||
|
|
||||||
SPKR EQU $C030
|
SPKR EQU $C030
|
||||||
|
@@ -218,6 +218,6 @@ 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-12-26-HOHOHO'
|
HELLO ASC 'Applecorn MOS 2022-12-26'
|
||||||
DB $00 ; Unify MOS messages
|
DB $00 ; Unify MOS messages
|
||||||
|
|
||||||
|
146
auxmem.shr.s
146
auxmem.shr.s
@@ -265,25 +265,34 @@ SHRPRCHAR SEC
|
|||||||
LDA #$E1
|
LDA #$E1
|
||||||
STA VDUBANK2
|
STA VDUBANK2
|
||||||
JSR SHRCHARADDR ; Screen addr in VDUADDR
|
JSR SHRCHARADDR ; Screen addr in VDUADDR
|
||||||
LDX #$00 ; First row of char
|
|
||||||
:L1 LDY #$00
|
* 65816 code contributed by John Brooks follows ...
|
||||||
LDA [VDUADDR2] ; Load exploded font data 1st byte
|
|
||||||
JSR SHRCOLBYTE
|
PHP ; Disauble interrupts
|
||||||
STA [VDUADDR] ; Store on screen
|
SEI
|
||||||
INY
|
PHB ; Save data bank
|
||||||
INC VDUADDR2+0 ; Increment exploded font ptr
|
LDA VDUADDR2+2 ; Push font Bank onto stack
|
||||||
BNE :S1
|
PHA
|
||||||
INC VDUADDR2+1
|
PLB ; Set data bank to font bank
|
||||||
:S1 LDA [VDUADDR2] ; Load exploded font data 2nd byte
|
CLC ; 65816 native mode
|
||||||
JSR SHRCOLBYTE
|
XCE
|
||||||
STA [VDUADDR],Y ; Store on screen
|
REP #$30 ; 16 bit M & X
|
||||||
INC VDUADDR2+0 ; Increment exploded font ptr
|
MX %00 ; Tell Merlin
|
||||||
BNE :S2
|
LDY VDUADDR2 ; Font src ptr
|
||||||
INC VDUADDR2+1
|
LDX VDUADDR ; SHR dst ptr
|
||||||
:S2 JSR SHRNEXTROW ; Add 160 to VDUADDR
|
SrcFont = $000000
|
||||||
INX ; Next row of font
|
DstShr = $E10000
|
||||||
CPX #$08 ; Last row?
|
LUP 8 ; Unroll x 8
|
||||||
BNE :L1
|
LDA !SrcFont,Y ; Read 2 bytes of exploded font
|
||||||
|
STAL DstShr,X ; Write 2 bytes to screen
|
||||||
|
SrcFont = SrcFont+2
|
||||||
|
DstShr = DstShr+160
|
||||||
|
--^
|
||||||
|
PLB ; Recover data bank
|
||||||
|
SEC ; Back to emulation mode
|
||||||
|
XCE
|
||||||
|
MX %11 ; Tell Merlin
|
||||||
|
PLP ; Normal service resumed
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
@@ -330,46 +339,69 @@ SHRNEXTROW LDA VDUADDR+0 ; Add 160 to VDUADDR
|
|||||||
|
|
||||||
* Forwards scroll one line
|
* Forwards scroll one line
|
||||||
* Copy text line A+1 to line A
|
* Copy text line A+1 to line A
|
||||||
|
* Note: Code for this courtesy Kent Dickey
|
||||||
* TODO: This is only for 640 mode at present
|
* TODO: This is only for 640 mode at present
|
||||||
SHRSCR1LINE TAY
|
SHRSCR1LINE PHY
|
||||||
LDA SHRTAB,Y ; MSB of address of line A
|
PHX
|
||||||
STA VDUADDR+1
|
STA VDUADDR+1 ; Screen line -> MSB
|
||||||
STZ VDUADDR+0 ; Addr of start of line
|
STZ VDUADDR+0 ; Zero LSB
|
||||||
INY
|
PHP ; Disable interrupts
|
||||||
LDA SHRTAB,Y ; MSB of address of line A+1
|
SEI
|
||||||
STA VDUADDR2+1
|
CLC ; Enter native mode
|
||||||
STZ VDUADDR2+0 ; Addr of start of line
|
XCE
|
||||||
LDA #$E1 ; Bank $E1
|
PHB ; Preserve data bank
|
||||||
STA VDUBANK
|
REP #$31 ; M,X 16 bit, carry clear
|
||||||
STA VDUBANK2
|
MX %00 ; Tell Merlin
|
||||||
LDA #$08 ; Eight rows of pixels
|
LDA VDUADDR ; Screen line to scroll
|
||||||
STA :CTR
|
ASL ; Mult 4
|
||||||
INC TXTWINRGT
|
ASL
|
||||||
:L0 LDA TXTWINLFT
|
ADC VDUADDR ; Mult 5
|
||||||
TAX
|
STA VDUADDR ; VDUADDR = line * $500
|
||||||
|
LDA TXTWINLFT ; Left margin
|
||||||
ASL ; 2 bytes / char
|
ASL ; 2 bytes / char
|
||||||
TAY
|
AND #$00ff ; Mask to get 8 bit result
|
||||||
:L1 CPX TXTWINRGT
|
ADC VDUADDR ; Add to beginning of line addr
|
||||||
BCS :S1
|
STA VDUADDR ; VDUADDR = start position
|
||||||
LDA [VDUADDR2],Y
|
SEP #$21 ; M 8 bit, X 16 bit, carry set
|
||||||
STA [VDUADDR],Y
|
MX %10 ; Tell Merlin
|
||||||
INY
|
LDA TXTWINRGT ; Compute width ..
|
||||||
LDA [VDUADDR2],Y
|
SBC TXTWINLFT ; .. right minus left
|
||||||
STA [VDUADDR],Y
|
REP #$31 ; M,X 16 bit, carry clear
|
||||||
INY
|
MX %00 ; Tell Merlin
|
||||||
INX
|
ASL ; 2 bytes / char
|
||||||
BRA :L1
|
AND #$00ff ; Mask to get 8 bit result
|
||||||
:S1 JSR SHRNEXTROW ; Add 160 to VDUADDR
|
ADC VDUADDR ; Add to start position
|
||||||
LDA VDUADDR2+0 ; Add 160 to VDUADDR2
|
TAX ; Will use as index
|
||||||
CLC
|
PEA #$e1e1 ; Set databank to $E1
|
||||||
ADC #160
|
PLB
|
||||||
STA VDUADDR2+0
|
PLB
|
||||||
LDA VDUADDR2+1
|
:LOOP1 LDA $2500,x ; 2 bytes, row 0
|
||||||
ADC #$00
|
STA $2000,x
|
||||||
STA VDUADDR2+1
|
LDA $25a0,x ; row 1
|
||||||
DEC :CTR
|
STA $20a0,x
|
||||||
BNE :L0
|
LDA $2640,x ; row 2
|
||||||
DEC TXTWINRGT
|
STA $2140,x
|
||||||
|
LDA $26e0,x ; row 3
|
||||||
|
STA $21e0,x
|
||||||
|
LDA $2780,x ; row 4
|
||||||
|
STA $2280,x
|
||||||
|
LDA $2820,x ; row 5
|
||||||
|
STA $2320,x
|
||||||
|
LDA $28c0,x ; row 6
|
||||||
|
STA $23c0,x
|
||||||
|
LDA $2960,x ; row 7
|
||||||
|
STa $2460,x
|
||||||
|
DEX ; Update index
|
||||||
|
DEX
|
||||||
|
BMI :DONE ; Jump out if odd->-ve
|
||||||
|
CPX VDUADDR ; Compare with start addr
|
||||||
|
BCS :LOOP1 ; Bytes left? Go again
|
||||||
|
:DONE PLB ; Recover data bank
|
||||||
|
SEC ; Back to emulation mode
|
||||||
|
XCE
|
||||||
|
PLP ; Recover flags + regs
|
||||||
|
PLX
|
||||||
|
PLY
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user