PicoMiteVGA DEMO


Author Message
javavi

Guru

Joined: 01/10/2023
Location: Ukraine
Posts: 545
Posted: 07:28pm 07 Apr 2025      

Maze-Clock  

MODE  1
Const X.Res=MM.HRES,Y.Res=MM.VRES
Const Font.Addr=MM.Info(FONT ADDRESS 1)+4
Dim string  CH$ LENGTH 1
Dim string  ST$ LENGTH 8
Dim integer X.Dir=1,Y.Dir=1
Dim integer X.Pos=5,Y.Pos=15
Dim integer n,FC,BC
Dim CM(15)=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
Colour Map CM(),CM()
'=================================================
Font 9
Print @(0,0);
For n=1 To (X.Res\8)*(Y.Res\8)
 Print Chr$(50+Int(Rnd*3));
Next

Do
If FC=0 Then
  FC=Int(Rnd*15)+1
  TILE 0,0,CM(FC),0,80,40
  If Cint(Rnd) Then CH$="1" Else CH$="0"
EndIf
ST$=Time$
PrintTime X.Pos,Y.Pos,ST$,CH$
Pause 250
PrintTime X.Pos,Y.Pos,ST$,"C"
Inc X.Pos,X.Dir
Inc Y.Pos,Y.Dir
If X.Pos<0 Then X.Dir=1:FC=0
If X.Pos+64>80 Then X.Dir=-1:FC=0
If Y.Pos<0 Then Y.Dir=1:FC=0
If Y.Pos+11>60 Then Y.Dir=-1:FC=0
Loop While Inkey$=""
End
'--------------------------------------
Sub PrintTime(X,Y,TXT$,CH$)
Local string T$ LENGTH 8
Local integer Ti,Xi,FA,FS,FD,FH,FW
X=X*8:Y=Y*8
Print @(X,Y);
For FH=0 To 10
 XI=X
 For Ti=1 To Len(TXT$)
   FS=Asc(Mid$(TXT$,Ti,1))-32
   FA=Font.Addr+FS*12+FH
   FD=PEEK(BYTE FA)
   T$=Bin$(FD,8)
   For FW=1 To 8
     If CH$="C" Then
       If Mid$(T$,FW,1)="1" Then Print @(Xi,Y)Chr$(50+Int(Rnd*3));
     Else
       If Mid$(T$,FW,1)="1" Then Print @(Xi,Y)CH$;
     EndIf
     Inc Xi,8
   Next
 Next
 Inc Y,8
 Print @(X,Y);
Next
End Sub
'--------------------------------------
DefineFont 9
05300808
00000000 00000000 FFFFFFFF FFFFFFFF
08080808 08080808 80402010 08040201
01020408 10204080
End DefineFont