From 76ca965adbb730f0e86cb8fd0b4b5cdb9999dd4a Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 31 Oct 2022 18:47:29 -0400 Subject: [PATCH] Added five-byte system clock, OSWORD &01. --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.bytwrd.s | 11 +++++++++-- mainmem.audio.s | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/applecorn.po b/applecorn.po index 7faff25bb5eaa235979035bc1e60078e03eb6eba..c7410f3ba35e514413e4a0a9410009e6195dc52b 100644 GIT binary patch delta 7257 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 delta 7024 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 N4lVCQJ3Esr{||uJFuwo* diff --git a/auxmem.bytwrd.s b/auxmem.bytwrd.s index 824bb2f..923f059 100644 --- a/auxmem.bytwrd.s +++ b/auxmem.bytwrd.s @@ -315,11 +315,18 @@ WORD00 IF MAXLEN-OSTEXT-2 * On entry, (OSCTRL)=>control block * Y=0 -WORD01 TYA ; Dummy, just return zero -:WORD01LP STA (OSCTRL),Y +WORD01 PHP ; Disable interrupts + SEI + STA RDMAINRAM ; Read from main memory +:WORD01LP LDA SYSCLOCK,Y ; Read sys clock in main mem + STA (OSCTRL),Y ; Store in buffer INY CPY #$05 BCC :WORD01LP + STA RDCARDRAM ; Read from aux memory + PLP ; Restore interrupt state + RTS + WORD04 WORD03 WORD02 RTS ; Dummy, do nothing diff --git a/mainmem.audio.s b/mainmem.audio.s index 3a1c610..9635fa3 100644 --- a/mainmem.audio.s +++ b/mainmem.audio.s @@ -4,7 +4,11 @@ * Applecorn audio code * -COUNTER DW $0000 ; Centisecond counter +SYSCLOCK DB $00 ; Centisecond counter (5 bytes) + DB $00 + DB $00 + DB $00 + DB $00 * Sound buffers * Four bytes are enqueued for each note, as follows: @@ -370,9 +374,16 @@ CHORD PHA * Called from Ensoniq interrupt handler - process audio queue * Should be called at 100Hz -ENSQISR INC COUNTER+0 ; Increment centisecond timer +ENSQISR INC SYSCLOCK+0 ; Increment system clock BNE :S1 - INC COUNTER+1 + INC SYSCLOCK+1 + BNE :S1 + INC SYSCLOCK+2 + BNE :S1 + INC SYSCLOCK+3 + BNE :S1 + INC SYSCLOCK+4 + :S1 DEC :CNT ; Find every 5th cycle BNE :AT100HZ LDA #5