From 1027179f6eecbe9dfbf150256c83dc3d2276ae61 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Wed, 21 Dec 2022 21:04:44 -0500 Subject: [PATCH] Fixed #199 - ISR now has exclusive use of A3L/A3H. --- applecorn.po | Bin 819200 -> 819200 bytes applecorn.s | 2 ++ auxmem.chario.s | 4 +-- auxmem.hgr.s | 9 +++++++ auxmem.vdu.s | 33 +++++++++++------------ mainmem.audio.s | 70 ++++++++++++++++++++++++------------------------ mainmem.hgr.s | 3 --- 7 files changed, 63 insertions(+), 58 deletions(-) diff --git a/applecorn.po b/applecorn.po index 5de4c6173fcc1da042f9ec047762b669aa9d6c04..893cc31b7b1258eb42d7685eb82ae50216506546 100644 GIT binary patch delta 10992 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 delta 10841 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 GAO9Z=<%CKA diff --git a/applecorn.s b/applecorn.s index df01287..e81084b 100644 --- a/applecorn.s +++ b/applecorn.s @@ -28,6 +28,8 @@ A1L EQU $3C A1H EQU $3D A2L EQU $3E A2H EQU $3F +A3L EQU $40 ; Used for ISR only +A3H EQU $41 ; Used for ISR only A4L EQU $42 A4H EQU $43 diff --git a/auxmem.chario.s b/auxmem.chario.s index 8bafece..1aab318 100644 --- a/auxmem.chario.s +++ b/auxmem.chario.s @@ -109,11 +109,11 @@ KBDINIT LDX #DEFBYTEEND-DEFBYTE-1 DEX BPL :KBDINITLP JSR SOFTKEYCHK ; Clear soft keys - LDX #$C0 + LDX #$C3 STX FX254VAR ; b7-b4=default KBD map, b3-b0=default MODE BIT SETV ; Set V JSR KBDTEST ; Test if key being pressed - BCS :KBDINITOK ; Return default MODE=0 + BCS :KBDINITOK ; Return default MODE=3 STA KBDACK ; Ack. keypress TAX ; Use keypress as default MODE :KBDINITOK TXA diff --git a/auxmem.hgr.s b/auxmem.hgr.s index f81712f..e2aeeb9 100644 --- a/auxmem.hgr.s +++ b/auxmem.hgr.s @@ -13,6 +13,15 @@ HGRTAB DW $2000,$2080,$2100,$2180,$2200,$2280,$2300,$2380 DW $2028,$20A8,$2128,$21A8,$2228,$22A8,$2328,$23A8 DW $2050,$20D0,$2150,$21D0,$2250,$22D0,$2350,$23D0 +* Enable HGR mode +HGRVDU22 JSR VDU12 ; Clear text and HGR screen + STA HIRES ; Hi-Res + STA GRON ; Enable Graphics + STA PAGE1 ; PAGE1 + STA CLR80VID ; Select 40col text + RTS + + * Write character to HGR screen PRCHRSOFT CMP #$A0 ; Convert to screen code BCS :B0 diff --git a/auxmem.vdu.s b/auxmem.vdu.s index d5e1feb..7a710e9 100644 --- a/auxmem.vdu.s +++ b/auxmem.vdu.s @@ -113,14 +113,15 @@ VDUWORKSZ EQU VDUVAREND-VDUWORKSP+1 * Screen definitions * 0 1 2 3 6 7 ; MODEs sort-of completed -SCNTXTMAXX DB 79, 39, 39, 79, 39, 19, 39, 39 ; Max text column +SCNTXTMAXX DB 79, 39, 39, 79, 39, 39, 39, 39 ; Max text column SCNTXTMAXY DB 23, 23, 23, 23, 23, 23, 23, 23 ; Max text row -SCNBYTES DB 01, 08, 08, 01, 01, 01, 01, 01 ; Bytes per character -SCNCOLOURS DB 15, 07, 07, 01, 01, 15, 01, 01 ; Colours-1 -SCNPIXELS DB 00, 07, 07, 00, 00, 00, 00, 00 ; Pixels per byte -SCNTYPE DB 01,128,128, 01, 00, 00, 00, 64 ; Screen type -* b7=FastDraw -* b6=Teletext +SCNBYTES DB 08, 08, 08, 01, 01, 01, 01, 01 ; Bytes per character +SCNCOLOURS DB 03, 15, 07, 01, 01, 01, 01, 01 ; Colours-1 +SCNPIXELS DB 08, 08, 07, 00, 00, 00, 00, 00 ; Pixels per byte +SCNTYPE DB 32, 32,128, 01, 00, 00, 00, 64 ; Screen type +* b7=FastDraw -> HGR mode +* b6=Teletext -> No-op +* b5=SHR mode on Apple IIgs * b0=40COL/80COL * Colour table @@ -556,11 +557,12 @@ VDUINIT STA VDUQ+8 * VDU 22 - MODE n ***************** * At the moment only MODEs available: -* MODE 1 - 280x192 HGR graphics, 40 cols bitmap text +* MODE 0 - 640x200 SHR graphics, 80 cols bitmap text (GS only) +* MODE 1 - 320x200 SHR graphics, 40 cols bitmap text (GS only) +* MODE 2 - 280x192 HGR graphics, 40 cols bitmap text * MODE 3 - 80x24 text * MODE 6 - 40x24 text * MODE 7 - 40x24 with $80-$9F converted to spaces -* MODE 0 defaults to MODE 3 * All others default to MODE 6 * * Wait for VSync? @@ -592,8 +594,9 @@ VDU22 LDA VDUQ+8 JSR VDU26 ; Default windows STA FULLGR ; Clear MIXED mode LDA VDUSCREEN - BMI VDU22G ; b7=1, graphics mode - AND #$01 ; 40col/80col bit + BPL :NOTHGR + JMP HGRVDU22 ; b7=1, graphics mode +:NOTHGR AND #$01 ; 40col/80col bit TAX STA CLR80VID,X ; Select 40col/80col STA TEXTON ; Enable Text @@ -626,16 +629,10 @@ VDU12 STZ FXLINES STA VDUTEXTX ; COL RTS + * Clear the graphics screen buffer VDU12SOFT JMP VDU16 ; *TEMP* -VDU22G JSR VDU12 ; Clear text and HGR screen - STA HIRES ; Hi-Res - STA GRON ; Enable Graphics - STA PAGE1 ; PAGE1 - STA CLR80VID ; Select 40col text - RTS - * Clear to EOL, respecting text window boundaries CLREOL JSR CHARADDR ; Set VDUADDR=>start of line diff --git a/mainmem.audio.s b/mainmem.audio.s index c5c88b6..51c4d0a 100644 --- a/mainmem.audio.s +++ b/mainmem.audio.s @@ -131,12 +131,12 @@ CURRAMP DB $00 * Get address of sound buffer * On entry: X is buffer number (4..7) -* On exit: A1L,A1H points to start of buffer +* On exit: A3L,A3H points to start of buffer * Called with interrupts disabled GETBUFADDR LDA :BUFADDRL,X - STA A1L + STA A3L LDA :BUFADDRH,X - STA A1H + STA A3H RTS :BUFADDRL DB $00 DB $00 @@ -175,9 +175,9 @@ INS PHP ; Save flags, turn off interrupts BEQ :FULL LDY ENDINDICES,X ; Current position STA ENDINDICES,X ; Write updated input pointer - JSR GETBUFADDR ; Buffer address into A1L,A1H + JSR GETBUFADDR ; Buffer address into A3L,A3H PLA ; Get value to write back - STA (A1L),Y ; Write to buffer + STA (A3L),Y ; Write to buffer PLY PLP ; Restore flags CLC ; Exit with carry clear @@ -211,8 +211,8 @@ REM PHP ; Save flags, turn off interrupts CMP ENDINDICES,X BEQ :EMPTY ; Buffer is empty TAY ; Buffer pointer into Y - JSR GETBUFADDR ; Buffer address into A1L,A1H - LDA (A1L),Y ; Read byte from buffer + JSR GETBUFADDR ; Buffer address into A3L,A3H + LDA (A3L),Y ; Read byte from buffer PHA ; Stash for later BVS :EXAM ; If only examination, done INY ; Next byte @@ -268,12 +268,12 @@ RELNOTE PHX ; Preserve X TXA ; Audio channel X->A ORA #$04 ; Convert to queue number TAX ; Queue number ->X - JSR GETBUFADDR ; Buffer address into A1L,A1H + JSR GETBUFADDR ; Buffer address into A3L,A3H LDA STARTINDICES,X ; Output pointer for buf X TAY - LDA (A1L),Y ; Obtain Hold/Sync byte + LDA (A3L),Y ; Obtain Hold/Sync byte AND #$F0 ; Set sync nybble to zero .. - STA (A1L),Y ; .. to release the note + STA (A3L),Y ; .. to release the note PLX ; Recover original X :RTS RTS @@ -568,30 +568,30 @@ ENVTICKS DEC CHANCTR,X ; Decrement counter * On return: Sets CHANCTR,X to length of each step in 1/100ths RSTTICKS LDA CHANENV,X ; Get envelope number TAY - JSR GETENVADDR ; Envelope address in A1L,A1H + JSR GETENVADDR ; Envelope address in A3L,A3H LDY #ENVT ; Parm for length of each step - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm AND #$7F ; Mask out MSB STA CHANCTR,X ; Reset counter RTS * On entry: Y is envelope number -* On return: A1L,A1H point to start of buffer for this envelope +* On return: A3L,A3H point to start of buffer for this envelope * X is preserved -GETENVADDR LDA #ENVBUF0 - STA A1H + STA A3H :L1 CPY #$00 ; See if Y is zero BEQ :DONE ; If so, we are done - LDA A1L ; Add 13 to A1L,A1H + LDA A3L ; Add 13 to A3L,A3H CLC ADC #13 - STA A1L - LDA A1H + STA A3L + LDA A3H ADC #00 - STA A1H + STA A3H DEY ; Decr envelopes remaining BRA :L1 ; Go again :DONE RTS @@ -602,7 +602,7 @@ GETENVADDR LDA # A1L,A1H + JSR GETENVADDR ; Addr of envelope -> A3L,A3H LDA PITCHSECT,X ; See what section we are in BEQ :SECT1 ; Section 1, encoded as 0 CMP #$01 @@ -612,31 +612,31 @@ PITCHENV LDA CHANENV,X ; Get envelope number RTS ; Other section, do nothing :SECT1 LDY #ENVPN1 ; Parm: num steps in section 1 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm CMP PITCHSTEP,X ; Are we there yet? BEQ :NXTSECT ; Yes! LDY #ENVPI1 ; Parm: change pitch/step section 1 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm JSR UPDPITCH ; Update the pitch INC PITCHSTEP,X ; One more step RTS :SECT2 LDY #ENVPN2 ; Parm: num steps in section 2 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm CMP PITCHSTEP,X ; Are we there yet? BEQ :NXTSECT ; Yes! LDY #ENVPI2 ; Parm: change pitch/step section 2 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm JSR UPDPITCH ; Update the pitch INC PITCHSTEP,X ; One more step RTS :SECT3 LDY #ENVPN3 ; Parm: num steps in section 3 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm CMP PITCHSTEP,X ; Are we there yet? BEQ :LASTSECT ; Yes! LDY #ENVPI3 ; Parm: change pitch/step section 3 - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm JSR UPDPITCH ; Update the pitch INC PITCHSTEP,X ; One more step RTS @@ -644,7 +644,7 @@ PITCHENV LDA CHANENV,X ; Get envelope number STZ PITCHSTEP,X ; Back to step 0 of section RTS :LASTSECT LDY #ENVT ; Parm: length/step + autorepeat - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm AND #$80 ; MSB is auto-repeat flag BNE :NXTSECT ; Not repeating STZ PITCHSECT,X ; Go back to section 1 @@ -669,7 +669,7 @@ UPDPITCH STX OSCNUM * X is preserved ADSRENV LDA CHANENV,X ; Get envelope number TAY - JSR GETENVADDR ; Addr of envelope -> A1L,A1H + JSR GETENVADDR ; Addr of envelope -> A3L,A3H LDA AMPSECT,X ; See what section we are in BEQ :ATTACK ; Attack, encoded as 0 CMP #$01 @@ -680,31 +680,31 @@ ADSRENV LDA CHANENV,X ; Get envelope number BEQ :RELEASE ; Release, encoded as 3 RTS ; Otherwise nothing to do :ATTACK LDY #ENVAA ; Parm: attack change/step - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm PHA LDY #ENVALA ; Parm: level at end of attack - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm PLY JSR ADSRPHASE ; Generic ADSR phase handler BCS :NEXTSECT ; Phase done -> decay RTS :DECAY LDY #ENVAD ; Parm: delay change/step - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm PHA LDY #ENVALD ; Parm: level at end of delay - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm PLY JSR ADSRPHASE ; Generic ADSR phase handler BCS :NEXTSECT ; Phase done -> sustain RTS :SUSTAIN LDY #ENVAS ; Parm: delay change/step - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm TAY LDA #$00 ; Target level zero JSR ADSRPHASE ; Generic ADSR phase handler RTS :RELEASE LDY #ENVAR ; Parm: attack change/step - LDA (A1L),Y ; Get value of parm + LDA (A3L),Y ; Get value of parm TAY LDA #$00 ; Target level zero JSR ADSRPHASE ; Generic ADSR phase handler diff --git a/mainmem.hgr.s b/mainmem.hgr.s index faf0ea0..02cd58b 100644 --- a/mainmem.hgr.s +++ b/mainmem.hgr.s @@ -146,8 +146,6 @@ DRAWCHAR >>> ENTMAIN * Copy text line A+1 to line A HGRSCR1L >>> ENTMAIN - PHP ; Disable interrupts .. - SEI ; .. to prevent corruption while scrolling INC MTXTWINRGT ASL ; Dest addr->A4L,A4H TAX @@ -179,7 +177,6 @@ DOHGRSCR1L LDX #$00 INX CPX #8 ; 8 pixel rows in character BNE :L1 - PLP ; Re-enable interrupts >>> XF2AUX,HSCR1RET * Copy text line A to line A+1