org #8000 vdp1: equ #be ;mtx #1 - cv=$be - msx=$98 vdp2: equ #bf ;mtx #2 - cv=$bf - msx=$99 sound: equ #f0 ;mtx #6 - cv=#f0 - msx=n/a ;ALL 64 OF THE ALLOPHONES PA1: equ 0 PA2: equ 1 PA3: equ 2 PA4: equ 3 PA5: equ 4 OY: equ 5 AY: equ 6 EH: equ 7 KK3: equ 8 PP: equ 9 JH: equ 10 NN1: equ 11 IH: equ 12 TT2: equ 13 RR1: equ 14 AX: equ 15 MM: equ 16 TT1: equ 17 DH1: equ 18 IY: equ 19 EY: equ 20 DD1: equ 21 UW1: equ 22 AO: equ 23 AA: equ 24 YY2: equ 25 AE: equ 26 HH1: equ 27 BB1: equ 28 TH: equ 29 UH: equ 30 UW2: equ 31 AW: equ 32 DD2: equ 33 GG3: equ 34 VV: equ 35 GG1: equ 36 SH: equ 37 ZH: equ 38 RR2: equ 39 FF: equ 40 KK2: equ 41 KK1: equ 42 ZZ: equ 43 NG: equ 44 LL: equ 45 WW: equ 46 XR: equ 47 WH: equ 48 YY1: equ 49 CH: equ 50 ER1: equ 51 ER2: equ 52 OW: equ 53 DH2: equ 54 SS: equ 55 NN2: equ 56 HH2: equ 57 OR: equ 58 AR: equ 59 YR: equ 60 GG2: equ 61 EL: equ 62 BB2: equ 63 org #8000 db #aa,#55 ;55aa show title aa55 jmp to START db #00,#00 ;vector 1 (always 0000 or ram 7xxx) db #00,#00 ;vector 2 (always 0000 or ram 7xxx) db #00,#00 ;vector 3 (always 0000 or ram 7xxx) db #00,#00 ;vector 4 (always 0000 or ram 7xxx) dw START ;vectorcode db #C9,#00,#00 ;jmp rst $08 db #C9,#00,#00 ;jmp rst $10 db #C9,#00,#00 ;jmp rst $18 db #c9,#00,#00 ;jmp rst $20 db #c9,#00,#00 ;jmp rst $28 db #c9,#00,#00 ;jmp rst $30 db #c9,#00,#00 ;jmp rst $38 db #c9,000,000 ;jmp nmi (vert.blank int vdp) db "TEST CV",#2F ;titlescreen (if aa55) db "LINE 2",#2F ;Line 2 db "2013",#2F ;display year :) ;************************************************************** START: di ld sp,#73b9 ;SET STACK POINTER call #1FD6 ;TURN OFF SOUND TRYPORT: ld d,7 ; ld e,%11000000 ;MAKE PSG OUTPUT call outer1 ;send it to PSG AGAIN2: ld d,14 ; ld e,0 ;PORT ALL 0's call outer1 ;send it to PSG ld bc,5000 call PAUSE ;wait a second LETSTALK: ;HELLO ;HH EH LL AX OW ld d,14 ld e,27 ;HH1 call SAYIT ld e,7 ;EH call SAYIT ld e,45 ;LL call SAYIT ld e,15 ;AX call SAYIT ld e,53 ;OW call SAYIT ld e,#0 ;STARTED ;SS SS PA3 TT2 AR PA3 TT2 IH PA1 DD2 ld d,14 ld e,55 ;SS call SAYIT ld e,55 ;ss call SAYIT ld e,2 ;PA3 call SAYIT ld e,13 ;TT2 call SAYIT ld e,59 ;AR call SAYIT ld e,2 ;PA3 call SAYIT ld e,13 ;TT2 call SAYIT ld e,12 ;IH call SAYIT ld e,0 call SAYIT ld e,33 ;DD2 call SAYIT ld e,0 call SAYIT ;AND ;AE NG DD1 ld d,14 ld e,26 ;AE call SAYIT ld e,44 ;EH call SAYIT ld e,21 ;DD1 call SAYIT ld e,0 ;PA1 call SAYIT ;READY ;RR1 EH EH PA1 DD2 IY ld d,14 ld e,14 ;RR1 call SAYIT ld e,7 ;EH call SAYIT ld e,7 ;EH call SAYIT ld e,0 ;PA1 call SAYIT ld e,33 ;DD2 call SAYIT ld e,19 ;IY call SAYIT ld e,0 call SAYIT ld bc,20000 call PAUSE ;jp LETSTALK ;LETS SAY THE WOW PHRASE ld hl,WOW1 MORE: ld a,(hl) ld d,14 ld e,a call SAYIT ld a,e cp #ff jp z,ENDWOW inc hl jp MORE ENDWOW: ld bc,20000 call PAUSE jp LETSTALK SAYIT: ld a,#c0 add a,e ld e,a call outer1 ld a,e sub #c0 ld e,a call outer1 ld bc,1000 ;INSTEAD OF THIS PAUSE call PAUSE ;EVENTUALLY I WILL LOOK AT ret ;A BIT FROM THE AY-3-8912 HOOKED ;TO THE LRQ LINE OF THE SPO256 ;AND WAIT FOR IT TO GO LOW :THIS INDICATES IT IS READY FOR ;THE NEXT ALLOPHONE. NOW I JUST ;PAUSE TILL I THINK IT SHOULD BE DONE :WITH THE LAST SPOKEN ALLOPHONE outer1: ld a,d out (#50),a ; send specified value ld a,e out (#51),a ; send specified value ret ;****************************************************************** ; SUB-RUTINE..: PAUSE ; ; Function....: Pause in 100uS. times value in BC ; ; Input.......: BC reg ; ; Output......: no ; ; call........: NONE ; ; ; ;****************************************************************** PAUSE: push af inc b inc c ; ADJUST THE LOOP PAUSELOOP1: ld a,#13 ; ADJUST THE TIME 13h IS FOR 4 MHZ PAUSELOOP2: dec a ; DEC COUNTER. 4 T-states = 1 uS. jp nz,PAUSELOOP2 ; JUMP TO PAUSELOOP2 IF A <> 0. dec c ; DEC COUNTER jp nz,PAUSELOOP1 ; JUMP TO PAUSELOOP1 IF C <> 0. djnz PAUSELOOP1 ; JUMP TO PAUSELOOP1 IF B <> 0. PAUSESLUT: pop af ret STOP: jp STOP ;LIBRARY OF WORDS ;EACH WORD TERMINATED WITH A #FF ;AND HOLDS A MAX OF 10 ;ALLOPHONES LIBRARY: db ZZ,YR,OW,00,00,00,00,00,00,#ff ;ZERO db WW,AX,NN1,00,00,00,00,00,00,#ff ;ONE WON db TT2,UW2,00,00,00,00,00,00,00,#ff;TWO,TOO,TO db TH,RR1,IY,00,00,00,00,00,00,#ff ;THREE db FF,FF,OR,00,00,00,00,00,00,#ff ;FOUR,FOR,FORE db FF,FF,AY,VV,00,00,00,00,00,#ff ;FIVE db SS,SS,EH,EH,VV,IH,00,00,00,#ff ;SIX db SS,SS,EH,EH,VV,IH,NN1,00,00,#ff ;SEVEN db EY,PA3,TT2,00,00,00,00,00,00,#ff;EIGHT,ATE db NN1,AA,AY,NN1,00,00,00,00,00,#ff;NINE db TT2,EH,EH,NN1,00,00,00,00,00,#ff;TEN db AX,LL,AR,MM,00,00,00,00,00,#ff ;ALARM ;WIZARD OF WAR WORDS ;You've just been fried by the Wizard of Wor! Ha ha ha ha WOW1: db YY2,UW2,UW2,VV,00,JH,AX,SS,SS,TT1,00 ;YOU'VE JUST db BB2,EH,EH,NN1,00,FF,FF,RR1,AY,DD1,PA3 ;BEEN FRIED db BB1,AY,PA3,PA3,TH,AE,AA,PA3 ;BY THE db WW,IY,SS,SS,IH,IH,RR2,DD2,PA3,AW,VV,PA3 ;WIZARD OF db WW,AO,RR2,PA3,PA3,PA3,PA3 ;wor LAUGH: db TT2,AO,HH2,HH2,AO,AO,PA4,TT2,AO,HH2,HH2 db AO,AO,PA4,TT2,AO,HH2,HH2,AO,AO,PA4,#ff ;LAUGH