Skip to content

Commit bcbb1cf

Browse files
committed
bios: added more comments to the code
1 parent cabdc13 commit bcbb1cf

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

cpm_bios.asm

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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:
361361
list:
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
367367
label_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
379379
label_f408:
380380
jp $f3ab ;[f408]
381381
label_f40b:
382382
ret ;[f40b]
383383

384384
label_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

406406
label_f432:
@@ -410,23 +410,24 @@ label_f432:
410410
call $f6b0 ;[f438]
411411
label_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+
421422
label_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

Comments
 (0)