; ; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 1 ; org &4000 loop: ld a,32 ld hl,(tab):ld (hl),a ld hl,(tab+2):ld (hl),a ld hl,(tab+4):ld (hl),a ld hl,(tab+6):ld (hl),a ld hl,(tab+8):ld (hl),a call &bb09 ret c call &bd19 ld hl,(tab):call check:ld (tab),hl ld hl,(tab+2):call check:ld (tab+2),hl ld hl,(tab+4):call check:ld (tab+4),hl ld hl,(tab+6):call check:ld (tab+6),hl ld hl,(tab+8):call check:ld (tab+8),hl jr loop check: ld (hl),0 inc hl ld a,h or l cp 0 ret nz ld hl,&c000 ret tab: dw &cf0f,&d1e0,&ec55,&f242,&caaa
; ; -** VERTICAL STAR FLYING **- by HYPNOM '94 Version 1 ; org &4000 loop ld b,32:ld c,0 ld hl,(tab):call check ld hl,(tab+2):call check ld hl,(tab+4):call check ld hl,(tab+6):call check ld hl,(tab+8):call check call &bb09 ret c call &bd19 ld b,0:ld c,32 ld hl,(tab):call check:call calc:ld (tab),hl ld hl,(tab+2):call check:call calc:ld (tab+2),hl ld hl,(tab+4):call check:call calc:ld (tab+4),hl ld hl,(tab+6):call check:call calc:ld (tab+6),hl ld hl,(tab+8):call check:call calc:ld (tab+8),hl jr loop check ld a,(hl) cp c ret nz ld (hl),b ret calc ld de,&800 sbc hl,de ld a,h cp &c0 ret nc cp &b7 jr nz,followme ld a,l cp &4f jr c,followme ld de,&4000 add hl,de ret followme ld de,8*&800-&50 add hl,de ret tab dw &cf0f,&d0e0,&ecac,&f242,&caaa; ; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 2 ; org &4000 ld a,1 call &bc0e begin ld hl,(tab):ld (hl),32 ld hl,(tab+2):ld (hl),32 ld hl,(tab+4):ld (hl),32 ld hl,(tab+6):ld (hl),32 ld hl,(tab+8):ld (hl),32 ld hl,(tab1):ld (hl),32 ld hl,(tab1+2):ld (hl),32 ld hl,(tab1+4):ld (hl),32 ld hl,(tab1+6):ld (hl),32 ld hl,(tab1+8):ld (hl),32 call &bb09 ret c call &bd19 ld hl,(tab):ld (hl),0:call check:ld (tab),hl ld hl,(tab+2):ld (hl),0:call check:ld (tab+2),hl ld hl,(tab+4):ld (hl),0:call check:ld (tab+4),hl ld hl,(tab+6):ld (hl),0:call check:ld (tab+6),hl ld hl,(tab+8):ld (hl),0:call check:ld (tab+8),hl ld hl,(tab1):ld (hl),0:inc hl:call check:ld (tab1),hl ld hl,(tab1+2):ld (hl),0:inc hl:call check:ld (tab1+2),hl ld hl,(tab1+4):ld (hl),0:inc hl:call check:ld (tab1+4),hl ld hl,(tab1+6):ld (hl),0:inc hl:call check:ld (tab1+6),hl ld hl,(tab1+8):ld (hl),0:inc hl:call check:ld (tab1+8),hl jp begin check inc hl ld a,h cp 0 ret nz ld hl,&c000 ret tab dw &c000,&d4f6,&e973,&f1dd,&c904 tab1 dw &cfff,&e030,&eaaa,&c7aa,&f4fb; ; -** HORIZONTAL STAR FLYING **- by HYPNOM '94 Version 3 ; org &4000 ; Sterne setzen: loop ld de,tab ; DE zeigt auf Anfang der Stern(screen)adressentabelle ld b,6 ; 6 Sterne, also 6 Durchlaeufe der Schleife, B ist Zaehler dafuer loop1 ld a,(de) ; nach A Highbyte der aktuellen Sternadresse ld l,a ; weitergeben nach L inc de ; Sternadressentabellenzeiger DE weiterruecken auf Lowbyte ld a,(de) ; dieses Lowbyte nach A schreiben ld h,a ; und weitergeben nach H ==> HL enthaelt nun Sternadresse ld a,(hl) ; Inhalt der Sternadresse vom Screen nach A cp 0 ; vergleichen mit 0, also, ob an der Screenstelle Grafik steht jr nz,continue ; wenn Screenadresseninhalt ungleich 0, dann => Label continue ld (hl),32 ; an Screenadresse (HL) Stern setzen (Wert 32) continue inc de ; DE auf Highbyte der naechsten Sternscreenaddy djnz loop1 ; B wird eins runtergezaehlt und nach Label loop1 ; gesprungen, solange B groesser 0 ist call &bb09 ; Taste gedrueckt? ret c ; wenn ja (Carry-Flag gesetzt), dann zurueck ins Basic call &bd19 ; Frame Fly Back, also abwarten, bis Elektronenstrahl den ; Screen fertig gezeichnet hat ; Sterne loeschen: xloop ld de,tab ; DE zeigt auf Anfang Sternscreenaddytabelle ld b,6 ; B als Schleifenzaehler wieder auf 6 xloop1 ld a,(de) ld l,a inc de ld a,(de) ld h,a ; bis hierhin wurde die Addy wieder nach HL geladen ld a,(hl) cp 32 ; Screeninhalt mit 32 (=Stern) vergleichen jr nz,xcontinue ; wenn kein Stern gesetzt, dann war da Grafik,=> Label xcontinue ld (hl),0 ; sonst Stern loeschen xcontinue inc hl ; Screenadresse erhoehen ld a,h or l cp 0 ; Vergleichsrouti, ob Adresse groesser als &FFFF, also &0000 jr nz,xcontinue1 ; wenn nein, dann weiter bei xcontinue1 ld hl,&c000 ; sonst Addy auf Screenanfang setzen xcontinue1 dec de ld a,l ld (de),a inc de ld a,h ld (de),a inc de ; neue Screenaddy in Tabelle setzen (Zeiger mu¦ dazu verschoben djnz xloop1 ; und B dekrementieren und naechster Stern werden) jr loop ; und alles von vorne tab dw &cf0f,&d5e0,&ed55,&f242,&caaa,&f000Source by HYPNOM '94 ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop Page créée en 788 millisecondes et consultée 1854 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|
|