Hello World in Assembler per MSX, Commodore 64 e ZX Spectrum

Hallo World in Assembler per MSX, Commodore 64 e ZX Spectrum pubblicato su 8 Bit RetroProgramming Italia.

Versione MSX

E’ da compilare con pasmo, un compilatore Windows/DOS senza interfaccia, quindi da linea di comando.
Il compilato risultante è un file bin; se si vuole il cas da poter caricare sotto MSX si deve usare l’utility mcp sempre a linea di comando
Per MSX il programma và compilato con pasmo con l’opzione --msx.

; bios call to print a character on screen
CHPUT: equ 0x00a2
; the address of our program
org 0xD000
start:
ld hl, message
mainLoop: ld a, (hl)
cp 0
ret z
call CHPUT
inc hl
jr mainLoop
message:
db "Hello world!",0
; use the label "start" as the entry point
end start

Versione Commodore 64

Hello World in Assembler per Commodore 64 è da compilare con Cmb Studio, un programma Windows. Crea il prg direttamente quando compilato.

; Hello from CBM prg Studio!
*=$C000
start LDX #$0 
cycle LDA hworld,X 
CMP #0 
BEQ exit 
STA $0400,X 
INX 
JMP cycle 
exit RTS
hworld text 'hello world!' 
byte 0

Versione ZX Spectrum

Per compilarlo di usa pasmo a linea di comando. Và compilato con l’opzione --tap o --txz dipende che formato si vuole.

org 32768
start:
ld a, 2 ; channel 2 = "S" for screen
call $1601 ; Select print channel using ROM
ld hl,line ; Print line
call printline
ret
printline: ; Routine to print out a line
ld a,(hl) ; Get character to print
cp '$' ; See if it '$' terminator
jp z,printend ; We're done if it is
rst 16 ; Spectrum: Print the character in 'A'
inc hl ; Move onto the next character
jp printline ; Loop round
printend:
ret
; Data
line: defb 'Hello, world.',13,'$'

 

Have your say