ORG 256 ;A program kezdete A verem kijelolese LD SP,STACK ;A "FIXBIAS" EXOS ;valtozo 0-ra allitasa LD B,1 LD C,28 LD D,0 EXOS 16 ;Az 0FAH szegmens felszabaditasa... LD C,0FAH EXOS 25 ;... es belapozasa a 2-es lapra ;Ugyanez az 0FCH szegmenssel LD A,0FAH OUT (0B2H),A LD C,0FCH EXOS 25 LD A,0FCH OUT (0B1H),A ;A SPECTRUM kepernyo ;letrehozasa LD A,192 ;A kepernyo 192 sorbol ;all, az "A" regiszter a ;ciklusvaltozo LD DE,4000H ;DE az LPT aktualis ;blokkjara mutat EXX ;Uj valtozok bevezetese: ;DE az aktualis kepernyo cimre, ;HL a blokk LD1 regiszterere ;mutat. (Attributum cim) LD DE,4000H LD HL,4004H LD BC,13 ;Az "A" regiszter elmentese ;(ciklusvaltozo) L1 EX AF,AF' EXX ;Egy LPT blokk letrehozasa ;Attributum uzemmod, 32 byte ;szeles ablak LD HL,LINE LD BC,16 LDIR EXX ;Az LD1 regiszter beallitasa ;a sor attributum cimere ;amelyet a bitterkep cimebol ;szamit ki. LD (HL),E INC HL LD A,D RRA RRA RRA AND 3 OR 58H ;Az attributum memoria az ;5800H-5AFFH ;cimtartomanyban helyezkedik el LD (HL),A INC HL ;Az LD2 (bitterkep cime) regiszter ;beallitasa az aktualis cimre LD (HL),E INC HL LD (HL),D ;A kovetkezo LPB LD1 ;regiszterenek cime HL-ben ADD HL,BC ;A kovetkezo bitterkep sor ;cimenek szamitasa INC D LD A,D AND 7 JR NZ,L2 LD A,E ADD A,32 LD E,A CCF SBC A,A AND 0F8H ADD A,D LD D,A ;A ciklusvaltozo visszatoltese L2 EX AF,AF' ;es csokkentese DEC A JR NZ,L1 ;Kesz van mind a 192 sor, ;mar csak a szinkronozas ;van hatra EXX LD HL,SYNC LD BC,HOSSZ LDIR ;Az igy elokeszitett LPT ;cimet a NICK chip tudomasara ;kell hozni. XOR A OUT (82H),A LD A,192 OUT (83H),A ;Az LPT az 0FCH szegmens ;aljan van, igy a NICK altal ;latott cim a 0000 LD C,0FDH EXOS 25 LD C,0FBH EXOS 25 LD A,0FBH OUT (0B3H),A LD A,0FDH OUT (0B1H),A ;Ket szegmens felszabaditasa ;es belapozasa a 2-es es 3-as ;lapokra. Az 0FDH szegmensen van ;a kepernyomemoria. ;Most marvan egy SPECTRUM ;kepernyonk, egy SPECTRUM-hoz ;hasonlo memoriaterkep. ;Mar csak be kell tolteni a ;programot, es elinditani. LD DE,NAME1 LD A,1 EXOS 1 ;A NAME1 cimen lerakott nevu ;file szamara egy csatorna ;megnyitasa LD DE,16384 LD BC,6912 LD A,1 EXOS 6 ;Blokk beolvasasa a megadott ;cimre. ADDR1 helyere az elso ;blokk betoltesi cimet, BYTE1 ;helyere pedig a modul hosszat ;kellbeirni. Ez altalaban egy ;SCREEN szokott lenni, amelynek ;betoltesi cime 16384, hossza 6912 ;byte. LD A,1 EXOS 3 ;A csatornalezarasa LD A,1 LD DE,NAME2 EXOS 1 ;A masodik modul betoltese ;hasonloan ;Ez altalaban a kod resz LD DE,6000H LD BC,0A000H LD A,1 EXOS 6 LD A,1 EXOS 3 ;A hang emulalasahoz szukseges ;hangero ertekek beallitasa ;Errol kesobb lesz szo LD A,20H OUT (0ABH),A OUT (0ACH),A ;Ha a program betoltodott, nincs ;mas teendo, csak elinditani ;DEHOGY IS NINCS! ;PL. AZ IT.... LD HL,PORTFE ;ZOZO PORTFE RUTIN HIVASA RST 28-AL LD A,195 ;JP LD (0028H),A LD (0029H),HL ;PORTFE CIME DI LD HL,ENABLE LD A,195 LD (0038h),A LD (0039h),HL ;A SPECTRUM rendszerben ;megszokott 50Hz-es megszakitast ;VIDEO megszakitassal allitjuk ;elo. A VIDEO megszakitas ;engedelyezese a DAVE chipben LD A,48 OUT (0B4H),A IM 1 LD SP,0BBB7H JP 8000H ;Programinditas ENABLE PUSH AF ;Ez lenne a potrutin az IT rutinhoz LD A,30H OUT (0B4H),A POP AF JP 0BBBEH PORTFE LD (HLP),HL POP HL PUSH AF LD A,(HL) LD (AR),A POP AF INC HL PUSH HL PUSH AF LD A,(AR) CP 0D3H JR NZ,NEMOUT POP AF PUSH AF LD L,A XOR A BIT 4,L JR Z,NEM1 LD A,3FH NEM1 OUT (0A8H),A OUT (0ACH),A XOR A SRL L RLA SRL L RLA SRL L RLA PUSH IX LD IX,TABL LD (CIM+2),A CIM LD A,(IX+0) OUT (81H),A POP IX POP AF LD HL,(HLP) RET NEMOUT CP 0EDH JR NZ,NEMED CALL BIL POP HL LD HL,(HLP) RET NEMED POP AF PUSH BC LD B,A CALL BIL POP BC LD HL,(HLP) RET KEY EX (SP),HL LD A,(HL) INC HL EX (SP),HL OUT (0B5H),A IN A,(0B5H) RET ALLKEY PUSH BC LD BC,0AFFH A1 LD A,B DEC A OUT (0B5H),A IN A,(0B5H) AND C LD C,A DJNZ A1 POP BC RET JOY PUSH BC LD B,0 CALL JOY1 LD A,C LD (JOY2+1),A CALL JOY1 LD A,C JOY2 OR 0 POP BC RET JOY1 LD C,8 JOY3 LD A,B INC B OUT (0B5H),A IN A,(0B6H) RRA CCF RL C JR NC,JOY3 RET ISR DI PUSH AF PUSH BC LD A,48 OUT (0B4H),A ;LD A,4 ;OUT (0B5H),A ;IN A,(0B5H) ;LD BC,(MUS) ;BIT 0,A ;JR NZ,NEMF4 ;LD A,12 ;OUT (191),A ;JR NEMF2 ;NEMF4 BIT 3,A ;JR NZ,NEMF6 ;LD A,14 ;OUT (191),A ;JR NEMF2 ;NEMF6 BIT 7,A ;JR NZ,NEMF1 ;LD C,0 ;NEMF1 BIT 6,A ;JR NZ,NEMF2 ;LD C,1 ;NEMF2 LD (MUS),BC ;LD A,C ;OR A ;CALL Z,MUSIK ;CALL NZ,NOMUSIK POP BC POP AF RET CIMECSKE JP 0E274H NOMUSIK LD A,1FH OUT (0A7H),A RET MUSIK PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY LD (SPHELY),SP LD SP,3FFFH LD A,(0FCH) OUT (0B3H),A CALL 0CC83H LD A,(0FBH) OUT (0B3H),A LD SP,(SPHELY) POP IY POP IX POP HL POP DE POP BC POP AF RET MUS DW 0 SPHELY DW 0 BIL LD A,255 PUSH DE BIT 0,B CALL Z,SOR0 BIT 1,B CALL Z,SOR1 BIT 2,B CALL Z,SOR2 BIT 3,B CALL Z,SOR3 BIT 4,B CALL Z,SOR4 BIT 5,B CALL Z,SOR5 BIT 6,B CALL Z,SOR6 BIT 7,B CALL Z,SOR7 OR 0E0H POP DE RET SOR0 PUSH AF XOR A OUT (0B5H),A IN A,(0B5H) ;LS Z X V C B \ N ;* * * * * * * * RLCA ;Z X V C B \ N LS C=LS RLCA ;X V C B \ N LS Z C=Z RLCA ;V C B \ N LS Z X C=X RLCA ;C B \ N LS Z X V C=V RL D ;* * * * * * * V C=* RLCA ;B \ N LS Z X V C C=C RL D ;* * * * * * V C C=* RRCA ;C B \ N LS Z X V C=C RRCA ;V C B \ N LS Z X C=V RRCA ;X V C B \ N LS Z C=X RL D ;* * * * * V C X C=* RRCA ;Z X V C B \ N LS C=Z RL D ;* * * * V C X Z C=* RRCA ;LS Z X V C B \ N C=LS RL D ;* * * V C X Z CS C=* POP AF AND D RET SOR1 PUSH AF LD A,1 OUT (0B5H),A IN A,(0B5H) ;CT A S F D G LC H ;* * * * * * * * RRCA ;H CT A S F D G LC C=H RRCA ;LC H CT A S F D G C=LC RRCA ;G LC H CT A S F D C=G RL D ;* * * * * * * G C=* RRCA ;D G LC H CT A S F C=D RL D ;* * * * * * G D C=* RRC D ;D * * * * * * G C=D RRCA ;F D G LC H CT A S C=F RL D ;* * * * * * G F C=D RL D ;* * * * * G F D C=* RRCA ;S F D G LC H CT A C=S RL D ;* * * * G F D S C=* RRCA ;A S F D G LC H CT C=A RL D ;* * * G F D S A C=* POP AF AND D RET SOR2 PUSH AF LD A,2 OUT (0B5H),A IN A,(0B5H) ;TB W E T R Y Q U ;* * * * * * * * RRCA ;U TB W E T R Y Q C=U LD E,A RRCA ;Q U TB W E T R Y C=Q RRCA ;Y Q U TB W E T R C=Y RRCA ;T Y Q U TB W E T C=R RR D ;R * * * * * * * C=* RRCA ;T R Y Q U TB W E C=T RL D ;* * * * * * * T C=R RL D ;* * * * * * T R C=* RRCA ;E T R Y Q U TB W C=E RL D ;* * * * * T R E C=* RRCA ;W E T R Y Q U TB C=W RL D ;* * * * T R E W C=* LD A,E ;U TB W E T R Y Q RRCA ;Q U TB W E T R Y C=Q RL D ;* * * T R E W Q C=* POP AF AND D RET SOR3 PUSH AF LD A,3 OUT (0B5H),A IN A,(0B5H) ;EC 2 3 5 4 6 1 7 ;* * * * * * * * RRCA ;7 EC 2 3 5 4 6 1 C=7 LD E,A RRCA ;1 7 EC 2 3 5 4 6 C=1 RRCA ;6 1 7 EC 2 3 5 4 C=6 RRCA ;4 6 1 7 EC 2 3 5 C=4 RR D ;4 * * * * * * * C=* RRCA ;5 4 6 1 7 EC 2 3 C=5 RL D ;* * * * * * * 5 C=4 RL D ;* * * * * * 5 4 C=* RRCA ;3 5 4 6 1 7 EC 2 C=3 RL D ;* * * * * 5 4 3 C=* RRCA ;2 3 5 4 6 1 7 EC C=2 RL D ;* * * * 5 4 3 2 C=* LD A,E ;7 EC 2 3 5 4 6 1 RRCA ;1 7 EC 2 3 5 4 6 C=1 RL D ;* * * 5 4 3 2 1 C=* POP AF AND D RET SOR4 PUSH AF LD A,3 OUT (0B5H),A IN A,(0B5H) ;EC 2 3 5 4 6 1 7 ;* * * * * * * * RRCA ;7 EC 2 3 5 4 6 1 C=7 RR D ;7 * * * * * * * C=* RRCA ;1 7 EC 2 3 5 4 6 C=1 RRCA ;6 1 7 EC 2 3 5 4 C=6 RL D ;* * * * * * * 6 C=7 RL D ;* * * * * * 6 7 C=* LD A,5 OUT (0B5H),A IN A,(0B5H) ;* ER ^ 0 - 9 * 8 ;* * * * * * 6 7 RRCA ;8 * ER ^ 0 - 9 * C=8 RL D ;* * * * * 6 7 8 C=* RRCA ;* 8 * ER ^ 0 - 9 C=* RRCA ;9 * 8 * ER ^ 0 - C=9 RL D ;* * * * 6 7 8 9 C=* RRCA ;- 9 * 8 * ER ^ 0 C=- RRCA ;0 - 9 * 8 * ER ^ C=0 RL D ;* * * 6 7 8 9 0 C=* LD A,7 OUT (0B5H),A IN A,(0B5H) BIT 5,A JR NZ,NEMBAL RES 4,D NEMBAL BIT 2,A JR NZ,NEMJOBB RES 3,D NEMJOBB BIT 1,A JR NZ,NEMLE RES 2,D NEMLE BIT 3,A JR NZ,NEMFEL RES 1,D NEMFEL BIT 7,A JR NZ,NEMALT RES 0,D NEMALT POP AF AND D RET SOR5 PUSH AF LD A,2 OUT (0B5H),A IN A,(0B5H) ;TB W E T R Y Q U ;* * * * * * * * RRCA ;U TB W E T R Y Q C=U RR D ;U * * * * * * * C=* RRCA ;Q U TB W E T R Y C=Q RRCA ;Y Q U TB W E T R C=Y RL D ;* * * * * * * Y C=U RL D ;* * * * * * Y U C=* LD A,9 OUT (0B5H),A IN A,(0B5H) ;* * [ P @ O * I ;* * * * * * Y U RRCA ;I * * [ P @ O * C=I RL D ;* * * * * Y U I C=* RRCA ;* I * * [ P @ O C=* RRCA ;O * I * * [ P @ C=O RL D ;* * * * Y U I O C=* RRCA ;@ O * I * * [ P C=@ RRCA ;P @ O * I * * [ C=P RL D ;* * * Y U I O P C=* POP AF AND D RET SOR6 PUSH AF LD A,1 OUT (0B5H),A IN A,(0B5H) ;CT A S F D G LC H ;* * * * * * * * RRCA ;H CT A S F D G LC C=H RL D ;* * * * * * * H C=* LD A,6 OUT (0B5H),A IN A,(0B5H) ;* ] : L ; K * J ;* * * * * * * H RRCA ;J * ] : L ; K * C=J RL D ;* * * * * * H J C=* RRCA ;* J * ] : L ; K C=* RRCA ;K * J * ] : L ; C=K RL D ;* * * * * H J K C=* RRCA ;; K * J * ] : L C=; RRCA ;L ; K * J * ] : C=L RL D ;* * * * H J K L C=* LD A,7 OUT (0B5H),A IN A,(0B5H) ;AL EN LF HD UP RG ST ;* * * * H J K L RLCA ;EN LF HD UP RG ST AL C=AL RLCA ;LF HD UP RG ST AL EN C=EN RL D ;* * * H J K L EN C=* POP AF AND D RET SOR7 PUSH AF XOR A OUT (0B5H),A IN A,(0B5H) ;LS Z X V C B \ N ;* * * * * * * * RRCA ;N LS Z X V C B \ C=N RR D ;N * * * * * * * C=* RRCA ;\ N LS Z X V C B C=\ RRCA ;B \ N LS Z X V C C=B RL D ;* * * * * * * B C=N RL D ;* * * * * * B N C=* LD A,8 OUT (0B5H),A IN A,(0B5H) ;IN SP RS . / , DL M ;* * * * * * B N RRCA ;M IN SP RS . / , DL C=M RL D ;* * * * * B N M C=* RRCA ;DL M IN SP RS . / , C=DL RRCA ;, DL M IN SP RS . / C=, RRCA ;/ , DL M IN SP RS . C=/ RRCA ;. / , DL M IN SP RS C=. RRCA ;RS . / , DL M IN SP C=RS RL D ;* * * * B N M SS C=* RRCA ;SP RS . / , DL M IN C=SP RL D ;* * * B N M SS SP POP AF AND D RET HLP DW 0 AR DB 0 LINE2 DB 255,14H,15,2FH,0,0,0,0 TABL DB 0,36,121,88,130,182,219,63 NAME1 DEFB NAME2-$-1 DEFM "BCS.SCR" ;A blokkok nevei ;A DEFM utasitas utan az ;idezojelek koze kell irni a blokk ;nevet (Nem kotelezo betartani a ;peldanak szant neveket !) NAME2 DEFB LINE-$-1 DEFM "BCS.PRG" ;A kepernyo adatok LINE DEFB 255,14H,15,2FH,0,0,0,0 DEFB 0,32,72,104,144,176,216,248 ;Egy soros attributum uzemmodu ;32 byte szeles LPB SYNC DEFB 0F5H,02H,0,0,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;11 ures sor a kep alatt DEFB 247,8,11,73H,0B8H,0FEH, DEFB 0E9H,1,0,216,216,0,0,0,0,0 ;Egy normal ENTERPRISE ;statuszsor hogy toltes kozben ;lehessen latnia "SEARCHING" ;stb. uzeneteket DEFB 217,12H,63,0,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;39 ures sor DEFB 253,16,63,0,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;3 sor, a szinkronizacio ;kikapcsolva DEFB 252,16,6,63,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;4 sor, a szinkronizacio ;bekapcsolva DEFB 255,90H,63,32,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;1 sor, a szinkronizacio a sor ;felenel kikapcsol, a NICK chip ;ennel a sornal ad megszakitast DEFB 252,12H,6,63,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;4 ures sor DEFB 207,13H,63,0,0,0,0,0 DEFB 0,0,0,0,0,0,0,0 ;49 sor, ez hatarozza meg a felso ;margo nagysagat, a NICK itt ;ugrik vissza az LPT elejere, mivel ;a RELOAD bit (a 0-as bit) be van ;allitva HOSSZ EQU $-SYNC ;A szinkron byte-ok szama STACK EQU $+200 ;A verem 200 byte nagysagu END ;A program vege