scene.org File Archive

File download

<root>­/­parties­/­2022­/­vccc22­/­wild/arnolde_cpc_basic_vc3-2022.zip

File size:
1 059 567 bytes (1.01M)
File date:
2022-12-30 11:32:14
Download count:
all-time: 6

Preview

  • ascirisk_bas.bas 102B
  • ascirisk_bas.dsk 190.25K
  • ascirisk_bas.png 1.01M
  • file_id.diz 1.20K

file_id.diz

ASCIRISK_BAS

Author: Arnolde/Leosoft
Category: Wild
System:   Amstrad CPC
Language: Locomotive BASIC
Len source code: 102 bytes
Len exe file:    100 bytes
Len code only:   97 bytes

Instructions:
Load the ascirisk_bas.dsk file and type RUN"ASCIRISK

Description:
After experimenting with the lengths of blanks and stars for each line and not
getting anywhere, I decided to go with a coordinates-based approach instead.
The center of the star is 0,0 and it goes 8 squares in each direction.

I combined two shapes:
When drawing stars only if (|x|<5 OR |y|<5) we get a plus-shaped cross.
When drawing only if (||x|-|y||<5), we get a X-shaped cross.
By combining (ANDing) these two forms, we get the requested star shape.

I ended up with a BASIC condition like this:
IF (ABS(x)>4 AND ABS(y)>4) OR (ABS(ABS(x)-ABS(y))>4) THEN PRINT " "
(instead of default *)

The fact that all the values are compared to 4 led me to this construction:
IF MAX(MIN(ABS(x),ABS(y)),ABS(ABS(x)-ABS(y)),4)=4 THEN PRINT "*"

Last step: Why not get rid of the comparison and just adding this value to 38?
If it's 4, we get 42, the ASCII value of *, if it's more, we get other symbols
and a nice pattern outside of the star.