home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fujiology Archive
/
fujiology_archive_v1_0.iso
/
B
/
BITMASTR
/
OVERDIGT.ZIP
/
OVERDIG1.MSA
/
SUPER.GFA
(
.txt
)
< prev
Wrap
GFA-BASIC Atari
|
1987-04-22
|
12KB
|
610 lines
' ## INLINE:
' $0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $00a0: 00 00 00 00 00 00 00 00 00 00 00 00
' 172 Bytes.
INLINE dpal%,172
init
ininew
g32
liny("\bitmast2")
eff
aff
VOID INP(2)
' --------------- PROGRAMME PRINCIPALE ------------
menu
'
PROCEDURE menu
menu:
digit("\DATA2.BIT",136690,9)
liny("\BITMAST3")
eff
aff
joue
CLR t%,ti%,a%,cc%,disk!
test:
REPEAT
scroll
ink
INC cc%
IF cc%=625
CLR cc%
joue
ENDIF
UNTIL i$<>""
ii%=VAL(i$)
IF ii% AND ii%<4
mix
ENDIF
GOTO test
RETURN
'
PROCEDURE mix
ii$=STR$(ii%+1)
n$="\MIX"+ii$
nb$=n$+".BIT"
disk
disk:
IF EXIST(nb$)<>0
bm
IF ii$="2"
GOSUB st1
ENDIF
IF ii$="3"
GOSUB st2
ENDIF
IF ii$="4"
GOSUB st3
ENDIF
digit(nb$,l%,10)
liny(n$)
eff
aff
joue
CLR please!
att
ELSE
IF please!=0
please
ENDIF
att
GOTO disk
ENDIF
ii$="1"
disk
reload:
IF EXIST("\BITMAST3.CPT")=0
IF please!=0
please
ENDIF
att
GOTO reload
ENDIF
CLR please!
bm
GOTO menu
RETURN
PROCEDURE disk
CLS
bm
CLS
bm
liny("DISK")
aff
RETURN
PROCEDURE please
please!=-1
PRINT AT(1,20)
ce("PLEASE INSERT DISK "+ii$)
bm
RETURN
'
' ------------------------- INITIALISATION ----------------
'
> PROCEDURE init
RESERVE 150000
FOR q%=6 TO 0 STEP -1
VSYNC
VSYNC
SETCOLOR 0,q%,q%,q%
SETCOLOR 1,0,q%,0
SETCOLOR 2,0,q%,0
NEXT q%
CLS
SPOKE &H484,2
DEFBYT "q,z"
rez%=XBIOS(4)
x3%=XBIOS(3)
esc$=CHR$(27)
FOR n%=&HFF8240 TO &HFF825F
basepal$=basepal$+CHR$(PEEK(n%))
NEXT n%
VOID XBIOS(5,L:-1,L:-1,W:0)
OUT 4,18
HIDEM
vid$=STRING$(160,0)
DIM xb2%(8064)
xb2%=(VARPTR(xb2%(0))+255) AND &HFFFF00
xb3%=XBIOS(3)
VOID XBIOS(5,L:xb3%,L:xb2%,W:-1)
CLS
VOID XBIOS(5,L:xb2%,L:xb3%,W:-1)
fade
RETURN
> PROCEDURE ininew
uncode("DATABASE")
WAVE 0,0
FOR i%=1 TO 841
READ a$
routine$=routine$+CHR$(VAL("&"+a$))
NEXT i%
DATA 60,1A,0,0,3,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,2,0,0,0,7,70,0,0,0,0,3
DATA 48,E7,E0,E0,20,3A,FF,F6,C,80,0,0,0,3,6D,34,C,80,0,0
DATA 0,10,6E,2C,57,80,E3,80,41,FA,0,40,20,BA,FF,D2,41,FA,0,D6
DATA 48,7A,0,20,3F,30,0,0,3F,3C,0,1,3F,3C,0,0,3F,3C,0,1F
DATA 4E,4E,DF,FC,0,0,0,C,4C,DF,7,7,4E,75,0,7C,7,0,48,E7
DATA E0,E0,42,40,22,7A,FF,A2,45,FA,0,4,10,39,12,34,56,78,52,92
DATA 41,FB,0,B6,32,3C,9,0,34,3C,A,0,82,28,1,0,84,28,2,0
DATA 91,C8,3,88,88,0,5,88,88,0,B3,D2,67,E,4C,DF,7,7,8,B9
DATA 0,5,0,FF,FA,F,4E,73,2F,39,0,0,4,A2,4,B9,0,0,0,2E
DATA 0,0,4,A2,3F,3C,0,D,3F,3C,0,1A,4E,4E,58,8F,23,DF,0,0
DATA 4,A2,13,FC,0,0,FF,FF,FA,7,13,FC,0,8,FF,FF,88,0,13,FC
DATA 0,0,FF,FF,88,2,13,FC,0,9,FF,FF,88,0,13,FC,0,0,FF,FF
DATA 88,2,13,FC,0,A,FF,FF,88,0,13,FC,0,0,FF,FF,88,2,4C,DF
DATA 7,7,8,B9,0,5,0,FF,FA,F,4E,73,0,CD,0,9A,0,7B,0,66
DATA 0,58,0,4D,0,44,0,3D,0,38,0,33,0,2F,0,2C,0,29,0,26
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A,A,A,A
DATA A,A,A,A,A,A,A,C,A,C,A,A,A,C,A,C,C,C,C,C
DATA A,C,C,C,C,C,C,C,C,D,C,D,D,C,D,D,D,D,C,C
DATA D,D,D,D,D,C,D,D,D,D,D,D,D,D,C,C,D,C,D,D
DATA D,D,D,D,E,E,D,E,C,E,E,D,E,E,E,E,D,E,E,E
DATA D,D,E,E,D,D,E,E,E,E,E,E,D,D,D,D,E,E,E,E
DATA E,E,D,E,E,E,E,E,E,E,E,E,F,F,E,F,F,F,F,F
DATA F,F,F,E,E,E,F,F,E,E,E,E,E,E,F,F,F,F,F,F
DATA F,F,E,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
DATA F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
DATA F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
DATA F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,7,8,7,8,8,9,9,8
DATA 9,A,9,0,A,4,9,B,B,7,A,7,7,7,7,8,A,8,8,9
DATA A,9,A,A,9,6,A,7,7,A,7,9,8,9,A,B,A,9,A,A
DATA A,C,B,B,A,B,B,B,A,A,C,C,B,C,C,C,C,C,B,C
DATA 8,8,C,9,C,9,A,C,9,A,A,A,D,B,B,B,C,C,B,B
DATA D,D,B,C,C,C,C,C,D,D,D,D,C,C,C,C,C,D,D,C
DATA D,D,D,D,D,D,D,D,0,9,D,A,A,A,B,B,B,B,B,D
DATA D,D,C,C,E,E,E,E,E,E,C,C,D,D,D,D,D,D,E,D
DATA D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,E,E,E,E
DATA E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E
DATA E,E,E,E,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
DATA F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,0,0,3,28
DATA 0
RETURN
> PROCEDURE bar
CLR z%
ADD zz%,2
zz%=zz% MOD 86
REPEAT
SETCOLOR 1,CARD{dpal%+zz%+z%}
ADD z%,2
UNTIL z%=86
SDPOKE &HFF8240,0
RETURN
'
' -------------------- UTILITAIRES -------------------
'
> PROCEDURE liny(i$)
i$=i$+".CPT"
OPEN "I",#1,i$
tny
CLOSE
RETURN
> PROCEDURE tny
DIM bloc1%(5000),bloc2%(5000)
LOCAL z%
res_fic%=INP(#1)
IF res_fic%>2
FOR i%=1 TO 4
a%=INP(#1)
NEXT i%
ENDIF
pal$=""
FOR i%=1 TO 32
pal$=pal$+CHR$(INP(#1))
NEXT i%
lg1%=INP(#1)*256+INP(#1)
lg2%=INP(#1)*256+INP(#1)
adr_bloc1%=VARPTR(bloc1%(0))
BGET #1,adr_bloc1%,lg1%
adr_bloc2%=VARPTR(bloc2%(0))
BGET #1,adr_bloc2%,2*lg2%
IF res_fic%>2
SUB res_fic%,3
ENDIF
d0%=0
d3%=0
a2%=adr_bloc1%
a3%=XBIOS(3)
d2%=adr_bloc2%
WHILE d3%<>lg1%
d1%=BYTE{a2%+d3%}
IF d1%>1
INC d3%
IF d1%>127
d1%=d1%-256
ENDIF
ELSE
a0%=a2%+d3%+1
z%=BYTE{a0%}*256+BYTE{a0%+1}
ADD d3%,3
IF d1%=1
d1%=-z%
ELSE
d1%=z%
ENDIF
ENDIF
IF d1%>=0
REPEAT
CARD{a3%+d0%}=CARD{d2%}
@suite
DEC d1%
UNTIL d1%=0
ADD d2%,2
ELSE
REPEAT
CARD{a3%+d0%}=CARD{d2%}
ADD d2%,2
@suite
INC d1%
UNTIL d1%=0
ENDIF
WEND
ERASE bloc1%(),bloc2%()
RETURN
PROCEDURE suite
ADD d0%,&HA0
IF d0%>=&H7D00
SUB d0%,&H7CF8
IF d0%>=&HA0
SUB d0%,&H9E
ENDIF
ENDIF
RETURN
'
> PROCEDURE digit(n$,taille%,freq%)
mem%=MALLOC(-1)
IF mem%<taille%
taille%=mem%
CLS
bm
CLS
bm
PRINT AT(1,11)
ce("WARNING!")
PRINT
ce("MEMORY TOO LOW - DIGIT TRUNCATED")
bm
ENDIF
son%=MALLOC(taille%)
OPEN "i",#1,n$
BGET #1,son%,taille% ! CHARGEMENT DU SON A L'ENDROIT RESERVE
CLOSE
debut%=V:routine$+28
fin%=V:routine$+32
vitesse%=V:routine$+36
LPOKE debut%,son% ! ON POKE L'ADRESSE DE DEBUT DU SON
LPOKE fin%,son%+taille% ! ON POKE L'ADRESSE DE FIN DU SON
LPOKE vitesse%,freq% ! ON POKE LA VITESSE D'EXECUTION DU SON
RETURN
> PROCEDURE joue
routine#=V:routine$+40
CALL routine#
VOID MFREE(son%)
RETURN
'
> PROCEDURE fade
CLS
PRINT AT(1,11)
ce("JUST WAIT")
PRINT
ce("LOADING & UNPACKING")
bm
FOR q|=0 TO 7
SETCOLOR 15,q|,q|,q|
PAUSE 3
VSYNC
NEXT q|
RETURN
PROCEDURE eff
b1%=XBIOS(2)+16000
FOR q|=0 TO 100
VSYNC
BMOVE V:vid$,b1%-q|*160,160
BMOVE V:vid$,b1%+q|*160,160
ink
NEXT q|
RETURN
> PROCEDURE aff
pal(pal$)
FOR q|=0 TO 100
VSYNC
BMOVE XBIOS(3)+q|*160,XBIOS(2)+q|*160,160
BMOVE XBIOS(3)+32000-q|*160,XBIOS(2)+32000-q|*160,160
ink
NEXT q|
RETURN
'
> PROCEDURE ink
i$=INKEY$
IF i$=esc$ OR i$=" "
VOID XBIOS(38,L:LPEEK(4))
ENDIF
RETURN
> PROCEDURE bm
SWAP xb2%,xb3%
VOID XBIOS(5,L:xb2%,L:xb3%,-1)
RETURN
> PROCEDURE ce(a$)
LOCAL x#
ll#=LEN(a$)
x#=((XBIOS(4)+1)*40-ll#)/2
PRINT TAB(x#);a$
RETURN
> PROCEDURE att
REPEAT
UNTIL INKEY$="" AND MOUSEK=0
REPEAT
UNTIL INKEY$<>"" OR MOUSEK
RETURN
> PROCEDURE pal(x$)
VOID XBIOS(6,L:VARPTR(x$))
RETURN
'
> PROCEDURE g32
liny("\FONTS")
DIM alf$(250)
CLR z|
FOR y%=0 TO 5
FOR x%=0 TO 9
GET x%*32,y%*32,x%*32+7,y%*32+30,alf$(z|)
GET x%*32+8,y%*32,x%*32+15,y%*32+30,alf$(z|+1)
GET x%*32+16,y%*32,x%*32+23,y%*32+30,alf$(z|+2)
GET x%*32+24,y%*32,x%*32+31,y%*32+30,alf$(z|+3)
ADD z|,4
NEXT x%
NEXT y%
dpal$=pal$
RETURN
PROCEDURE scroll
VSYNC
BMOVE xb2%+160*167,xb2%+160*167-8,5120
BMOVE V:vid$,xb2%+160*167-8,8
PUT 304,167,alf$(a%+ti%)
INC ti%
IF ti%=4
CLR ti%
INC t%
t%=t% MOD lof%
a%=(ASC(MID$(t$,t%,1))-32)*4
ENDIF
PUT 312,167,alf$(a%+ti%)
bm
RETURN
'
PROCEDURE uncode(code$)
code%=LEN(code$)
DIM c%(code%)
FOR q%=1 TO code%
c%(q%)=ASC(MID$(code$,q%,1))
NEXT q%
cod%=LEN(cod$)+2
OPEN "I",#1,"\DIGIT.TXT"
lof%=LOF(#1)
t%=MALLOC(lof%)
BGET #1,t%,lof%
CLOSE
CLR m%
FOR q%=lof% TO 0 STEP -1
BYTE{t%+q%}=BYTE{t%+q%} XOR c%(m%)
INC m%
m%=(m% MOD code%)+1
NEXT q%
t$=SPACE$(lof%)
BMOVE t%,V:t$,lof%
VOID MFREE(t%)
RETURN
PROCEDURE st1
CLS
SETCOLOR 15,2,2,6
PRINT
ce("IMAGINATION")
ce("CODED BY JOJO")
ce("DIGITALISED BY JOJO")
ce("WITH ST REPLAY4")
ce("GRAPHIX BY YOYO")
ce(" ")
ce("THIS DEMO WAS DIGITALISED IN 20HZ")
ce("THE SOUND QUALITY IS VERY VERY GOOD")
ce("THE DATA FILE IS ABOUT 740 KO")
ce("THE BIG PROBLEM WAS FOUND A GOOD MUSIC")
ce("WITH A NICE SOUND")
ce(" ")
ce("I SAY A BIG HELLO TO THE CAREBEARS")
ce("OUR FAVOURITE GROUP...")
ce("AFTER THE OVERLANDERS OF COURSE.")
ce(" ")
ce("THE LOADING IS A BIT LONG ISN'T IT ??")
ce("BUT DON'T REMEMBER,")
ce("THIS DEMO WAS WROTE IN GFA BASIC 3.03")
ce(" ")
ce("TO QUIT OR REBOOT THE DEMO PRESS RESET")
bm
VOID INP(2)
eff
liny("\mix2")
aff
DIM a%(2000),b%(5000)
code%=VARPTR(a%(0))
sample%=VARPTR(b%(0))
BLOAD "bascode.exe",code%
start%=code%+28
BLOAD nb$,sample%
PAUSE 4
speed%=4
re:
y#=1399
length%=79685
GOSUB music
GOSUB music
length%=549749
GOSUB music
y#=391720
length%=159428
GOSUB music
GOSUB music
length%=339899
GOSUB music
GOSUB music
y#=391720
length%=159428
GOSUB music
GOTO re
RETURN
PROCEDURE st2
CLS
SETCOLOR 15,2,2,6
ce("FORTY")
ce(" ")
ce("CODED BY JOJO")
ce("DIGITALISATED BY JOJO, AGAIN")
ce("MUSIC : PHIL COLLINS")
ce("I THINK HIS BEST SONG.")
ce(" ")
ce("DATA FILE IS ABOUT 740 KO ")
ce("THE SPEED IS 15 HZ")
ce("THE SOUND IS LESS THAN IMAGINATION DEMO")
ce("BUT VERY COOL FOR A GFA PROGRAM..")
ce(" ")
ce("IN FRENCH I SAY ....")
ce("JOYEUX NOEL ET BONNE ANNEE 90 A TOUS ")
ce(" GERONIMMOOOOOOOOOOOOOOO !!!!!!")
ce(" ")
ce("I FORGET A GOOD FRIEND")
ce("DOGUE DE MAUVE")
ce("THANKS A LOT MAN FOR YOUR HELP")
ce("DOGUE IS VERY VERY VERY GOOD IN GFA")
ce("THANKS FOR YOUR SCROLL....")
ce(" ")
ce("IF YOU WANT TO QUIT PRESS RESET")
bm
VOID INP(2)
eff
liny("\mix3")
aff
DIM a%(2000),b%(5000)
code%=VARPTR(a%(0))
sample%=VARPTR(b%(0))
BLOAD "bascode.exe",code%
start%=code%+28
BLOAD nb$,sample%
PAUSE 4
speed%=3
ra:
y#=284
length%=321832
GOSUB music
y#=250593
length%=71523
GOSUB music
GOSUB music
length%=143003
GOSUB music
y#=357825
length%=35771
GOSUB music
GOSUB music
GOSUB music
GOSUB music
GOSUB music
GOSUB music
GOSUB music
length%=411177
GOSUB music
y#=483023
length%=285979
GOSUB music
GOSUB music
GOSUB music
GOTO ra
RETURN
PROCEDURE st3
CLS
SETCOLOR 15,2,2,6
ce("MICHAEL MIX")
ce(" ")
ce("WAOUUUU THE COOL BIT MASTERS DEMO..")
ce("EVERYBODY THINKS IT'S THE BEST..")
ce("SO, LET ME PRESENT YOU THE MICKAEL MIX")
ce(" ")
ce("THE DATA FILE IS ABOUT 700 KO")
ce("THE SPEED 10HZ ")
ce("SO, THE SOUND IS LESS THAN FORTY DEMO,")
ce("BUT IT'S LONGER THAN THE REST")
ce("3 MINUTES 15 SECONDES... COOL NO ????")
ce(" ")
ce("CODED BY JOJO")
ce("DIGITALISED BY JOJO")
ce("MUSIC, MICHAEL JACKSON")
ce("VOICE : STAR TREK, MISSION IMPOSSIBLE,")
ce(" LULU, DUCH AND COLUCHE")
ce("REMIX BY JOJO")
ce(" ")
ce("A OTHER VERSION OF MICKAEL MIX IS READY,")
ce("IF YOU WANT TO SEE IT, CONTACT US...")
ce(" ")
ce("SORRY BUT IF YOU WANT TO QUIT : RESET")
bm
VOID INP(2)
eff
liny("\mix4")
aff
DIM a%(2000),b%(5000)
code%=VARPTR(a%(0))
sample%=VARPTR(b%(0))
BLOAD "bascode.exe",code%
start%=code%+28
BLOAD nb$,sample%
PAUSE 4
speed%=2
debut3:
y#=0
length%=460045
GOSUB music
y#=73116
length%=528593
GOSUB music
y#=521409
length%=80300
GOSUB music
GOSUB music
length%=127866
GOSUB music
GOTO debut3
RETURN
PROCEDURE music
LPOKE start%+2,sample%+y#
LPOKE start%+6,length%
LPOKE start%+10,speed%
CALL start%
RETURN