scene.org File Archive

File download

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

File size:
22 648 bytes (22.12K)
File date:
2022-12-30 11:32:14
Download count:
all-time: 12

Screenshot (by Demozoo)

Screenshot

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