home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
norge.freeshell.org (192.94.73.8)
/
192.94.73.8.tar
/
192.94.73.8
/
pub
/
computers
/
cpm
/
alphatronic
/
PASCALZ4.ZIP
/
D3
/
PSTAT.SRC
< prev
next >
Wrap
Text File
|
1999-04-05
|
1KB
|
58 lines
;PRINTS STATEMENT NUMBER IF TRACES OR EXT.ERROR MESSAGES ON
;
NAME PSTAT
ENTRY .PSTAT,.DIGIT
EXT .STMTMSG,.TXTYP,.CO,.CRLF
;
MODMSG: DBS ' -- Module '
.PSTAT: PUSH H ;SAVE HEAP POINTER
LXI H,MODMSG ;PRINT ' -- Module ';
PUSH B ;STATEMENT NUMBER -> HL
CALL .TXTYP
POP H
PUSH H
MOV A,H ;GET BYTE WITH THE HIGH FOUR BITS
ANI 0F0H ;ELIMINATE LOW FOUR BITS
RAR
RAR ;MOVE 4 HIGH BITS INTO 4 LOW BITS
RAR
RAR
MOV L,A ;INTO L REGISTER
XRA A
MOV H,A ;ZERO H REGISTER
LXI D,10 ;DO TENS DIGIT
CALL .DIGIT
LXI D,1 ;DO ONES DIGIT
CALL .DIGIT
POP H ;STMT NUMBER
PUSH H
MOV A,H ;ELIMINATE MODULE # FROM STMT NUMBER
ANI 0FH
MOV H,A
PUSH H
LXI H,.STMTMSG ;PRINT ', statement '
CALL .TXTYP
POP H
LXI D,1000 ;DO THOUSANDS .DIGIT
CALL .DIGIT
LXI D,100 ;DO HUNDREDS .DIGIT
CALL .DIGIT
LXI D,10 ;DO TENS .DIGIT
CALL .DIGIT
LXI D,1 ;DO ONES .DIGIT
CALL .DIGIT
LXI H,.CRLF ;POINT TO CRLF
CALL .TXTYP ;PRINT IT
POP B ;RESTORE STATEMENT NUMBER
POP H ;RESTORE HEAP POINTER
XRA A ;CLEAR ACC
RET
;
.DIGIT: MVI C,'0'-1 ;INITIALIZE ASCII COUNTER
XRA A ;CLEAR CARRY
DIG1: INR C ;BUMP COUNTER
DSBC D ;TRY ANOTHER SUBTRACTION
JRNC DIG1 ;KEEP IT UP WHILE POSITIVE RESULT
DAD D ;ELSE MAKE RESULT +IVE
JMP .CO ;PRINT CHAR AND RETURN TO CALLER