0013H
Inputs a byte from an input device.
call:
LD DE,nnnn
address of DCB
CALL 0013H
;get byte
JP NZ,NRDY
;get byte

001BH
Outputs a byte to an output device.
call:
LD DE,nnnn
address of DCB
CALL 001BH
;put byte
JP NZ,NRDY
;output dev not ready

002BH
INKEY subroutine – scans keyboard. The data is not echoed on your screen. Note that calling 0358H instead will eliminate need to save DE.
call:
PUSH DE
save
CALL 002BH
;scan keyboard
POP DE
;restore
JP Z,NOKEY
;no key pressed
key is now in A

0033H
DISPLAY subroutine- prints character in A at current cursor position on video display. Cursor position is stored at 4020-4021. Note that calling 033AH instead will eliminate need to save DE.
call:
PUSH DE
save
LD HL,nnnn
;* optionally position cursor
LD (4020H),HL
;* before displaying byte
CALL 0033H
;dislay character
POP DE
;restore

003BH
LPRINT subroutine- prints character in A on line printer. Note that calling 039CH instead will eliminate need to save DE.
call:
PUSH DE
save
CALL 003BH
;print character
PNP DE
;restore
JP NZ,NRDY
;printer not ready

0049H
INPUT subroutine- scans keyboard and waits for key to be pressed. Note that calling 0384H instead will eliminate need to save DE.
call:
PUSH DE
save
CALL 0049H
;wait for key
POP DE
;restore

0060H
Delay loop in 14.66 microsecond increments. A value of 0 will be equal to .96 seconds.
call:
PUSH AF
;save
LD BC,nnnn
;number of delays
CALL 0060H
;delay a little
POP AF
;restore

0066H
NMI vector. Jumps here on non-maskable interrupt (ie. HALT or press of RESET button). Note- see 41BE.

0150H
SET, RESET, POINT graphics functions. You must make sure that the coordinates are within legal range.
call:
LD B,nn
x coordinate (0-127)
LD A,nn
;y coordinate (0-47)
LD H,nn
;POINT=00, RET=80H, RESET=01
CALL GRAPH
;B, A, and HL will be destroyed
LD A,(4121H)
;*if POINT was done
NR A
;*
JP Z,OFF
;* the point was off
JP ON
;* the point was on
.
.
.
GRAPH
PUSH HL
push indicator
PUSH BC
;push x coordinate
LD HL,DUMMY
;fake out BASIC’s RST8
JP 0150H
;go do the selected function
DUMMY
DEFM ');'
make believe this is a BASIC program

01C9H
CLS subroutine- homes cursor and clears screen.
call:
PUSH AF
save
CALL 01C9H
;cls
POP AF
;restore

02B2H
SYSTEM command- prints “*?” and waits for entry. When using the SYSTEM command, if your program machine language program has an ORG for 41BEH with a 3 byte instruction following, then that 3 byte instruction will be automaticly executed after your tape is finished loading. For example:
ORG 41BEH
JP 7000H
ORG 7000H
START
.
; first instruction of your program
.
.
END
START

02B2H
LINE INPUT subroutine- accepts a line of keyboard input terminated by ENTER or BREAK. Echoes characters typed and recognizes control functions (backspace, shift-backspace, etc.). None of these special characters ever get put into your buffer.
call:
PUSH DE
;save
LD B,nn
;maximum chars allowed to input
LD HL,nnnn
;address of buffer to store chars in
CALL 05D9H
;get a line of input
POP DE
;restore
JP C,BRK
;BREAK was hit
;B = number of characters typed including terminator
;C = original contents of B

06CCH
Ref 1A19.

0A7FH
Used to pass a 06-bit value to a machine language program.
call:
CALL 0A7FH
;get value from BASIC
;value now in HL

0A9AH
Used to pass a 16-bit value back to BASIC.
call:
D HL,nnnn
;get value to give BASIC
JP 0A9AH
at this point you’re back in BASIC with the value.

1A19H
Normal entry point for a READY in Level II or Disk BASIC. Note that it is better to jump to 06CCH because it does not cause an OM error on the first command that follows.

1BB2H
Prints “?”, inputs up to 241 characters from the keyboard and echoes characters typed. Data goes into BASIC’s input buffer. 0361H is the same as 1BB3H, less the prompt.
call:
PUSH AF
save
PUSH DE
CALL 1BB3H
;get input
POP DE
;restore
POP AF
;HL= points to 1st character minus 1

1D78H
(RST10H) Finds next non-blank character in a sting. It increments through string, ignoring spaces and control characters 9 and 10 (enters) and returns when the next non-blank character is encountered.
call:
LD HL,nnnn
start address of string minus 1
CALL 1D78H
;search string
A= non-blank character found
JP Z,END
;found a 00 byte (end of line)
or “:” (end of statement)
JP C,NBR
;got an ASCII numeric digit
JP ALPHA
;not a numeric digit

1E5AH
ASCII integer decimal to HEX converter.
call:
LD HL,nnnn
address of ASCII decimal num
CALL 1E5AH
;translate to HEX
DE= HEX result
HL= points to first non-decimal character

260DH
Point to the VARPTR of a variable. If the variable doesn’t exist then create it first.
call:
LD HL,nnnn
;point to ASCII variable name
CALL 260DH
;look for/create it
DE= points to VARPTR of the variable

28A7H
PRINT subroutine- prints a string of text on the video display, terminated by ENTER (13) or NULL (00), at current cursor position.
call:
PUSH DE
;save
PUSH IY
LD HL,nnnn
;address of text
CALL 28A7H
;display text
POP IY
;restore
POP DE