ZXTape! TSAMPL4.ASM&%}o U(% ORG 62000  ENT $  LD IY,#5C3A  RES 0,(IY+2)  LD HL,SBUF  LD (HL),#1F  CALL SetInt  LD HL,SBUF+1 LD (HL),#0 CALL GRAPH LR CALL MAIN  LD A,#7F  IN A,(#FE)  RRCA  RET NC  LD A,(KEYP)  AND A  JR NZ,WAITK  CALL FACE  BIT 4,A  JR NZ,LR  LD A,(KEYP)  CPL  LD (KEYP),A  LD HL,SBUF  CALL INITS  JR LR WAITK CALL FACE BIT 4,A ! JR Z,LR " LD A,(KEYP) # XOR A $ LD (KEYP),A % JR LR /TMP DEFW 0 0CLEN DEFB #1F 1MOD DEFB 0 2CHAR DEFS 6 3BUF DEFS 20 4BM DEFW 50000 7WORK DEFW 0 8COORD DEFW 0 9KEYP DEFB 0 =CURS DEFW 0 >START DEFW 41616 @COL DEFB #38 BDATA DEFW 0 CFLOW DEFW 256 DPRJ DEFW #A02 FSBUF DEFS #20*4+2 OUTNUM LD H,B  LD L,C  LD BC,0  PUSH BC  LD DE,#2710  AND A L1 SBC HL,DE  INC C  JR NC,L1 ! ADC HL,DE & DEC C + LD DE,#3E8 0L2 SBC HL,DE 5 INC B : JR NC,L2 ? ADC HL,DE D DEC B I LD (CHAR),BC N POP BC S LD DE,#64 XL3 SBC HL,DE ] INC C b JR NC,L3 g ADC HL,DE l DEC C q LD DE,#A vL4 SBC HL,DE { INC B  JR NC,L4  ADD HL,DE  DEC B  LD (CHAR+2),BC  LD (CHAR+4),HL  RET PRH CALL OUTNUM  LD B,5  LD HL,CHAR DD LD A,(HL)  ADD A,#30  RST #10  INC HL  DJNZ DD  RET CONV LD HL,CHAR " LD DE,0 $ LD B,5 &LOOP LD A,(HL) ( AND #F * LD C,A , PUSH HL . EX DE,HL 0 ADD HL,HL 2 PUSH HL 4 POP DE 6 ADD HL,HL 8 ADD HL,HL : ADD HL,DE < LD E,C > LD D,0 @ ADD HL,DE B EX DE,HL D POP HL F INC HL H DJNZ LOOP J EX DE,HL L RET RPOSP LD A,22 T RST #10 V LD A,C X RST #10 Z LD A,B \ RST #10 ^ RET `UP DEC H b LD A,H d AND 7 f CP 7 h RET NZ j LD A,L l SUB #20 n LD L,A p RET C r LD A,H t ADD A,8 v LD H,A w RET xGETA LD A,E z AND #18 | ADD A,#40 ~ LD H,A  LD A,E  AND #7  RRCA  RRCA  RRCA  ADD A,D  LD L,A  RET LCURSOR LD DE,(CURS) N CALL FACE P BIT 0,A R JR NZ,C1 T LD A,D V AND A X JR Z,C1 Z DEC D \C1 CALL FACE ^ BIT 1,A ` JR NZ,C2 b LD A,D dLIM1 CP #20-#4 f JR NC,C2 h INC D C2 LD (CURS),DE  CALL PRIC  HALT  LD DE,(CURS) PRIC LD B,4 F2 CALL GETAA XXX LD C,4 F1 LD A,(HL)  XOR #17  LD (HL),A  INC L  DEC C  JR NZ,F1  INC E  DJNZ F2  RET GETAA LD A,E  AND #18  RRCA  RRCA  RRCA  OR #58  LD H,A  LD A,E  AND #7  RRCA  RRCA  RRCA  ADD A,D  LD L,A  RET AT LD B,(IX+4)  LD C,(IX+2)  JP POSP $DLINA RET xRTI RET @FACE LD A,#EF B IN A,(#FE) D LD B,8 FRLT RLCA H RR C J DJNZ RLT L SRL C N SRL C P SRL C R LD A,C T RET INP LD HL,CHAR+2 INP1 RES 5,(IY+1) WT LD B,(IX+1)  LD C,(IX+2)  LD A,B  ADD A,(IX)  LD B,A  CALL POSP  LD A,#5F  RST #10 MD CALL OUTBUF  BIT 5,(IY+1)  JR Z,WT ! CALL EXTKEY " LD A,(23560) $ CP #D & RET Z ( CP #9 * JR NZ,CP8 , LD A,(IX) . CP (IX+3) 0 JR NC,CP8 2 INC (IX) 4 INC HL 6CP8 LD A,(23560) 8 CP #8 : JR NZ,CPIT < LD A,(IX) > AND A @ JR Z,CPIT B DEC (IX) D DEC HL FCPIT LD A,(23560) H CP #20 J JR C,INP1 L CP #80 N JR NC,INP1 P LD (HL),A R JR INP1 TOUTBUF LD DE,CHAR U CALL AT V LD B,5 XLES LD A,(DE) Z RST #10 \ INC DE ^ DJNZ LES ` RET bPRST LD A,(DE) d CP #FF f RET Z h RST #10 j INC DE l JR PRST nINPUT CALL PRST pINP2 LD DE,CHAR q LD B,5 r LD A,"0" sRG LD (DE),A t INC DE u DJNZ RG v LD (IX),1 z CALL INP | LD DE,CHAR ~ LD B,5 CTRL LD A,(DE)  CP #30  JP C,INP2  CP #3A  JP NC,INP2  SUB #30  LD (DE),A  INC DE  DJNZ CTRL  JP CONV PRV CALL OUTNUM  LD HL,CHAR+1  LD B,4 ZS PUSH BC  LD BC,(PRJ)  CALL POSP  LD A,(HL)  ADD A,#30  RST #10  INC C  LD (PRJ),BC  POP BC  INC HL  DJNZ ZS  RET LEV CALL GETA  CALL UP * LD A,B + AND A , JR Z,J1 /LINE LD (HL),#FE 4 CALL UP 9 DJNZ LINE >J1 LD (HL),0 C CALL UP H DEC C M JR NZ,J1 R RET \ENV LD IX,SBUF ] LD DE,#11 a LD B,(IX) b INC IX c INC IX fEN1 LD A,(IX+3) k AND #F p PUSH BC u LD B,A z LD A,#10  SUB B  LD C,A  CALL LEV  INC D  LD BC,4  ADD IX,BC  POP BC  DJNZ EN1  RET INITC LD (CURS),DE  SUB B  LD (LIM1+1),A  LD A,C  LD (PRIC+1),A  LD A,B  LD (XXX+1),A  RET  SAVE LD HL,OUTS  LD (MD+1),HL LD DE,STX CALL PRST LD IX,SBF  LD (IX),0  LD HL,BUF+1  CALL INP1 NOF LD IX,BUF " LD (IX),3 $ CALL DLINA * LD (IX+11),L , LD (IX+12),H - PUSH HL . XOR A 0 LD DE,17 2 CALL #4C2 4 LD B,#30 5 HT HALT 6 DJNZ HT 8 LD A,#FF : POP DE < LD IX,(BM) = CALL #4C2 > LD DE,OUTBUF ? LD (MD+1),DE @ JP RTI L OUTS LD DE,BUF+1 M CALL AT N LD B,10 P O1 LD A,(DE) R RST #10 T INC DE V DJNZ O1 \ RET ` LOAD XOR A b SCF d LD IX,BUF f LD DE,17 h CALL #556 l LD DE,MSG5 n CALL PRST p LD DE,BUF+1 r LD B,#A t RJ LD A,(DE) v RST #10 x INC DE z DJNZ RJ LD IX,BUF LD H,(IX+12) LD L,(IX+11) LD DE,(FLOW) AND A SBC HL,DE JR NC,DY RES 5,(IY+1) HLD BIT 5,(IY+1) JR Z,HLD LD A,(23560) CP "N" JR NZ,DX DY SCF RET DX LD IX,BUF LD E,(IX+11) LD D,(IX+12) LD IX,(DATA) LD A,#FF SCF CALL #556 AND A RET JUMP LD A,(MOD) ADD A,A LD H,0 LD L,A ADD HL,DE LD E,(HL) INC HL LD D,(HL) PUSH DE RET MAIN CALL FACE BIT 2,A JR NZ,V1  LD A,(MOD) CP 2  JR NC,V1  LD HL,MOD # INC (HL) $ LD DE,VECTe % CALL JUMP ( JR V2 - V1 CALL FACE 2 BIT 3,A 7 JR NZ,V2 < LD A,(MOD) A AND A F JR Z,V2 G LD HL,MOD H DEC (HL) K LD DE,VECTe P CALL JUMP _ V2 CALL CURSOR d LD DE,VECTv i CALL JUMP n LD A,#7F s IN A,(#FE) x RRA } RRA JR C,V3 LD DE,VECTi CALL JUMP JR V4 V3 RRA JR C,V4 LD DE,VECTd CALL JUMP V4 LD A,#7F IN A,(#FE) RRA BIT 2,A RET NZ LD DE,VECTr JP JUMP CLS LD HL,#4000 LD DE,#4001 LD BC,6144 LD (HL),L LDIR LD BC,768 LD (HL),#0D LDIR RET GRAPH LD DE,VAL CALL PRST LD IX,SBUF+2 LD DE,#2 LD (TMP),DE LD A,(CLEN)  LD B,A  GL PUSH BC LD DE,(TMP)  LD (PRJ),DE  LD B,(IX+1)  LD C,(IX) ! CALL PRV & LD HL,TMP+1 + INC (HL) 0 POP BC 5 LD DE,4 : ADD IX,DE ? DJNZ GL @ CALL NS D JP ENV <NS LD IX,SBUF A LD B,(IX) F INC IX K INC IX P LD DE,#C UNS1 LD A,(IX+2) Z AND #1F _ PUSH BC d LD B,A i LD A,#20 n SUB B s LD C,A x CALL LEV } INC D  LD BC,4  ADD IX,BC  POP BC  DJNZ NS1  RET ICT LD A,(CLEN)  LD BC,#104  LD DE,(CURS)  LD E,#2  JP INITC ICN LD A,(CLEN)  LD BC,#104  LD DE,(CURS)  LD E,8  JP INITC ICE LD A,(CLEN)  LD BC,#102  LD DE,(CURS)  LD E,#0F  JP INITC TV LD BC,#1000  CALL POSP  LD HL,SBUF+2  CALL GETP  LD C,(HL)  INC HL  LD B,(HL)  JP PRH NV LD BC,#1007  CALL POSP  LD HL,SBUF+4  CALL GETP  LD B,0  LD C,(HL) " JP PRH 'EV LD BC,#100D , CALL POSP 1 LD HL,SBUF+5 6 CALL GETP ; LD B,0 @ LD C,(HL) E JP PRH JGETP LD A,(CURS+1) O ADD A,A T ADD A,A Y LD D,0 ^ LD E,A c ADD HL,DE h RET mINT LD HL,SBUF+2 r CALL GETP w LD E,(HL) | INC HL  LD D,(HL) MOD1 INC DE  LD A,D  AND #F  LD (HL),A  DEC HL  LD (HL),E U1 LD B,D  LD C,E  LD DE,(CURS)  LD (PRJ),DE  JP PRV INN LD HL,SBUF+4  CALL GETP  LD A,(HL) MOD2 INC A  AND #1F  LD (HL),A U2 LD B,A  LD A,#20  SUB B  LD C,A  LD DE,(CURS)  LD E,#C  JP LEV INE LD HL,SBUF+5  CALL GETP  LD A,(HL) MOD3 INC A  AND #0F  LD (HL),A U3 LD B,A ! LD A,#10 & SUB B + LD C,A 0 LD DE,(CURS) 5 LD E,#11 : JP LEV ?DET LD A,#1B D LD (MOD1),A I CALL INT N LD A,#13 S LD (MOD1),A X RET ]DEN LD A,#3D b LD (MOD2),A g CALL INN l LD A,#3C q LD (MOD2),A v RET {DEE LD A,#3D  LD (MOD3),A  CALL INE  LD A,#3C  LD (MOD3),A EXTKEY LD A,(23560)  CP 6  RET NZ  LD A,(23658)  XOR #8  LD (23658),A  RET VVOD LD IX,GWX  LD DE,NIL  JP INPUT RQT CALL VVOD  PUSH HL  LD HL,SBUF+2  CALL GETP  POP DE  LD (HL),E  INC HL  LD (HL),D  JP U1 RQN CALL VVOD  PUSH HL  LD HL,SBUF+4  CALL GETP  POP DE  LD A,E  AND #1F  LD (HL),A  JP U2 %RQE CALL VVOD * PUSH HL / LD HL,SBUF+5 4 CALL GETP 9 POP DE ; LD A,E < AND #0F > LD (HL),A C JP U3 p;System Vectors qVECTe DEFW ICT,ICN,ICE rVECTv DEFW TV,NV,EV sVECTi DEFW INT,INN,INE tVECTd DEFW DET,DEN,DEE uVECTr DEFW RQT,RQN,RQE FBFN DEFB 0,14,10,2,12 ZSTX DEFB 22,10,5 \ DEFM "FILENAME: ^ DEFB #FF `SBF DEFB 0,15,10,9,15 dMSG5 DEFB 22,12,5 e DEFM "Load? f DEFB 22,10,3 g DEFM "Found file: h DEFB #FF uBFC DEFB 0,12,1,2,10 ~ERT DEFB 22,13,3  DEFM "Drive Fault NIL DEFB #FF VAL DEFB 22,0,10  DEFM "Tone:  DEFB 22,7,9  DEFM "Noise:  DEFB 22,13,7  DEFM "Envelope:  DEFB #FF GWX DEFB 1,1,21,3,0 '#Endc EQU $ (#;Resident Sound Routnes -# ORG 64700 2#SetIntVec 7# DI <# LD A,#18 A# LD (#FFFF),A F# LD A,#C3 K# LD (65524),A P# LD HL,NewInt U# LD (65525),HL Z# LD HL,#FE00 _# LD DE,#FE01 d# LD BC,#100 i# LD (HL),#FF n# LD A,H s# LDIR x# LD I,A }# IM 2 # EI # RET #TP LD BC,#FFFD # OUT (C),D # LD B,#BF # OUT (C),E # RET #NewInt PUSH AF # PUSH HL # PUSH DE # PUSH BC # LD A,(SLEN) # AND A # CALL NZ,PLAY # POP BC # POP DE # POP HL # POP AF # JP #38 #INITS DI # LD A,(HL) # LD (SLEN),A # INC HL # LD E,(HL) # LD D,7 # CALL TP $ INC HL $ LD (SPOS),HL $ EI $ RET $PLAY LD HL,(SPOS) $ LD E,(HL) "$ LD D,0 '$ CALL TP ,$ INC HL 1$ INC D 6$ LD E,(HL) ;$ CALL TP @$ INC HL E$ LD D,6 J$ LD E,(HL) O$ CALL TP T$ INC HL Y$ LD D,8 ^$ LD E,(HL) c$ CALL TP h$ INC HL m$ LD (SPOS),HL r$ LD HL,SLEN w$ DEC (HL) |$ RET NZ $ LD DE,0 $ CALL TP $ INC D $ CALL TP $ LD D,#08 $ JP TP $SPOS DEFW 0 $SLEN NOP ' ENT $ |||i