Beide Commandos sind grundsätzlich 17Bit breit es unterscheidet sie nur das 17. Bit
Code: Alles auswählen
' ======================================================================================
' SUBROUTINEN : word auf BUS schreiben
' ======================================================================================
BUS_write_w waitpeq IORQ_QT, IORQ_QT ' warten bis QT == 1
or dira, IORQ_C_io_w ' BUS auf Ausgabe schalten
rdlong temp1, db2A ' 16Bit Word holen
and temp1, M_16Bit ' 16Bit auswählen
jmp #BUS_write_w_1
' ======================================================================================
' SUBROUTINEN : COMANDO auf BUS schreiben
' ======================================================================================
BUS_write_c waitpeq IORQ_QT, IORQ_QT ' warten bis QT == 1
or dira, IORQ_C_io_w ' BUS auf Ausgabe schalten
rdlong temp1, db2A ' 16Bit Word holen
and temp1, M_17Bit ' 16Bit auswählen
BUS_write_w_1 andn outa, M_17Bit ' BUS auf $0000 setzen
or outa, temp1 ' einzen setzen
andn outa, IORQ_WR ' Schreibbefehl ausgeben
waitpeq zero, IORQ_QT ' warten bis QT == 0
or outa, IORQ_WR ' Schreibbefehl zurücknehmen
waitpeq IORQ_QT, IORQ_QT ' warten bis QT == 1
andn dira, IORQ_C_io_w ' BUS Ausgabe aufheben
wrlong cogidm, statusA ' Commando löschen
andn outa, M_17Bit ' BUS auf $0000 setzen
BUS_write_w_ret
BUS_write_c_ret ret

