diff --git a/arch/z80/sms/blk.fs b/arch/z80/sms/blk.fs index cf902f6..0805c5c 100644 --- a/arch/z80/sms/blk.fs +++ b/arch/z80/sms/blk.fs @@ -151,15 +151,20 @@ TL. When the '164 is full, TL is low. Port A TL is bit 4 ) 2 _THB! ( TH input ) ; ( ----- 622 ) : (spie) DROP ; ( always enabled ) -: (spix) ( x -- x, for port B ) - 0 SWAP ( rx tx ) 8 0 DO - ( send current bit to TRB, TR's output bit ) - DUP 7 I - RSHIFT 1 AND _TRB! - 1 _THB! ( CLK hi ) - ( read into rx ) SWAP 1 LSHIFT _D1@ ( tx rx<< x ) - 0 _THB! ( CLK lo ) - ( out bit is the 6th ) 6 RSHIFT 1 AND OR - SWAP LOOP ( rx tx ) DROP ; +CODE (spix) ( x -- x, for port B ) HL POP, chkPS, + ( TR = DATA TH = CLK ) + CPORT_MEM LDA(i), 0xf3 ANDi, ( TR/TH output ) + H 8 LDri, BEGIN, + 0xbf ANDi, ( TR lo ) L RL, ( --> C ) + IFC, 0x40 ORi, ( TR hi ) THEN, + CPORT_CTL OUTiA, ( clic! ) 0x80 ORi, ( TH hi ) + CPORT_CTL OUTiA, ( clac! ) + EXAFAF', CPORT_D1 INAi, ( Up Btn is B6 ) RLA, RLA, + E RL, EXAFAF', + 0x7f ANDi, ( TH lo ) CPORT_CTL OUTiA, ( cloc! ) + H DECr, JRNZ, AGAIN, CPORT_MEM LD(i)A, + L E LDrr, HL PUSH, +;CODE ( ----- 625 ) ( Routines for interacting with SMS controller ports. Requires CPORT_MEM, CPORT_CTL, CPORT_D1 and CPORT_D2 to be