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