2018-06-24 14:09:41 +00:00
|
|
|
PrinterReceive::
|
2016-05-27 14:41:59 +00:00
|
|
|
homecall _PrinterReceive
|
2015-12-15 23:59:49 +00:00
|
|
|
|
|
|
|
ret
|
|
|
|
|
2018-06-24 14:09:41 +00:00
|
|
|
AskSerial::
|
2013-09-09 03:53:04 +00:00
|
|
|
; send out a handshake while serial int is off
|
2016-05-11 21:16:03 +00:00
|
|
|
ld a, [wPrinterConnectionOpen]
|
2013-09-09 03:53:04 +00:00
|
|
|
bit 0, a
|
|
|
|
ret z
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2016-05-11 21:16:03 +00:00
|
|
|
; if we're still interpreting data, don't try to receive
|
|
|
|
ld a, [wPrinterOpcode]
|
2013-09-09 03:53:04 +00:00
|
|
|
and a
|
|
|
|
ret nz
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
; once every 6 frames
|
2016-05-11 21:16:03 +00:00
|
|
|
ld hl, wHandshakeFrameDelay
|
2013-09-09 03:53:04 +00:00
|
|
|
inc [hl]
|
|
|
|
ld a, [hl]
|
|
|
|
cp 6
|
|
|
|
ret c
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
xor a
|
|
|
|
ld [hl], a
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2016-05-11 21:16:03 +00:00
|
|
|
ld a, 12
|
|
|
|
ld [wPrinterOpcode], a
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
; handshake
|
|
|
|
ld a, $88
|
2018-08-25 18:28:22 +00:00
|
|
|
ldh [rSB], a
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
; switch to internal clock
|
2019-05-05 16:14:46 +00:00
|
|
|
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
|
2018-08-25 18:28:22 +00:00
|
|
|
ldh [rSC], a
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
; start transfer
|
2019-05-05 16:14:46 +00:00
|
|
|
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
|
2018-08-25 18:28:22 +00:00
|
|
|
ldh [rSC], a
|
2016-04-10 18:42:14 +00:00
|
|
|
|
2013-09-09 03:53:04 +00:00
|
|
|
ret
|