TITLE * SIMULATOR AY-ZX .Z80 ASEG ORG 2000H ; ; ; SEM SE SPADNE MISTO PROVEDENI INSTRUKCE OUT (c),A ; PRICEMZ BC=0BFFDH DATA ; BC=0FFFDH STATUS START: JR SETINT VECTIN: DW 0 ;VEKTOR PRERUSENI MUSIC: LD C,A LD A,B CP 0FFH JR NZ,DATA PUSH HL PUSH BC AND 0FH LD C,A LD B,0 LD HL,C31F1 ADD HL,BC LD (MODIF),HL ; ULOZI STATUS POP BC POP HL RET SETINT: PUSH HL PUSH BC DI IM 2 LD,HL,VECTIN LD A,H LD I,A LD A,L OUT (0FCH),A LD HL,PIOD LD BC,04FCH OTIR LD HL,MUSIC ;NASTAV RESTART LD(031H),HL POP BC POP HL EI RETI MODIF EQU $+1 DATA: LD (C31F1),A ;MODIFIKUJE TUHLE ADRESU NASTAVI STATUS LD (W320D),SP ;ULOZ SP LD SP,C322D ;NASTAV SVUJ SP LD SP,C322D ;NASTAV SVUJ SP - TAK TADY NEVIM JESTLI TO OPRAVDU ;TAK MA BYT NA PAPIRE TO TAM MAM, ALE JE TO BLBOST PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX ;ULOZ CO JDE LD BC,0AH LD DE,C3202 LD HL,C3201 ;SMAZ POLE PRO PSG LD (HL),B LDIR LD B,3 ;JSOU 3 KANALY LD DE,C31F1 ;ADRESA FREKVENCE AY LD HL,C31F8 ;ADRESA MIX LD IX,C3201 ;ADRESA FREKVENCE SN LD C,(HL) ;DO C STAV MIXU ; SMYCKA INICIALIZACE 3 KANALU L304A: INC HL ;HLASITOST BIT 3,C ;SUM A? JR NZ,L3057 ;NE LD A,(HL) ;HLASITOST SUMU? AND 0FH JR Z,L3057 ;NULOVA LD (V320B),A ;JINAK ULOZ HLASITOST SUMU L3057: RR C JP C,L30DD ;DALSI POKUD KANAL NEZNI LD A,(HL) ;HLASITOST KANALU AND 0FH ;0-15 JP Z,L30DD ;VYPNUTY => DALSI INC DE LD A,(DE) ;VYSSI BAJT FREKVENCE KANALU DEC DE ;ZPET NA NIZSI AND 0FH ;ZAJIMA NAS POUZE SPODNI PULBAJT JR NZ,L306E ;JE NENULOVY LD A,(DE) ;SPODNI PULBAJT CP 10H JR C,L30DD ;SKOC POKUD JE FREKVENCE < XXXX0000 0001000 L306E: INC DE LD A,(DE) ;PRECTI VYSSI BAJT FREKVENCE DEC DE ;ZPET NA NIZSI AND 0CH JR Z,L309D LD A,(V320B) ;PUVODNI HLASITOST SUMU OR A JR NZ,L309D ;SKOC KDYZ ZNI INC DE ;VYSSI A LD A,(DE) DEC DE AND 0FH LD (V3208),A ;ULOZ VYSSI C LD A,(DE) ;NIZSI A RRCA RRCA RRCA RRCA AND 0FH LD (V3207),A LD A,(HL) ;HLASITOST SUB 3 INC A JR C,L30DD LD (V320B),A ;HLASITOST SUMU LD A,0E3H LD (V320A),A ;FREKVENCE SUMU JR L30DD ;DALSI KANAL L309D: PUSH BC LD A,(DE) ;NIZSI BAJT A KANALU LD C,A INC DE ;VYSSI LD A,(DE) DEC DE ;ZPET NA NIZSI AND 0FH ;ZAJIMAJI NAS POUZE SPODNI 4 BITY LD B,A LD A,(HL) ;HLASITOST LD (IX+2),A L30AA: LD A,0CH AND B JR Z,L30C7 LD A,(IX+2) ;MIX SUB 4 INC A LD (IX+2),A JR NC,L30C1 LD (IX+2),0 POP BC JR L30DD ;DALSI KANAL L30C1: SRL B RR C JR L30AA L30C7: LD A,C ANF 0FH LD (IX+0),A INC IX XOR C OR B RRCA RRCA RRCA RRCA LD (IX+0),A INC IX INC IX POP BC L30DD: INC DE INC DE ;VYSSI BAJT FREKVENCE DALSIHO KANALU DEC B ;DALSI KANAL? JP NZ,L304A ;ANO ZNOVU ; TOTO PROBEHNE PO INICIALIZACI VSECH 3 KANALU LD A,(V320A) XOR 0E3H JR Z,L30FA LD A,(V31F7) AND 1FH LD D,0 LD E,A LD HL,C3131 ADD HL,DE LD A,(HL) LD (V320A),A L30FA: LD BC,0380H LD HL,C3201 L3100: LD A,C OR (HL),A INC HL INC HL LD A,(HL) CPL AND 0FH LD D,A LD A,C ADD A,10H OR D LD (HL),A INC HL LD A,C ADD A,20H LD C,A DJNZ,L3100 LD HL,V320B LD A,(HL) AND 0FH CPL LD (HL),A LD BC,0BF2H LD HL,C3201 OTIR ;SET PSG SHARP POP IX POP HL POP DE POP BC POP AF LD SP,(C3201) RET ;VEN DO SPECTRUM PROGRAMU C3131: DB 0E4H,0E4H,0E4H DB 0E4H,0E4H,0E4H DB 0E4H,0E4H,0E4H DB 0E4H,0E4H,0E4H DB 0E4H,0E4H,0E4H DB 0E4H,0E5H,0E5H DB 0E5H,0E5H,0E5H DB 0E4H,0E5H,0E5H DB 0E6H,0E6H,0E6H,0E6H DB 0E6H,0E6H,0E6H,0E6H C31F1: DB 0 ;FREKVENCE A NIZSI 00000000 DB 0 ;FREKVENCE A VYSSI XXXX0000 DB 0 ;FREKVENCE B DB 0 DB 0 ;FREKVENCE C DB 0 V31F7: DB 0 ;FREKVENCE SUMU 0-0FH C31F8: DB 0 ;MIX DB 0 ;HLASITOST A 0-0FH DB 0 ;HLASITOST B DB 0 ;HLASITOST C DB 0 ;MODUL KRIVKA JEMNE DB 0 ;MODUL KRIVKA HRUBE DB 0 ;TVAR KRIVKY DB 0 ;I/O PORT DB 0 ;I/O PORT ; DATA PRO PSG C3201: DB 0 C3202: DB 0 DB 0 DB 0 DB 0 DB 0 V3207: DB 0 V3208: DB 0 DB 0 V320A: DB 0 V320B: DB 0 ;HLASITOST SUMU W320D: DS 20H ;MISTO PRO ULOZENI SP C322D: DB 0 ;PRACOVNI SP PIOD: DB 0CFH,03FH,0B7H,0DFH ; END