4F15 | 2803 | 1280 | | JR Z, OK | ; IF SO, END |
4F17 | 24 | 1290 | | INC H | ; ADD 256 TO END |
4F18 | 2E00 | 1300 | | LD L,0 | ; ZERO LOW BYTE |
4F1A | 228312 | 1310 | OK | LD (TEXT), HL | ; STORE POINTER |
4F1D | DF5B | 1320 | | SCAL MRET | ; RETURN TO MONITOR |
– –
– –
– –
– –
– –
– –
– –
– –
The first example of an added command is a routine which provides automatic line
numbering. The listing of this routine is followed by a demonstration of the entry of the
corresponding machine code using the loader program.
| | 0090 | ; |
| | 0100 | ; ************************************************ |
| | 0110 | ; ** AUTO LINE NUMBER BY D. ELLIOT ** |
| | 0120 | ; ************************************************ |
| | 0125 | ; |
3000 | | 0130 | | ORG £3000 | |
| | 0135 | ; |
| | 0140 | ; ROUTINES IN CRYSTAL BASIC 2.2 |
| | 0145 | ; |
3000 | 2BF5 | 0150 | OVEC | EQU £2BF5 | ; OUTPUT VECTOR+1 |
3000 | 2781 | 0160 | PRTHL | EQU £2781 | ; PRINT HL IN DEC. |
3000 | 1761 | 0170 | INNUM | EQU £1761 | ; GET NUMBER |
3000 | 154C | 0180 | TSTCOM | EQU £154C | ; SKIP COMMA |
| | 0185 | ; |
| | 0190 | ; MODIFIED OUTPUT ROUTINE WHICH CHECKS |
| | 0200 | ; FOR A NEW LINE, AND THEN OUTPUTS THE |
| | 0210 | ; NEXT LINE NUMBER |
| | 0215 | ; |
3000 | FE5D | 0220 | AOUT | CP £5D | ; NEW LINE? |
3002 | 2064 | 0230 | | JR NZ, COUT | ; IF NOT, PRINT |
3004 | F7 | 0240 | | RST CRT | ; PRINT CHARACTER |
3005 | 222E30 | 0250 | | LD (BUFFR), HL | ; SAVE POINTER |
3008 | 213030 | 0260 | | LD HL, NOUT | ; CHANGE OUT. VECTOR |
300B | 22F52B | 0270 | | LD (OVEC), HL | |
300E | 2A2A30 | 0280 | | LD HL, (INC) | ; GET INCREMENT |
3011 | EB | 0290 | | EX DE, HL | ; INTO DE, AND LAST |
3012 | 2A2C30 | 0300 | | LD HL, (LAST) | ; LINE NO. IN HL |
3015 | D5 | 0310 | | PUSH DE | |
3016 | E5 | 0320 | | PUSH HL | |
3017 | CD8127 | 0330 | | CALL PRTHL | ; HL TO SCREEN |
301A | E1 | 0340 | | POP HL | ; AND TO BUFFER |
301B | D1 | 0350 | | POP DE | |
301C | 19 | 0360 | | ADD HL, DE | ; CALC. NEXT NO. |
301D | 222C30 | 0370 | | LD (LAST), HL | ; ANDSTOREITVN |
3020 | 210030 | 0380 | | LD HL, AOUT | ; RESET VECTOR |
3023 | 22F52B | 0390 | | LD (OVEC), HL | |
3026 | 2A2E30 | 0400 | | LD HL (BUFF) | ; RESTORE POINTER |
3029 | C9 | 0410 | | RET | ; RETURN |
| | 0415 | ; |
| | 0420 | ; VARIABLE STORAGE |
| | 0425 | ; |
302A | 0002 | 0430 | | INC DEFS 2 | ; INCREMENT |