Lesson H2 - Hello World on the ZX Spectrum
Lesson H2 - Hello World on the ZX Spectrum
http://www.chibiakumas.com/z80/helloworld.php#LessonH2
The ZX Spectrum is one of the most popular Z80 machines around, and it's well emulated too!
Unfortunately, making usable Disk or Tape images can be a bit tricky, but we can get around it with some work!
Chibi Akuma(s) Comedy-Horror 8-bit Bullet Hell shooter! // 「チビ悪魔」可笑しいゴシックSTG ! // Work in Progress: ChibiAliens
Interested in CPU's :Z80,6502,68000,6809,ARM,8086,RISC-V
Learning: 65816,ARM,8086,6809
Interested in CPU's :Z80,6502,68000,6809,ARM,8086,RISC-V
Learning: 65816,ARM,8086,6809
Re: Lesson H2 - Hello World on the ZX Spectrum
For comparison
Forth (hello.fth)
M4 FORTH (use ../fth2m4.sh hello.fth > hello.m4)
ZX Spectrum asm (use ../compile.sh hello 32768)
A hello.tap containing both the binary program and the basic loader (with the program duration calculated for testing) will also be created automatically. The tap file is immediately launched in fuse after compilation.
Forth (hello.fth)
Code: Select all
." Hello Word!"
Code: Select all
include(`../M4/FIRST.M4')dnl
ifdef __ORG
org __ORG
else
org 32768
endif
INIT(60000)
PRINT({"Hello World!"})
STOP
Code: Select all
ifdef __ORG
org __ORG
else
org 32768
endif
; === b e g i n ===
ld [Stop+1], SP ; 4:20 init storing the original SP value when the "bye" word is used
ld L, 0x1A ; 2:7 init Upper screen
call 0x1605 ; 3:17 init Open channel
ld HL, 0xEA60 ; 3:10 init Return address stack = 60000
exx ; 1:4 init
push DE ; 1:11 print "Hello World!"
ld BC, size101 ; 3:10 print Length of string101
ld DE, string101 ; 3:10 print Address of string101
call 0x203C ; 3:17 print Print our string with ZX 48K ROM
pop DE ; 1:10 print
Stop: ; stop
ld SP, 0x0000 ; 3:10 stop restoring the original SP value when the "bye" word is used
ld HL, 0x2758 ; 3:10 stop
exx ; 1:4 stop
ret ; 1:10 stop
; ===== e n d =====
STRING_SECTION:
string101:
db "Hello World!"
size101 EQU $ - string101
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH