Prints a character to the terminal. On entry, the char to be printed is on the stack and A holds TERMINAL_X. If the current line is up to the maximum width then we print a new line and update the terminal position. Then we print the character - to do this we loop until the device is ready to receive a char and then write it out.
| If terminal width reached then print new line. Note that NewLine returns with A=0, so TERMINAL_X gets reset properly. | ||||
| 036E | FE4E | OutChar_tail | CPI 48 | |
| 0370 | CC8A05 | CZ NewLine | ||
| 0373 | 3C | INR A | ||
| 0374 | 322700 | STA TERMINAL_X | ||
| Wait for terminal device to become ready for output. | ||||
| 0377 | DB00 | WaitTermReady | IN 00 | |
| 0379 | E680 | ANI 80 | ||
| 037B | C27703 | JNZ WaitTermReady | ||
| Get char off stack and write it out. | ||||
| 037E | F1 | POP PSW | ||
| 037F | D301 | OUT 01 | ||
| 0381 | C9 | RET | ||
Gets one char of input from the user.
| Firstly loop until device ready | ||||
| 0382 | DB00 | InputChar | IN 00 | |
| 0384 | E601 | ANI 01 | ||
| 0386 | C28203 | JNZ InputChar | ||
| Read char from IO bus, reset bit 7, and return. | ||||
| 0389 | DB01 | IN 01 | ||
| 038B | E67F | ANI 7F | ||
| 038D | C9 | RET | ||