; HYPERITP.ACT ; HyperIt! player› ›; HyperIt! 0.5B›; By Bill Kendrick›; (c) New Breed Software 1995››INCLUDE"D:RUNTIME.ACT"››BYTE ARRAY PAGE6(43)=[$A2 $10 $20 $56› $E4 $A9 $06 $8D $58 $03 $A9 $00 $8D› $59 $03 $A9 $07 $8D $52 $03 $A9 $1A› $8D $54 $03 $A9 $06 $8D $55 $03 $20› $56 $E4 $A9 $0C $8D $52 $03 $20 $56› $E4 $6C $1E $06]››Byte Array Clock=[› '8 '8 'Æ '’ 'š '‚ 'Æ '8 ; › '8 '8 'Æ 'Š 'š '‚ 'Æ '8 ; /› '8 '8 'Æ '‚ 'š '‚ 'Æ '8 ; › '8 '8 'Æ '‚ 'š 'Š 'Æ '8 ; \› '8 '8 'Æ '‚ 'š '’ 'Æ '8 ; › '8 '8 'Æ '‚ 'š '¢ 'Æ '8 ; /› '8 '8 'Æ '‚ 'º '‚ 'Æ '8 ; › '8 '8 'Æ '¢ 'š '‚ 'Æ '8 ] ; \››Byte Array PMBuf(2048),ScBuffer(7680),› Cmd(41)››Byte HPosP0=53248,HPosP1=53249,› Stick0=632,Strig0=644,CH=764,› RTClok20=20›Card SavMsc=88››Byte S,F,MX,MY,Arrow,OY,Selected,Slow,› Key,Files,FX,FY,SFile,Depth,Rot›Card PM,WhereFont,CSet ;,SZ››Char Array Path(41),File(60),There(512),› TheFile(90),JumpStack(1600)›Byte Array Active(16),AX1(16),AY1(16),› AX2(16),AY2(16),AKs(32),AI(16),OA(16)››Byte CIO_status››Proc runit(char array filename)› byte b,cmd,startadrlo,startadrhi,› endadrlo,endadrhi,runadrlo,runadrhi› card pointer iocbxbuf,iocbxlen› byte pointer iocbxcmd› card startadr,endadr,len,runadr›› close(1)› open(1,filename,4,0)›› b=getd(1)› b=getd(1)›› startadrlo=getd(1)› startadrhi=getd(1)› endadrlo=getd(1)› endadrhi=getd(1)›› startadr=startadrlo+(256*startadrhi)› endadr=endadrlo+(256*endadrhi)› len=endadr-startadr+1›› iocbxcmd=$352› iocbxbuf=$354› iocbxlen=$358› cmd=7› iocbxbuf^=startadr› iocbxcmd^=cmd› iocbxlen^=len›› for b=0 to 43 do› cmd=page6(b)› poke($620+b,cmd)› od›› [$4C $20 $06]›return››CHAR FUNC CIO=*(BYTE dev, CARD addr,› size, BYTE cmd, aux1, aux2)›[$29$F$85$A0$86$A1$A$A$A$A$AA$A5$A5›$9D$342$A5$A3$9D$348$A5$A4$9D$349›$A5$A6$F0$8$9D$34A$A5$A7$9D$34B$98›$9D$345$A5$A1$9D$344$20$E456›$8C CIO_status$C0$88$D0$6$98$A4$A0›$99 EOF$A085$60]››CARD FUNC BGet=*(BYTE dev,CARD addr, size)›[$48$A9$7$85$A5$A9$0$85$A6$A5$A3$5$A4›$D0$6$85$A0$85$A1$68$60$68$20 CIO›$BD$348$85$A0$BD$349$85$A1$60]››PROC BPut=*(BYTE dev,CARD addr, size)›[$48$A9$B$85$A5$A9$0$85$A6$A5$A3$5$A4›$D0$2$68$60$68$4C CIO]››MODULE››Proc SetUp()› Byte A›› Graphics(24)› Poke(730,1)› Poke(731,1)› Poke(709,0)› Poke(710,15)› Poke(53277,3)› Poke(623,0)› PM=(PMBuf/1024)*1024+1024› CSet=PM+512+256› WhereFont=224*256› Poke(54279,PM/256)› Zero(PM+512,256)› Poke(704,142)› Poke(705,138)› PokeC(53256,0)› HPosP0=0› HPosP1=0› Poke(559,46)› MX=79› MY=47› OY=0› Arrow=0› For A=0 To 15 Do Active(A)=0 Od› Depth=0› Close(4)› Open(4,"K:",4,0)›Return››Proc Cls()› Zero(SavMsc,7680)›Return››Proc Invert(Byte X1,Y1,X2,Y2)› Byte XX,J,V› Byte Pointer Top›› For XX=X1 To X2 Do› Top=SavMsc+XX+Y1*320› For J=0 To (Y2-Y1)*8+7 Do› V=(Top^)!255› Top^=V› Top==+40› Od› Od›Return››Proc TempInactivate()› Byte A›› For A=0 To 15 Do› OA(A)=Active(A)› Active(A)=0› Od›Return››Proc Reactivate()› Byte A›› For A=0 To 15 Do Active(A)=OA(A) Od›Return››Proc Mouse()› Byte A›› S=Stick0› F=Strig0› Slow=Slow+1› Key=0› If CH<255 Then› If CH=142 Then S=14 Slow=4› ElseIf CH=143 Then S=13 Slow=4› ElseIf CH=134 Then S=11 Slow=4› ElseIf CH=135 Then S=7 Slow=4› ElseIf CH=140 Then F=0› Else Key=GetD(4) Fi› CH=255› Fi› If Slow>=3 Or Arrow=1 Then› If S>4 And S<8 And MX<160 Then MX==+1› ElseIf S>8 And S<12 And MX>0 Then MX==-1 Fi› If (S=13 Or S=9 Or S=5) And MY<95 Then MY==+1› ElseIf (S=14 Or S=10 Or S=6) And MY>0 Then MY==-1 Fi› Slow=0› Fi› If OY<>MY Then› Zero(PM+512+16+OY,8)› Zero(PM+512+128+16+OY,8)› OY=MY› Fi› Selected=255› If Arrow=0 Then› MoveBlock(PM+512+16+MY,"Àð~x4.'"+1,8)› MoveBlock(PM+512+128+16+MY,""+1,8)› If F=0 Then› For A=0 To 15 Do› If Active(A)=1 And (MX RSH 2)>=AX1(A) And (MX RSH 2)<=AX2(A)› And (MY RSH 2)>=AY1(A) And (MY RSH 2)<=AY2(A) Then Selected=A Fi› Od› If Selected<>255 Then› If AI(Selected)=1 Then› Sound(0,0,0,15)› A=RTClok20+1› Do Until RTClok20=A Od› Sound(0,0,0,0)› A=Selected› Invert(AX1(A),AY1(A),AX2(A),AY2(A))› Do Until Strig0=1 Od› Invert(AX1(A),AY1(A),AX2(A),AY2(A))› Fi› Fi› Fi› If Key<>0 Then› For A=0 To 15 Do› If Active(A)=1 And (AKs(A*2)=Key Or AKs(A*2+1)=Key) Then Selected=A Fi› Od› If Selected<>255 Then› If AI(Selected)=1 Then› Sound(0,0,0,15)› A=RTClok20+1› Do Until RTClok20=A Od› Sound(0,0,0,0)› A=Selected› Invert(AX1(A),AY1(A),AX2(A),AY2(A))› Invert(AX1(A),AY1(A),AX2(A),AY2(A))› Fi› Fi› Fi› ElseIf Arrow=1 Then› Rot=Rot+1 If Rot>7 then Rot=0 Fi› MoveBlock(PM+512+16+MY,Clock+Rot*8,8)› MoveBlock(PM+512+128+16+MY,"8|||8"+1,8)› Fi› HPosP0=MX+48› HPosP1=MX+48›Return››Proc SetFont(Char Array Name)› If Name(0)=0 Then WhereFont=224*256› Else› Arrow=1› Mouse()› Close(2)› Open(2,Name,4,0)› BGet(2,CSet,1024)› Close(2)› WhereFont=CSet› Arrow=0› Mouse()› Fi›Return››Proc Print8(Byte X,Y Char Array Text)› Byte A,J,C,I› Byte Pointer Top,V›› For A=1 To Text(0) Do› C=Text(A)› I=C&128› C=C&127› If C>=32 And C<96 Then C==-32› ElseIf C<32 Then C==+64 Fi› Top=SavMsc+X+A-1+Y*320› V=WhereFont+C*8› If I=0 Then› For J=0 To 7 Do› Top^=V^› Top==+40› V==+1› Od› Else› For J=0 To 7 Do› Top^=(V^)!255› Top==+40› V==+1› Od› Fi› Od›Return››Proc Box40(Byte X1,Y1,X2,Y2,Clear)› Char Array St(41)› Byte YY,Wid›› Arrow=1› Mouse()› Wid=X2-X1+1› SCopy(St,"‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’…")› St(0)=Wid› St(Wid)='…› Print8(X1,Y1,St)› If Clear=1 Then› SCopy(St,"ü ü")› St(0)=Wid› St(Wid)='ü› For YY=Y1+1 To Y2-1 Do› Print8(X1,YY,St)› Mouse()› Od› Else› For YY=Y1+1 To Y2-1 Do› Print8(X1,YY,"ü")› Print8(X2,YY,"ü")› Mouse()› Od› Fi› SCopy(St,"š’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’…")› St(0)=Wid› St(Wid)='ƒ› Print8(X1,Y2,St)› Arrow=0›Return››Proc SnapScreen()› MoveBlock(ScBuffer,SavMsc,7680)›Return››Proc RedrawScreen()› MoveBlock(SavMsc,ScBuffer,7680)›Return››Byte Func AddButton(Byte X1,Y1,X2,Y2,Inv Char Array Keys)› Byte A,B›› B=255› For A=0 To 15 Do› If Active(A)=0 And B=255 Then B=A Fi› Od› Active(B)=1› AX1(B)=X1› AX2(B)=X2› AY1(B)=Y1› AY2(B)=Y2› If Keys(1)='Ò Then Keys(1)=155 Fi› If Keys(2)='Ò Then Keys(2)=155 Fi› AKs(B*2)=Keys(1)› AKs(B*2+1)=Keys(2)› AI(B)=Inv›Return(B)››Byte Func NormalButton(Byte X,Y Char Array Text,Keys)› Byte B›› Print8(X,Y,Text)› B=AddButton(X,Y,X+Text(0)-1,Y,1,Keys)›Return(B)››Proc ISD(Char Array S)› InputSD(1,S)›Return››Proc FileIs(Char Array Name)› Byte A,C›› SCopy(TheFile,Path)› C=TheFile(0)› For A=1 To File(0) Do› TheFile(C+A)=File(A)› Od› TheFile(0)==+File(0)› C=TheFile(0)› TheFile(C+1)='.› TheFile(C+2)='S› TheFile(C+3)='T› TheFile(C+4)='K› TheFile(0)==+4› C=TheFile(0)› TheFile(C+1)=62 ; '>› For A=1 To Name(0) Do› TheFile(TheFile(0)+A+1)=Name(A)› Od› TheFile(0)==+Name(0)+1›Return››Proc Push(Char Array N)› Byte A›› Depth=Depth+1› For A=0 To N(0) Do› JumpStack(Depth*80+A)=N(A)› Od›Return››Proc Pop()› Byte A›› If Depth=0 Then Depth=1 Fi› TheFile(0)=JumpStack(Depth*80)› For A=0 To JumpStack(Depth*80) Do› TheFile(A)=JumpStack(Depth*80+A)› Od› Depth=Depth-1› If Depth=0 Then Depth=1 Fi›Return››Proc Play()› Char Array C2(10),OCmd(41),CurFile(250)› Byte XX,YY,XX2,YY2,QUIT,FOUND,TX,TY,A›› Graphics(24)› Poke(559,46)› Poke(710,12)› Poke(712,12)› Poke(709,0)› SetFont("")› SCopy(Cmd,File)› XX=Cmd(0)› Cmd(XX+1)='.› Cmd(XX+2)='C› Cmd(XX+3)='R› Cmd(XX+4)='D› Cmd(0)==+4› FileIs(Cmd)› QUIT=0› OCmd(0)=0› TX=0 TY=0› Do› Close(1)› Open(1,TheFile,4,0)› SCopy(CurFile,TheFile)› For XX=0 To 15 Do Active(XX)=0 Od› Do› Arrow=1› Mouse()› ISD(Cmd)› If SCompare(Cmd,"CLS")=0 Then› Cls()› ElseIf SCompare(Cmd,"SCREENOFF")=0 Then› Poke(559,12)› ElseIf SCompare(Cmd,"SCREENON")=0 Then› Poke(559,46)› ElseIf SCompare(Cmd,"MODE")=0 Then› XX=InputBD(1)› Graphics(24)› If XX=9 Then Poke(623,64)› ElseIf XX=10 Then Poke(623,192)› ElseIf XX=11 Then Poke(623,128)› Else Graphics(XX+16) Poke(623,0) Fi› Poke(559,46)› ElseIf SCompare(Cmd,"COLOR")=0 Then› Color=InputBD(1)› ElseIf SCompare(Cmd,"SETCOLOR")=0 Then› XX=InputBD(1)› YY=InputBD(1)› Poke(708+XX,YY)› ElseIf SCompare(Cmd,"PLOT")=0 Then› XX=InputBD(1)› YY=InputBD(1)› Plot(XX,YY)› ElseIf SCompare(Cmd,"DRAWTO")=0 Then› XX=InputBD(1)› YY=InputBD(1)› Drawto(XX,YY)› ElseIf SCompare(Cmd,"BOX")=0 Then› XX=InputBD(1)› YY=InputBD(1)› XX2=InputBD(1)› YY2=InputBD(1)› Plot(XX,YY)› Drawto(XX2,YY)› Drawto(XX2,YY2)› Drawto(XX,YY2)› Drawto(XX,YY)› ElseIf SCompare(Cmd,"BACK")=0 Or SCompare(Cmd,"IMAGE")=0 Then› If Cmd(0)=4 Then XX=1 Else XX=0 Fi› ISD(Cmd)› If SCompare(Cmd,OCmd)=0 And XX=1 Then› MoveBlock(SavMsc,ScBuffer,7680)› Else› If XX=1 Then SCopy(OCmd,Cmd) Fi› FileIs(Cmd)› Close(2)› Open(2,TheFile,4,0)› Mouse()› For A=0 To 6 Do› Mouse()› BGet(2,SavMsc+A*1024,1024)› Od› Mouse()› BGet(2,SavMsc+7168,7680-7*512)› Close(2)› Mouse()› If XX=1 Then MoveBlock(ScBuffer,SavMsc,7680) Fi› Fi› ElseIf SCompare(Cmd,"BACKUP")=0 Then› MoveBlock(SavMsc,ScBuffer,7680)› ElseIf SCompare(Cmd,"FONT")=0 Then› ISD(Cmd)› If Cmd(0)=0 Then SetFont("")› Else FileIs(Cmd) SetFont(TheFile) Fi› Arrow=1› ElseIf SCompare(Cmd,"TEXT")=0 Then› TX=InputBD(1)› TY=InputBD(1)› ISD(Cmd)› Print8(TX,TY,Cmd)› ElseIf SCompare(Cmd,"MORETEXT")=0 Then› ISD(Cmd)› TY==+1› Print8(TX,TY,Cmd)› ElseIf SCompare(Cmd,"BEGINTEXT")=0 Then› TX=InputBD(1)› TY=InputBD(1)› Do› Mouse()› ISD(Cmd)› If SCompare(Cmd,"ENDTEXT")<>0 Then› Print8(TX,TY,Cmd)› TY==+1› Fi› Until SCompare(Cmd,"ENDTEXT")=0 Or EOF(1)<>0 Od› ElseIf SCompare(Cmd,"BUTTON")=0 Then› XX=InputBD(1)› YY=InputBD(1)› XX2=InputBD(1)› YY2=InputBD(1)› C2(0)=InputBD(1)› ISD(Cmd)› AddButton(XX,YY,XX2,YY2,C2(0),Cmd)› ElseIf SCompare(Cmd,"NORMALBUTTON")=0 Then› XX=InputBD(1)› YY=InputBD(1)› ISD(Cmd)› ISD(C2)› NormalButton(XX,YY,Cmd,C2)› Fi› Until EOF(1)<>0 Or SCompare(Cmd,"END")=0 Od› Arrow=0› Poke(559,46)› Do› Mouse()› Until Selected<>255 Or Key=' Od› If Key=' Then› QUIT=1› Else› FOUND=0› Do› ISD(Cmd)› If SCompare(Cmd,"ON")=0 Then› XX=InputBD(1)› If XX=Selected Then Found=1 Fi› Fi› Until EOF(1)<>0 Or FOUND=1 Od› If FOUND=1 Then› FOUND=0› Do› ISD(Cmd)› If SCompare(Cmd,"ON")=0 Then FOUND=1› ElseIf SCompare(Cmd,"QUIT")=0 Then› FOUND=1 QUIT=1› ElseIf SCompare(Cmd,"LINK")=0 Then› ISD(Cmd)› FileIs(Cmd) FOUND=1› ElseIf SCompare(Cmd,"JUMP")=0 Then› Push(CurFile)› ISD(Cmd)› FileIs(Cmd) FOUND=1› ElseIf SCompare(Cmd,"RETURN")=0 Then› Pop() FOUND=1› Fi› Until EOF(1)<>0 Or FOUND=1 Od› Fi› Fi› Close(1)› Until QUIT=1 Od› For XX=0 To 15 Do Active(XX)=0 Od›Return››Proc Quit()› Arrow=1› Mouse()› RunIt("D:HYPERIT.COM")›Return››Proc Main()› Error=Quit› SetUp()› Close(1)› Open(1,"D:HYPERIT.DAT",4,0)› InputSD(1,Path)› InputSD(1,File)› Close(1)› Play()› Quit()›Return››