gigatron/rom/Apps/Credits/Credits_v2.gcl
2025-01-28 19:17:01 +03:00

132 lines
3.7 KiB
Plaintext

{-----------------------------------------------------------------------+
| |
| Credits screen |
| |
+-----------------------------------------------------------------------}
gcl0x
{
First setup all subroutine definitions and variables, without making
calls. This way allows use of vLR to hop from page to page during setup,
with minimal overhead. At the end, run the main loop.
}
[def
{-
PrintText(Text,Pos)
Draw a zero-terminated text string to the screen.
Character 10 acts as newline.
There is no check for running off screen.
-}
push
[do
Text, Char= {Next character to be printed}
if<>0 {Zero termination}
Text<++ {Advance text pointer}
Char 10^ [if=0 2 Pos<. $800 Pos+ Pos=
else PrintChar!]
loop]
pop ret
] PrintText=
[def {Message}
`This`Gigatron`TTL`computer #10
`kit`was`brought`to`you`by #10
`Marcel`van`Kervinck`and #10
`Walter`Belgers. #10
#10
` `Tetronis'`is`by`at67`and #10
` `Bricks'`by`xbx. #10
#10
`Special`thanks`must`go`to
#0
] Part1=
{-----------------------------------------------------------------------+
|}\vLR>++ ret{ RAM page 3 |
+-----------------------------------------------------------------------}
$0300:
[def
#10
`Marc,`Paul,`Ivana,`Oscar, #10
`Martijn,`Erik,`Bella,`Ben, #10
`Dieter,`Martin,`Brad,`Lou, #10
`Phil,`Brian,`David,`Dave, #10
`HG`and`all`fans! #10
````````````Marcel`&`Walter #10
#0
] Part2=
[def { Clear screen }
$800 p= $8801 i=
0 \sysArgs0. \sysArgs1. {Black}
\SYS_VDrawBits_134 \sysFn:
[do
p [do
\sysArgs4: 134!! {Clears 8 pixels vertically}
$800 p+ p= if>0loop]
i+ p=
255& 160^ if<>0loop]
ret
] ClearScreen=
[def
{-
Wait -- Wait Delay number of frames (range 1..255)
-}
\frameCount, Delay+ 255& tmp=
[do \frameCount, tmp- if<>0loop]
ret
] Wait=
{-----------------------------------------------------------------------+
|}\vLR>++ ret{ RAM page 4 |
+-----------------------------------------------------------------------}
$0400:
{ Print a 5x8 character on screen with the built-in font
Char must be in the 32-127 range (this is not checked) }
[def {PrintChar}
{Map ASCII code to offset in font table}
Char 82- [if<0 50+ i= \font32up
else i= \font82up] fontData= {Select low or high page}
i 2<< i+ {Multiply by 5}
fontData+ fontData= {Add to page address to reach bitmap data for Char}
{Draw 5 vertical slices: 5 using font data}
Color \sysArgs1.
Pos \sysArgs4:
6+ Pos=
\SYS_VDrawBits_134 \sysFn:
$fb i= [do
fontData 0? fontData<++ \sysArgs2. 134!!
\sysArgs4<++
i<++ i if<>0loop]
ret
] PrintChar=
{--- Setup ---}
$802 Pos= ClearScreen!
[do
{Redraw text in several colors}
62 Color= {Pen color}
[do
$800 Pos= {Pen position at top of screen}
Part1 Text= PrintText!
Part2 Text= PrintText!
240 Delay= Wait!
Color 8^ if<>0 Color 9- Color= loop]
loop]
{-----------------------------------------------------------------------+
| End |
+-----------------------------------------------------------------------}