Compilare programmi Assembler per CP/M

Scritto il 21 giugno 2020 da

Vediamo una panoramica dei compilatori assembler e ambienti di sviluppo per creare programmi per il sistema operativo CP/M e in generale per qualsiasi macchina con microprocessore Z80.

ASM

Il compilatore ASM fornito con il sistema operativo CP/M non è particolarmente potente ma rappresenta una buona base di partenza.

Utilizza solo le istruzioni Intel 8080.

BDOS            EQU  05H
STROUT          EQU  09H

                ORG  0100H

ENTRY           LXI   D, HELLO
                MVI   C, STROUT
                CALL  BDOS
                RET

HELLO           DB   'Hello world!'
                DB   13, 10, '$'

                END

Per ottenere un programma eseguibile occorre compilare il sorgente con il programma ASM il quale genera il codice Intel HEX, seguito dal programma LOAD che legge il codice esadecimale e lo salva in formato binario pronto per essere eseguito.

asm-screen

 

Microsoft Macro Assembler

Per programmi più complessi, il compilatore Microsoft offre diverse caratteristiche avanzate, tra le quali la possibilità di compilare diversi sorgenti e collegarli insieme per generare un programma unico, ma soprattutto la compatibilità con le istruzioni e la sintassi Z80.

		.Z80

BDOS            EQU  05H
STROUT          EQU  09H

		CSEG

ENTRY:          LD    DE, HELLO
                LD    C, STROUT
                CALL  BDOS
                RET

		DSEG

HELLO:          DB   'Hello world!'
                DB   13, 10, '$'

                END  ENTRY

Per ottenere un programma eseguibile occorre compilare il sorgente con il programma M80 il quale genera un file oggetto, seguito dal programma L80 che legge il codice contenuto nel file oggetto e lo salva in formato binario pronto per essere eseguito.

m80-screen

 

TASM

Questo è un programma DOS in grado di compilare sorgenti assembler per diversi microprocessori tra cui l’8080 e lo Z80. Per utilizzarlo è necessario utilizzare Windows oppure un emulatore tipo DOSBOX.

La sintassi del sorgente è leggermente diversa rispetto ai precedenti, ma essendo compatibile con le istruzioni 8080 e Z80, effettuare il porting è molto facile.

BDOS            .EQU  05H
STROUT          .EQU  09H

                .ORG  100H

ENTRY           LD    DE, HELLO
                LD    C, STROUT
                CALL  BDOS
                RET

HELLO           .DB   "Hello world!"
                .DB   13, 10, "$"

                .END

Il compilatore genera direttamente il file binario che andrà poi copiato sulla macchina CP/M in qualche modo.

tasm-screen

 

Z80 Tools

Questo è l’ambiente di sviluppo che ho creato per sviluppare software in assembler per lo Z80. Comprende un editor con evidenziazione della sintassi, un compilatore, un debugger integrato e un emulatore. Consente di interfacciarsi direttamente con una macchina CP/M tramite porta seriale e fare l’upload dei programmi in formato compatibile con il programma DOWNLOAD.COM oppure tramite XMODEM.

z80-tools-screen

 

Collegamenti