File download
- File size:
- 22 648 bytes (22.12K)
- File date:
- 2022-12-30 11:32:14
- Download count:
- all-time: 12
Preview
- cmp.c 381B
- file_id.diz 6.56K
- makefile 472B
- nop.c 9B
- result.png 7.60K
- source.png 9.34K
- star.dat 561B
- star81.c 150B
- star81.p 1.93K
file_id.diz
STAR81
AUTHOR
zxpope
CATEGORY
Christmas Challenge
https://logiker.com/Vintage-Computing-Christmas-Challenge-2022
http://retrowiki.es/viewtopic.php?f=83&t=200038966
SYSTEM
Sinclair ZX81
LANGUAGE
C Z80 cross-c compiler zcc z88dk v20407-915a4fecb-20221212
LEN SOURCE CODE
150 Bytes
LEN EXE FILE
1976 Bytes
LEN CODE ONLY
344 Bytes
INSTRUCTIONS
download EightyOne emulator
execute "wine EightyOne.exe"
select MENU>OPTIONS>HARDWARE>ZX81 with 4k BYTES RAM
select MENU>OPTIONS>HARDWARE>ADVANCED SETTINGS>ROM FILE>ZX81.ROM
select MENU>FILE>OPEN TAPE>STAR81.P
enjoy
DESCRIPTION
This 150 Bytes source code shows a nice xmas star in a 32 column screen.
The star is a 32*18 matrix stored in a compressed vector.
Compression algorithm is simple, N identical characters are substitured with the letter in ASCII A+N
In a ZX81 machine with 8-bit Z80 microprocesor code size is 314 Bytes, 344 Bytes in a new 64-bit microprocessor.
It is portable code, so you can run it in any retrocomputer, mainframe or CRAY supercomputer. AS400 remains untested.
----------------------------------------------------------------------------
#include <stdio.h>
char u[]=" z 1 8 xMBHBXCFCXDDDXEBETRQPSNULWJWLUNSPQRTEBEXDDDXCFCXBHBL",v=59;
main(){while(v-->8)while((u[v]--)-'A')putchar(u[v&7]);}
----------------------------------------------------------------------------
* *
** **
*** ***
**** ****
*****************
***************
*************
***********
*********
***********
*************
***************
*****************
**** ****
*** ***
** **
* *
COMMENTS
=========
SIZE
====
wc *.c *.p *.exe
3 9 152 star81.c
3 34 1976 star81.p
1 47 16120 star81.exe
0 1 8 nop.c
3 28 1662 nop.p
2 38 15776 nop.exe
NOP.C
main(){}
NOP.P
1662 BYTES
START81.C
152BYTES
STAR81.P
FILE OF 1976 BYTES
314 BYTES OF Z80 REAL CODE
START81.EXE
NOP.EXE
SAME CODE COMPILED UNDER AMD64 GCC COMPILER GENERATES 344 BYTES OF REAL CODE
16120-15776=344 bytes
(gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04))
GENERATED ASSEMBLER CODE
========================
star81.c:
1 C_LINE 2,"star81.c"
2 SECTION data_compiler
2 ._u
2 0000 207a203120382078 defm " z 1 8 xMBHBXCFCXDDDXEBETRQPSN"
4d42484258434643
5844444458454245
54525150534e
2 001e 554c574a574c554e defm "ULWJWLUNSPQRTEBEXDDDXCFCXBHBL"
5350515254454245
5844444458434643
584248424c
2 003b 00 defb 0
2
2 SECTION code_compiler
2 SECTION data_compiler
2 ._v
2 003c 00 defb 59
2 SECTION code_compiler
2 C_LINE 3,"star81.c"
3
3 ; Function main flags 0x00000000 __stdc
3 ; int main()
3 C_LINE 3,"star81.c::main::0::1"
star81.c::main::0::1:
3 ._main
3 .i_4
3 0000 213c00 ld hl,_v
3 0003 cd0000 call l_gchar
3 0006 2b dec hl
3 0007 7d ld a,l
3 0008 323c00 ld (_v),a
3 000b 23 inc hl
3 000c 110800 ld de,8
3 000f eb ex de,hl
3 0010 cd0000 call l_gt
3 0013 d0 ret nc
3 .i_6
3 0014 210000 ld hl,_u
3 0017 e5 push hl
3 0018 213c00 ld hl,_v
3 001b cd0000 call l_gchar
3 001e d1 pop de
3 001f 19 add hl,de
3 0020 e5 push hl
3 0021 cd0000 call l_gchar
3 0024 2b dec hl
3 0025 d1 pop de
3 0026 7d ld a,l
3 0027 12 ld (de),a
3 0028 23 inc hl
3 0029 01bfff ld bc,-65
3 002c 09 add hl,bc
3 002d 7c ld a,h
3 002e b5 or l
3 002f ca0000 jp z,i_7 ;
3 0032 210000 ld hl,_u
3 0035 e5 push hl
3 0036 213c00 ld hl,_v
3 0039 cd0000 call l_gchar
3 003c 3b ld a,l
3 003d e607 and 7
3 003f 6f ld l,a
3 0040 2600 ld h,0
3 0042 d1 pop de
3 0043 19 add hl,de
3 0044 cd0000 call l_gchar
3 0047 e5 push hl
3 0048 210a00 ld hl,__sgoioblk+10
3 004b e5 push hl
3 004c cd0000 call fputc_callee
3 004f c31400 jp i_6 ;EOS
3 .i_5
3 0052 c9 ret
INSTALL NOTES
=============
sudo apt install -y build-essential bison flex libxml2-dev subversion zlib1g-dev m4 ragel re2c dos2unix texinfo texi2html gdb curl cpanminus ccache libboost-all-dev libmodern-perl-perl libyaml-perl liblocal-lib-perl libcapture-tiny-perl libpath-tiny-perl libtext-table-perl libdata-hexdump-perl libregexp-common-perl libclone-perl libfile-slurp-perl
cpanm --local-lib=~/perl5 App::Prove CPU::Z80::Assembler Data::Dump Data::HexDump File::Path List::Uniq Modern::Perl Object::Tiny::RW Regexp::Common Test::Harness Text::Diff Text::Table YAML::Tiny
eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
git clone --recursive https://github.com/z88dk/z88dk.git
cd z88dk
export BUILD_SDCC=1
export BUILD_SDCC_HTTP=1
chmod 777 build.sh
./build.sh
sudo apt install ttyrec ttygif
.profile:
export PATH=${PATH}:${HOME}/z88dk/bin
export ZCCCFG=${HOME}/z88dk/lib/config