@@ -315,8 +315,8 @@ conout:
315315 call bank_switch_on ;[f3bf]
316316 ret ;[f3c2]
317317
318- ld hl , ( $ bff8) ;[f3c3] 2a f8 bf
319- jp (hl) ;[f3c6] e9
318+ ld hl , ( $ bff8) ;[f3c3] Handle accented letters (relocated SLF80037.COM code)
319+ jp (hl) ;[f3c6]
320320
321321; Paper tape punch output
322322; Write the character in C to the "paper tape punch" - or whatever the current
@@ -361,29 +361,29 @@ label_f3e2:
361361list:
362362 ld hl , $ 0000 ;[f3e6] big TODO, which printer??
363363 ld ( $ f471) , hl ;[f3e9]
364- ld a , ( $ 0003 ) ;[f3ec]
365- cp $ 81 ;[f3ef]
366- call z , $ f3ab ;[f3f1]
364+ ld a , ( $ 0003 ) ;[f3ec] Fetch IOBYTE
365+ cp $ 81 ;[f3ef] Check for LST=LPT, PUN=TTY, RDR=TTY, CON=CRT
366+ call z , $ f3ab ;[f3f1] in this case, just CONOUT
367367label_f3f4:
368- ld a , ( $ 0003 ) ;[f3f4]
368+ ld a , ( $ 0003 ) ;[f3f4] Fetch IOBYTE
369369 rlc a ;[f3f7]
370370 rlc a ;[f3f9]
371- and $ 03 ;[f3fb]
371+ and $ 03 ;[f3fb] Mask LST only
372372 or a ;[f3fd]
373- jr z , label_f408 ;[f3fe]
373+ jr z , label_f408 ;[f3fe] LST=0 - CONOUT
374374 dec a ;[f400]
375- jr z , label_f40b ;[f401]
375+ jr z , label_f40b ;[f401] LST=1 - just return
376376 dec a ;[f403]
377- jr z , label_f40c ;[f404]
378- jr label_f432 ;[f406]
377+ jr z , label_f40c ;[f404] LST=2
378+ jr label_f432 ;[f406] LST=3
379379label_f408:
380380 jp $ f3ab ;[f408]
381381label_f40b:
382382 ret ;[f40b]
383383
384384label_f40c:
385385 in a , ( $ 82 ) ;[f40c]
386- bit 7 , a ;[f40e]
386+ bit 7 , a ;[f40e] Read "C7" register, printer port
387387 jr z , label_f432 ;[f410]
388388 ld hl , ( $ f471) ;[f412]
389389 dec hl ;[f415]
@@ -392,15 +392,15 @@ label_f40c:
392392 or l ;[f41a]
393393 jr nz , label_f3f4 ;[f41b]
394394 xor a ;[f41d]
395- out ( $ da) , a ;[f41e]
396- call $ f368 ;[f420]
395+ out ( $ da) , a ;[f41e] beep...
396+ call $ f368 ;[f420] CONST, check if a character is ready
397397 or a ;[f423]
398- jr z , label_f3f4 ;[f424]
399- call $ f372 ;[f426]
400- cp $ 1a ;[f429]
401- jr nz , label_f3f4 ;[f42b]
398+ jr z , label_f3f4 ;[f424] if no char is ready, start back
399+ call $ f372 ;[f426] CONIN, fetch char
400+ cp $ 1a ;[f429] check if key is not SUB
401+ jr nz , label_f3f4 ;[f42b] then start back
402402 xor a ;[f42d]
403- ld ( $ 0003 ) , a ;[f42e]
403+ ld ( $ 0003 ) , a ;[f42e] else reset IOBYTE
404404 ret ;[f431]
405405
406406label_f432:
@@ -410,23 +410,24 @@ label_f432:
410410 call $ f6b0 ;[f438]
411411label_f43b:
412412 call bank_switch_off ;[f43b]
413- call $ f3c3 ;[f43e]
413+ call $ f3c3 ;[f43e] accented letters handler
414414 call bank_switch_on ;[f441]
415415 jr z , label_f44e ;[f444]
416416 push bc ;[f446]
417417 ld c , a ;[f447]
418- call $ f44e ;[f448]
418+ call label_f44e ;[f448] print out this char
419419 pop bc ;[f44b]
420420 jr label_f43b ;[f44c]
421+
421422label_f44e:
422- ld a , ( $ 0003 ) ;[f44e]
423- and $ c0 ;[f451]
423+ ld a , ( $ 0003 ) ;[f44e] read IOBYTE
424+ and $ c0 ;[f451] take LST
424425 cp $ c0 ;[f453]
425- jp z , $ f3c7 ;[f455]
426+ jp z , $ f3c7 ;[f455] if LST=3, jump
426427 ld a , c ;[f458]
427- out ( $ 80 ) , a ;[f459]
428- out ( $ d0) , a ;[f45b]
429- out ( $ d2) , a ;[f45d]
428+ out ( $ 80 ) , a ;[f459] output the char on PA (parallel port bits)
429+ out ( $ d0) , a ;[f45b] printer handshake set
430+ out ( $ d2) , a ;[f45d] printer handshake reset
430431 ret ;[f45f]
431432
432433 ld a , $ 01 ;[f460]
0 commit comments