G'day,
sorry i am just teaching myself Assembly to repair this Micromation. I have worked out that to address the 8251 Uart on the Double disk controller i only need to address 2 ports, as the hardware takes care of settings and R/W and W/R hardware as far as i can tell. They are FE0AH for control port and FE02H for read and write data. I have editored a sample monitor that i found for the jade board, and it compiles on Z80asm under windows z80 emulator running cpm.
When I try to change the default address to use the double CPU, the compiler either crashes or errors, and if I change syntax and it actually works, the resulting Hex file is corrupt..
I believe the issue is the instructions are expecting a byte, but the address takes up 2 bytes? Anyone know how to get around fix this?
Thanks in advance....
This is the error message:
JADOR.Z80 - Byte Out of Range Line 01375
IN A,(KBDST)JADOR.Z80 - Byte Out of Range Line 01382
CONIN: IN A,(KBDST)End of file Pass 1
2 Error(s) Detected.
1984 Absolute Bytes. 161 Symbols Detected.
This is the changed code:
; CONTROL PORTS FOR MICROMATION DOUBLER
KDCONT: EQU 0FE0AH ; DOUBLER CONTROL PORT
KDRDWT: EQU 0FE02H ; DOUBLER WRITE PORT SELECTED BY WR / RD
CONOUT: PUSH AF ; push AF into stack
LD A,(KDCONT) ; Read from Control Port
AND 04H ; logical And tranmit ready 01h or 00000001 bin
JP Z,CONOUT+1 ; jump to address
POP AF ; POP FROM THE STACK BACK TO AF
LD (KDRDWT),A ; write to port A
RET ; Return
;
CONIN: LD A,(KDCONT)
AND 02H ; logical And recieve ready 02h or 00000002 bin
JP Z,CONIN
LD A,(KDRDWT) ; read from dataport into A
AND 7FH ; only chars up to 7F
CP 61H ; 'a' to '|' ? If so, A-=20H for capitalization
JP C,ECHO
CP 7CH
JP NC,ECHO
SUB 20H ;subtract
ECHO: CP 18H ; cancel character
JP Z,EXEC ; jump to Exec
sorry i am just teaching myself Assembly to repair this Micromation. I have worked out that to address the 8251 Uart on the Double disk controller i only need to address 2 ports, as the hardware takes care of settings and R/W and W/R hardware as far as i can tell. They are FE0AH for control port and FE02H for read and write data. I have editored a sample monitor that i found for the jade board, and it compiles on Z80asm under windows z80 emulator running cpm.
When I try to change the default address to use the double CPU, the compiler either crashes or errors, and if I change syntax and it actually works, the resulting Hex file is corrupt..
I believe the issue is the instructions are expecting a byte, but the address takes up 2 bytes? Anyone know how to get around fix this?
Thanks in advance....
This is the error message:
JADOR.Z80 - Byte Out of Range Line 01375
IN A,(KBDST)JADOR.Z80 - Byte Out of Range Line 01382
CONIN: IN A,(KBDST)End of file Pass 1
2 Error(s) Detected.
1984 Absolute Bytes. 161 Symbols Detected.
This is the changed code:
; CONTROL PORTS FOR MICROMATION DOUBLER
KDCONT: EQU 0FE0AH ; DOUBLER CONTROL PORT
KDRDWT: EQU 0FE02H ; DOUBLER WRITE PORT SELECTED BY WR / RD
CONOUT: PUSH AF ; push AF into stack
LD A,(KDCONT) ; Read from Control Port
AND 04H ; logical And tranmit ready 01h or 00000001 bin
JP Z,CONOUT+1 ; jump to address
POP AF ; POP FROM THE STACK BACK TO AF
LD (KDRDWT),A ; write to port A
RET ; Return
;
CONIN: LD A,(KDCONT)
AND 02H ; logical And recieve ready 02h or 00000002 bin
JP Z,CONIN
LD A,(KDRDWT) ; read from dataport into A
AND 7FH ; only chars up to 7F
CP 61H ; 'a' to '|' ? If so, A-=20H for capitalization
JP C,ECHO
CP 7CH
JP NC,ECHO
SUB 20H ;subtract
ECHO: CP 18H ; cancel character
JP Z,EXEC ; jump to Exec