refactoring

This commit is contained in:
2026-03-13 19:38:37 +00:00
parent db35d4709d
commit 6b449b84ef

41
sid.4th
View File

@@ -1,12 +1,19 @@
( --- Gforth SID chip stub --- ) ( --- Gforth SID chip stub --- )
( : SID! SWAP . . ." SID! " ; ) ( : PC! DUP 255 AND . 8 RSHIFT . . CR ; )
( : >< DUP 8 RSHIFT SWAP 8 LSHIFT 65534 AND OR ; ) ( : >< DUP 8 RSHIFT SWAP 8 LSHIFT 65534 AND OR ; )
( --- SID chip access --- ) ( --- Library --- )
: PC2! ( b b p-addr -- ) ( Data byte A, high address byte B, port address C ) : PC2! ( b b p-addr -- ) ( Data byte A, high address byte B, port address C )
SWAP >< OR PC! ; SWAP >< OR PC! ;
: BIT ( n -- ) ( define bit flag )
1 SWAP LSHIFT CONSTANT ;
: BIT+ ( n -- n+1 ) ( define bit flag and next )
DUP 1+ SWAP BIT ;
( --- SID chip access --- )
: SID! ( b n0-31 -- ) ( Send byte to SID { 1data , 4?register | 2?interrupt } ) : SID! ( b n0-31 -- ) ( Send byte to SID { 1data , 4?register | 2?interrupt } )
2DUP 128 OR 84 PC2! 2DUP 128 OR 84 PC2!
2DUP 127 AND 84 PC2! 2DUP 127 AND 84 PC2!
@@ -30,14 +37,15 @@ CREATE >VOICE-CTL VOICE-CTLS ,
( --- SID chip control register flags --- ) ( --- SID chip control register flags --- )
: GATE 1 ; 0 BIT+ GATE
: SYNC 2 ; BIT+ SYNC
: RING 4 ; BIT+ RING
: TEST 8 ; BIT+ TEST
: TRI 16 ; BIT+ TRI
: SAW 32 ; BIT+ SAW
: PWM 64 ; BIT+ PWM
: NOISE 128 ; BIT+ NOISE
DROP
( --- Voice register operation --- ) ( --- Voice register operation --- )
@@ -69,15 +77,16 @@ CREATE >VOICE-CTL VOICE-CTLS ,
( Reg 23 - { 4?filter-resonance [0-15] | 1?ext | 1?voice-2 | 1?voice-1 | 1?voice-0 } ) ( Reg 23 - { 4?filter-resonance [0-15] | 1?ext | 1?voice-2 | 1?voice-1 | 1?voice-0 } )
: RES ( n0-15 -- b ) 15 AND 4 LSHIFT ; : RES ( n0-15 -- b ) 15 AND 4 LSHIFT ;
: VOICE-FILTER ( voice -- b ) 1 SWAP LSHIFT ; : VOICE-FILTER ( voice -- b ) 1 SWAP LSHIFT ;
: EXT 8 ; 3 BIT EXT-FILTER
: RES|FILTER! ( b -- ) 23 SID! ; : RES|FILTER! ( b -- ) 23 SID! ;
( Reg 24 - { 1?mute-voice-3 | 1?highpass | 1?bandpass | 1?lowpass | 4?volume ) ( Reg 24 - { 1?mute-voice-3 | 1?highpass | 1?bandpass | 1?lowpass | 4?volume )
: VOLUME ( n0-15 -- b ) 15 AND ; : VOLUME ( n0-15 -- b ) 15 AND ;
: LOWPASS 16 ; 4 BIT+ LOWPASS
: BANDPASS 32 ; BIT+ BANDPASS
: HIGHPASS 64 ; BIT+ HIGHPASS
: MUTE-VOICE3 128 ; BIT+ MUTE-VOICE3
DROP
: MODE|VOLUME! 24 SID! ; : MODE|VOLUME! 24 SID! ;
( --- Frequency table --- ) ( --- Frequency table --- )
@@ -119,7 +128,7 @@ CREATE TEMPO 40000 ,
: DELAY ( delay -- ) 0 DO LOOP ; : DELAY ( delay -- ) 0 DO LOOP ;
: PAUSE ( delay -- ) DUP DELAY DELAY ; : PAUSE ( delay -- ) DUP DELAY DELAY ;
: PLAY START DUP DELAY DELAY STOP ; : PLAY START DUP PAUSE STOP ;
( --- Test --- ) ( --- Test --- )