;------------------------------------------------------------------------------------------------------------------------------ ; SOURCE FILE FROM UNKNOWN REALITY DEMO BY NOP (1994) ;------------------------------------------------------------------------------------------------------------------------------ ; save "SCOOP.WB2 PORT: EQU 20 ; 26 = sample-input 20 = ADPCM-decodering ORG &HB300 ; main-PROGRAM ---- LD A,E ; bewaar tekst-buffer-nummer LD (TEXTNR),A OR A JP NZ,START LD A,0 LD (&HFFE8),A LD A,128 OUT (&H99),A LD A,9+128 OUT (&H99),A RET START: IN A,(&HFD) PUSH AF LD A,(&HF342) LD H,&H40 CALL &H24 LD A,2 LD (&HFFE8),A LD A,128+2 OUT (&H99),A LD A,9+128 OUT (&H99),A LD A,7 CALL &H5F ; CALL MODULE CALL CLPAL CALL INIT DI CALL RUN XOR A OUT (&H99),A LD A,15+128 OUT (&H99),A LD A,0 CALL &H5F POP AF OUT (&HFD),A LD A,(&HFCC1) LD H,&H40 CALL &H24 RET STRX: EQU 64 INIT: LD A,(TEXTNR) LD B,A LD HL,TEXT$ ZOEK: PUSH BC LD BC,-1 LD A,0 CPIR POP BC DJNZ ZOEK LD (TXTADR),HL LD (STRTXT),HL LD A,0 LD (ESC),A LD (VDP24),A LD A,224 LD (DY),A LD HL,STRX LD (DX),HL LD A,&H0E ; high-speed + sprites off OUT (&H99),A LD A,8+128 OUT (&H99),A LD A,128+2 ; 50 Hz OUT (&H99),A LD A,9+128 OUT (&H99),A LD A,&B00000111 ; beeld links OUT (&H99),A LD A,18+128 OUT (&H99),A EI HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,WISS0$ LD BC,&H0F9B OTIR EI HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,WISS1$ LD BC,&H0F9B OTIR EI HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,WISS2$ LD BC,&H0F9B OTIR CALL CE_WT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,WISS3$ LD BC,&H0F9B OTIR EI HALT HALT HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,SAMP1$ LD BC,&H0F9B OTIR EI HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,SAMP2$ LD BC,&H0F9B OTIR EI HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,SAMP3$ LD BC,&H0F9B OTIR EI HALT HALT LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,SAMP4$ LD BC,&H0F9B OTIR EI HALT HALT LD HL,52 LD B,4 INIT_2: PUSH BC PUSH HL LD (BCKGR$+4),HL LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,BCKGR$ LD BC,&H0F9B OTIR EI HALT POP HL LD BC,52 ADD HL,BC POP BC DJNZ INIT_2 LD (BCKGR$+4),HL LD A,26 LD (BCKGR$+8),A LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,BCKGR$ LD BC,&H0F9B OTIR EI HALT LD A,52 LD (BCKGR$+8),A LD HL,0 LD B,8 INIT_3: PUSH BC PUSH HL LD (BCKG2$+6),HL LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,BCKG2$ LD BC,&H0F9B OTIR EI HALT HALT POP HL LD BC,32 ADD HL,BC POP BC DJNZ INIT_3 LD A,0 LD (FIRSTL),A ; eerst beeldregel voor effect LD A,212 LD (LASTL),A ; laatste beeldregel LD A,0 OUT (&H99),A LD A,23+128 OUT (&H99),A ; VDP(24)=0, normaal scherm LD A,14 OUT (&H99),A LD A,8+128 OUT (&H99),A ; Sprites off EI HALT CALL SETCC RET TEXT$: DM 0,"Hi there,",13 DM "isn't this a",13 DM "nice text",13 DM "scroller?",13 DM 13 DM "We think so!",13 DM 13 DM "On the right",13 DM "side you can",13 DM "see a scope at",13 DM "a displayspeed",13 DM "of: 12.8 kHz",13 DM 13 DM "Allright...",13 DM "let's continue",13 DM "Unknown Reality.",13 DM 13 DM "Ever seen a",13 DM "full screen",13 DM "zoomer?",13 DM 13 DM "Stand by...",13 DM 13 DM "N.O.P. is coming",13 DM "to you....",13 DM 13,13,13,13,13 DM 0,"Yep, we're back",13 DM 13 DM "I am sorry I",13 DM "had to load,",13 DM "but I'm using",13 DM "only 256kB RAM.",13 DM 13 DM "Hopefully you",13 DM "were able to",13 DM "listen to our",13 DM "256kB sample.",13 DM 13 DM "Contact JOBEN",13 DM "for a sample",13 DM "memory",13 DM "expansion if you",13 DM "couldn't.",13 DM 13 DM "Info is in the",13 DM "end scroll.",13 DM 13 DM "Well, it's time",13 DM "for the ultimate",13 DM "watermelon.",13 DM 13 DM "Fasten your",13 DM "seatbelts",13 DM "Here it comes!",13 DM 13,13,13,13,13 DM 0 DM "Whoooow,...",13 DM "that was cool!",13 DM 13 DM "But it was",13 DM "only the",13 DM "beginning.",13 DM 13 DM "Let's speed",13 DM "up VDP-coding",13 DM 13 DM "Watch this....",13 DM 13,13,13,13,13 DM 0 DM "Okay,....",13 DM "Enough of that..",13 DM 13 DM "Let's exit this",13 DM "melon routine and",13 DM "continue with our",13 DM 13 DM "Supersonic",13 DM " and",13 DM " superb",13 DM "BLUE-BLOCKERS",13 DM 13 DM "Stand by....",13 DM 13 DM "We're back right",13 DM "after the melon",13 DM "is gone.",13 DM 13,13,13,13,13 DM 0 DM "There we are",13 DM "again....",13 DM 13 DM "If it took",13 DM "too much time.",13 DM 13 DM " Buy a HD !",13 DM 13 DM 13 DM "Get ready...",13 DM "BLUE-BLOCKERS",13 DM "coming up !",13 DM 13,13,13,13,13 DB 0 DM "Yeah, that was",13 DM "nice, but were",13 DM "was that torsion?",13 DM 13 DM "Just ask for it!",13 DM 13 DM "Let's do it...",13 DM 13,13,13,13,13 DM 0 DM "Finally we",13 DM "arrive at the",13 DM "last part.",13 DM 13 DM "Now get ready",13 DM "for a really",13 DM "amazing routine.",13 DM 13 DM "We called it the",13 DM 13 DM " JELLY WAVES",13 DM 13 DM "5",13 DM "4",13 DM "3",13 DM "2",13 DM "1",13 DM "0,",13 DM "Showtime....",13 DM 13,13,13,13,13 DM 0 DM "You might have",13 DM "seen something",13 DM "like that before.",13 DM 13 DM "That's why we",13 DM "added another",13 DM "nice effect.",13 DM 13 DM "Set mixer to",13 DM "red-green overlay",13 DM "(&h001, &h8D, -34) DM 13 DM "Running...",13 DM 13,13,13,13,13 DM 0 DM "You want more?",13 DM 13 DM "No? Too bad!",13 DM 13 DM "Here is another",13 DM "great routine.",13 DM 13 DM "Eat this....",13 DM 13,13,13,13,13 DM 0 ;---- interrupt routine INTERR: CALL SCROLL CALL PRTNX RET TXTADR: DW 0 STRTXT: DW 0 VDP24: DB 0 TEXTNR: DB 0 ESC: DB 0 SCROLL: LD A,(VDP24) INC A LD (VDP24),A LD A,(SCROL#) INC A AND &B00011111 LD (SCROL#),A CP 28 CALL Z,SCRLW OR A RET NZ LD (PRTNX),A RET SCRLW: PUSH AF LD A,(DY) ADD 32 LD (DY),A LD (WIS$+6),A LD HL,STRX LD (DX),HL LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD HL,WIS$ LD BC,&H0F9B OTIR POP AF RET SCROL#: DB 0 WIS$: DW 0 DB 180,1 DW 0 DB 0,0 DW 288 DW 32 DB 0 DB 0 DB &B11010000 WISS0$: DW 0 DB 178,1 DW 0 DB 178,1 DW 512 DW 0 DB 0 DB 0 DB &B01110000 WISS1$: DW 0 DB 0,0 DW 0 DB 0,0 DW 512 DW 0 DB 0 DB 0 DB &B01110000 WISS2$: DW 0 DB 0,0 DW 0 DB 1,0 DW 512 DW 255 DB 0 DB 0 DB &B11010000 WISS3$: DW 0 DB 0,0 DW 0 DB 180,1 DW 512 DW 32 DB 0 DB 0 DB &B11010000 BCKGR$: DW 460 DB 147,1 DW 0 DB 180,1 DW 52 DW 32 DB 0 DB 0 DB &B11010000 BCKG2$: DW 0 DB 180,1 DW 0 DB 0,0 DW 384 DW 32 DB 0 DB 0 DB &B11010000 SAMP1$: DW 384 DB 83,1 DW 384 DB 0,0 DW 128 DW 64 DB 0 DB 0 DB &B11010000 SAMP2$: DW 256 DB 83,1 DW 384 DB 64,0 DW 128 DW 64 DB 0 DB 0 DB &B11010000 SAMP3$: DW 128 DB 83,1 DW 384 DB 128,0 DW 128 DW 64 DB 0 DB 0 DB &B11010000 SAMP4$: DW 0 DB 83,1 DW 384 DB 192,0 DW 128 DW 64 DB 0 DB 0 DB &B11010000 PRTNX: NOP LD HL,(TXTADR) LD A,(HL) OR A JP NZ,PRTNX2 LD HL,(STRTXT) LD (TXTADR),HL LD A,255 LD (ESC),A JP PRTNX PRTNX2: CP 13 JP Z,PRTNX3 CALL PRTCHR JP PRTNXE PRTNX3: LD A,&HC9 LD (PRTNX),A PRTNXE: LD HL,(TXTADR) INC HL LD (TXTADR),HL RET CE_WT: EI LD B,20 CE_WT2: HALT DJNZ CE_WT2 RET ;*************************************** COORS: DB 0,0,0,2 DB 5,0,0,6 DB 14,0,0,13 DB 30,0,0,12 DB 45,0,0,18 DB 66,0,0,15 DB 84,0,0,2 DB 89,0,0,4 DB 96,0,0,4 DB 103,0,0,8 DB 114,0,0,12 DB 129,0,0,4 DB 136,0,0,5 DB 144,0,0,2 DB 149,0,0,13 DB 165,0,0,13 DB 181,0,0,5 DB 189,0,0,11 DB 203,0,0,11 DB 217,0,0,13 DB 233,0,0,12 DB 248,0,0,12 DB 7,1,0,12 DB 22,1,0,10 DB 35,1,0,12 DB 50,1,0,2 DB 55,1,0,4 DB 62,1,0,11 DB 76,1,0,12 DB 91,1,0,11 DB 105,1,0,9 DB 117,1,0,19 DB 139,1,0,16 DB 158,1,0,11 DB 172,1,0,16 DB 191,1,0,14 DB 208,1,0,9 DB 220,1,0,8 DB 0,0,27,18 DB 21,0,27,14 DB 38,0,27,3 DB 43,0,27,7 DB 53,0,27,13 DB 69,0,27,7 DB 79,0,27,19 DB 101,0,27,17 DB 121,0,27,19 DB 143,0,27,10 DB 156,0,27,19 DB 178,0,27,10 DB 191,0,27,12 DB 206,0,27,10 DB 219,0,27,13 DB 235,0,27,15 DB 253,0,27,25 DB 25,1,27,11 DB 39,1,27,12 DB 54,1,27,12 DB 69,1,27,4 DB 76,1,27,11 DB 90,1,27,4 DB 97,1,27,11 DB 111,1,27,12 DB 126,1,27,3 DB 132,1,27,12 DB 147,1,27,12 DB 162,1,27,10 DB 175,1,27,12 DB 190,1,27,12 DB 205,1,27,6 DB 214,1,27,12 DB 0,0,54,10 DB 13,0,54,3 DB 18,0,54,3 DB 23,0,54,10 DB 36,0,54,3 DB 41,0,54,17 DB 60,0,54,10 DB 72,0,54,12 DB 87,0,54,12 DB 102,0,54,12 DB 117,0,54,6 DB 126,0,54,9 DB 138,0,54,5 DB 146,0,54,9 DB 158,0,54,11 DB 172,0,54,19 DB 194,0,54,13 DB 210,0,54,12 DB 225,0,54,11 DB 239,0,54,6 DB 248,0,54,3 DB 253,0,54,6 DB 0,0,0,0 DATLET: DW 0 DB 0,1 DW 0 DB 0,0 DW 0 DW 27 DB 0,0,&B10011000 DX: DW 0 DY: DW 0 PRTCHR: SUB 32 RET C LD HL,(DX) LD C,A OR A LD A,8 ;Space space JP Z,PRTCH1 DEC C LD H,0 LD L,C SLA L RL H SLA L RL H LD DE,COORS ADD HL,DE LD A,(HL) ;LB SX LD (DATLET),A INC HL LD A,(HL) ;HB SX LD (DATLET+1),A INC HL LD A,(HL) ;LB SY LD (DATLET+2),A INC HL LD A,(HL) ;LB NX LD (DATLET+8),A LD HL,(DX) LD (DATLET+4),HL PUSH AF PUSH HL LD A,(DY) LD (DATLET+6),A LD HL,DATLET LD A,32 OUT (&H99),A LD A,17+128 OUT (&H99),A LD BC,&H0F9B OTIR POP HL POP AF PRTCH1: LD E,A LD D,0 ADD HL,DE INC HL INC HL LD (DX),HL RET SCREEN: ; van; naar; aantal keer; jump?; jumpen naar; call?; subroutine-call DW 0,255,255,0,0,0,0 DB -1 RUN: LD IX,SCREEN RUN_1: LD A,(IX+0) ; einde tabel? CP -1 RET Z LD A,(IX+6) ; jump other position OR A JP NZ,LJUMP LD A,(IX+10) ; subroutine-call OR A CALL NZ,JUMP LD B,(IX+4) NEXT: PUSH BC CALL PLAY POP BC LD A,(ESC) OR A JP NZ,CLPAL IN A,(&HAA) AND &HF0 ADD A,7 OUT (&HAA),A IN A,(&HA9) BIT 2,A JP Z,CLPAL DJNZ NEXT LD DE,14 ; next position ADD IX,DE JP RUN_1 PLAY: LD L,(IX+0) ; vooruit of achteruit? LD H,(IX+1) LD E,(IX+2) LD D,(IX+3) OR A SBC HL,DE JP C,NEGATF LD B,L INC B ADD HL,DE JP REWIND NEGATF: ADD HL,DE EX DE,HL OR A SBC HL,DE LD B,L INC B EX DE,HL JP WIND RET WIND: PUSH BC ; vooruit afspelen PUSH HL CALL BEELD CALL INTERR CALL REPLAY POP HL POP BC INC HL LD A,(ESC) OR A RET NZ IN A,(&HAA) AND &HF0 ADD A,7 OUT (&HAA),A IN A,(&HA9) BIT 2,A RET Z DJNZ WIND RET REWIND: PUSH BC ; achteruit afspelen PUSH HL CALL BEELD CALL INTERR CALL REPLAY POP HL POP BC DEC HL LD A,(ESC) OR A RET NZ IN A,(&HAA) AND &HF0 ADD A,7 OUT (&HAA),A IN A,(&HA9) BIT 2,A RET Z DJNZ REWIND RET MTASK: RET ; return RET RET REPLAY: PUSH IX ; replay256 call XOR A OUT (&H99),A LD A,15+128 OUT (&H99),A CALL &HFD9A POP IX LD A,PORT OUT (&HC0),A DI RET LJUMP: LD L,(IX+8) ; bereken adres nieuwe position LD H,0 SLA L RL H PUSH HL SLA L RL H SLA L RL H SLA L RL H POP DE OR A SBC HL,DE EX DE,HL LD IX,SCREEN ADD IX,DE JP RUN_1 JUMP: LD L,(IX+12) ; call sub-routine LD H,(IX+13) LD (JUMP1+1),HL PUSH IX JUMP1: CALL 0 POP IX DI RET ;--- BEELD: PUSH HL PUSH DE PUSH BC LD B,H LD C,L SRL H RR L SRL H RR L SRL H RR L SRL H RR L SRL H RR L SRL H RR L ; HL -> bank nummer LD A,L ADD A,BK_WAV OUT (&HFD),A ; instellen PAGE-2 op bank L LD A,C AND &B00111111 OR &B01000000 ; A -> high-byte beeld-adres LD H,A LD L,0 ; HL -> beeld-adres LD A,(FIRSTL) ; regelteller = 0 LD E,A LD D,0 ADD HL,DE LD A,0 OUT (&H99),A LD A,23+128 OUT (&H99),A ; VDP(24)=0, normaal scherm LD A,0 OUT (&H99),A LD A,19+128 OUT (&H99),A ; line-interrupt instellen op 255ste beeldregel LD A,1 OUT (&H99),A LD A,15+128 OUT (&H99),A ; instellen STATUS reg.1 op lezen LD C,&H9B LD A,(FIRSTL) LD B,A LD A,(LASTL) SUB B LD B,A LD A,PORT OUT (&HC0),A BCKGRN: LD D,&B11110000 LD A,(&H2D) CP 2 JP NC,TURBOR ;--- routine voor MSX2 MSX2: MSXLD1: INC B LD A,23 ; set write to reg.23 OUT (&H99),A LD A,17+128 OUT (&H99),A MSXLD2: IN A,(&H99) BIT 0,A JP Z,MSXLD2 ; wacht op het afbeelden van een nieuwe lijn OUTI ; verander VDP(24), sneller dan "OUT" RLC D IN A,(&HC1) RR A LD E,A OUT (&H99),A LD A,19+128 OUT (&H99),A LD A,E SUB L OUT (&H99),A LD A,23+128 OUT (&H99),A DJNZ MSXLD1 LD HL,BCKGRN+1 RRC (HL) RRC (HL) LD A,0 OUT (&H99),A LD A,23+128 OUT (&H99),A POP BC POP DE POP HL RET ; beeld afgebeeld -> klaar ;---- routine voor TURBO-R TURBOR: TURLD1: INC B LD A,23 ; set write to reg.23 OUT (&H99),A LD A,17+128 OUT (&H99),A TURLD2: IN A,(&H99) BIT 0,A JP Z,TURLD2 ; wacht op het afbeelden van een nieuwe lijn OUTI ; verander VDP(24), sneller dan "OUT" IN A,(&HC1) SRL A LD E,A OUT (&H99),A LD A,19+128 OUT (&H99),A LD A,E SUB L OUT (&H99),A LD A,23+128 OUT (&H99),A DJNZ TURLD1 LD A,0 OUT (&H99),A LD A,23+128 OUT (&H99),A POP BC POP DE POP HL RET ; beeld afgebeeld -> klaar FIRSTL: DB 0 LASTL: DB 0 BK_WAV: EQU 12 ; MODULE: LD A,PORT ; CP 20 ; RET Z ; LD HL,MUZDAT ; SETMUZ: LD A,(HL) ; OR A ; RET Z ; OUT (&HC0),A ; INC HL ; LD A,(HL) ; OUT (&HC1),A ; INC HL ; JP SETMUZ ; MUZDAT: DB 7,1,8,8,4,&H78,13,&HE1,14,0,24,8,25,0,7,&HC0,26,0,0 CLPAL: LD B,16 CLPAL1: LD A,16 SUB B OUT (&H99),A LD A,16+128 OUT (&H99),A XOR A OUT (&H9A),A XOR A OUT (&H9A),A DJNZ CLPAL1 RET SETCC: LD HL,PALLET SETCC2: LD A,(HL) CP 255 RET Z OUT (&H99),A LD A,16+128 OUT (&H99),A INC HL LD A,(HL) OUT (&H9A),A INC HL LD A,(HL) OUT (&H9A),A INC HL JP SETCC2 PALLET: DB 6,&B00000010,&B00000000 DB 5,&B00000011,&B00000000 DB 4,&B00000100,&B00000000 DB 3,&B00000101,&B00000000 DB 2,&B00000110,&B00000000 DB 1,&B00000111,&B00000000 DB 0,&B00000000,&B00000000 DB 7,&B01110000,&B00000110 DB 8,&B01110000,&B00000101 DB 9,&B01110000,&B00000100 DB 10,&B01110000,&B00000011 DB 11,&B01110000,&B00000010 CLR1: DB 12,&B00100010,&B00000010 CLR2: DB 13,&B00110011,&B00000011 DB 14,&B01010101,&B00000101 DB 15,&B01110111,&B00000111 DB -1