Micro­power

  

Volume 1, Number 4 – December 1981

Page 14 of 33
4F1528031280JR Z, OK; IF SO, END
4F17241290INC H; ADD 256 TO END
4F182E001300LD L,0; ZERO LOW BYTE
4F1A2283121310OKLD (TEXT), HL; STORE POINTER
4F1DDF5B1320SCAL 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;
30000130ORG £3000
0135;
0140; ROUTINES IN CRYSTAL BASIC 2.2
0145;
30002BF50150OVECEQU £2BF5; OUTPUT VECTOR+1
300027810160PRTHLEQU £2781; PRINT HL IN DEC.
300017610170INNUMEQU £1761; GET NUMBER
3000154C0180TSTCOMEQU £154C; SKIP COMMA
0185;
0190; MODIFIED OUTPUT ROUTINE WHICH CHECKS
0200; FOR A NEW LINE, AND THEN OUTPUTS THE
0210; NEXT LINE NUMBER
0215;
3000FE5D0220AOUTCP £5D; NEW LINE?
300220640230JR NZ, COUT; IF NOT, PRINT
3004F70240RST CRT; PRINT CHARACTER
3005222E300250LD (BUFFR), HL; SAVE POINTER
30082130300260LD HL, NOUT; CHANGE OUT. VECTOR
300B22F52B0270LD (OVEC), HL
300E2A2A300280LD HL, (INC); GET INCREMENT
3011EB0290EX DE, HL; INTO DE, AND LAST
30122A2C300300LD HL, (LAST); LINE NO. IN HL
3015D50310PUSH DE
3016E50320PUSH HL
3017CD81270330CALL PRTHL; HL TO SCREEN
301AE10340POP HL; AND TO BUFFER
301BD10350POP DE
301C190360ADD HL, DE; CALC. NEXT NO.
301D222C300370LD (LAST), HL; ANDSTOREITVN
30202100300380LD HL, AOUT; RESET VECTOR
302322F52B0390LD (OVEC), HL
30262A2E300400LD HL (BUFF); RESTORE POINTER
3029C90410RET; RETURN
0415;
0420; VARIABLE STORAGE
0425;
302A00020430INC DEFS 2; INCREMENT
Page 14 of 33