8080 to Z80
SCT80 ist ein Konverter, der 8080-Assembler-Mnemonik in Z80-Mnemonik umsetzt. Vorgestellt wurde er in c't 5/85, Seite 94 ff. Die originale Version ist in Turbo-Pascal geschrieben. Meine Version ist für moderne Rechner als 32-Bit-Exe compiliert und erlaubt zusätzlich Kommandozeilenparameter.
Aufruf: sct80_213.exe sysgen.asm sysgen.z80 y
Beispiel (Auszug): links orig. 8080-Code mit mehreren Befehlen pro Zeile, rechts Ausgabe in Z80-Syntax
; UTILITY SUBROUTINES ; UTILITY SUBROUTINES
MULTSEC: MULTSEC:
;MULTIPLY THE SECTOR NUMBER IN A BY THE SECTOR SIZE ;MULTIPLY THE SECTOR NUMBER IN A BY THE SECTOR SIZE
MOV L,A! MVI H,0 ;SECTOR NUMBER IN HL LD L,A
LD H,0 ;SECTOR NUMBER IN HL
REPT LOG2SEC ;LOG 2 OF SECTOR SIZE REPT LOG2SEC ;LOG 2 OF SECTOR SIZE
DAD H ADD HL,HL
ENDM ENDM
RET ;WITH HL = SECTOR * SECTOR SIZE RET ;WITH HL = SECTOR * SECTOR SIZE
; ;
GETCHAR: GETCHAR:
; READ CONSOLE CHARACTER TO REGISTER A ; READ CONSOLE CHARACTER TO REGISTER A
MVI C,CONI! CALL BDOS! LD C,CONI
CALL BDOS
; CONVERT TO UPPER CASE BEFORE RETURN ; CONVERT TO UPPER CASE BEFORE RETURN
CPI 'A' OR 20H ! RC ;RETURN IF BELOW LOWER CASE A CP 'A' OR 20H
CPI ('Z' OR 20H) + 1 RET C ;RETURN IF BELOW LOWER CASE A
RNC ;RETURN IF ABOVE LOWER CASE Z CP ('Z' OR 20H) + 1
ANI 5FH! RET RET NC ;RETURN IF ABOVE LOWER CASE Z
AND 5FH
RET
; ;
PUTCHAR: PUTCHAR:
; WRITE CHARACTER FROM A TO CONSOLE ; WRITE CHARACTER FROM A TO CONSOLE
MOV E,A! MVI C,CONO! CALL BDOS! RET LD E,A
LD C,CONO
CALL BDOS
RET
Syntax
Vergleich 8080 - Z80 Syntax gibts z.B. hier: http://popolony2k.com.br/xtras/programming/asm/nemesis-lonestar/8080-z80-instruction-set.html