; ; SYSLIB Module Name: SPADC ; Author: Richard Conn ; SYSLIB Version Number: 2.0 ; Module Version Number: 1.0 ; Module Entry Points: ; PA3DC PADC ; Module External References: ; COUT ; ; ; PA3DC -- ; PRINT REG A AS 3 DECIMAL CHARACTERS ; EXT COUT PA3DC:: PUSH PSW ; SAVE A PUSH PSW XRA A ; TURN OFF LEADING FLAG STA LSFLG JMP PADC1 ; ; PADC -- ; PRINT REG A AS DECIMAL CHARACTERS W/LEADING IN 3-CHAR FIELD ; PADC:: PUSH PSW ; SAVE A PUSH PSW MVI A,1 ; TURN ON LEADING FLAG STA LSFLG ; PRINT ROUTINE PADC1: POP PSW ; GET A PUSH B ; SAVE BC MVI B,100 ; PRINT HUNDREDS CALL PAC ; PRINT A CHAR MVI B,10 ; PRINT TENS CALL PAC ADI '0' ; CONVERT TO ASCII CALL COUT ; PRINT POP B ; RESTORE BC POP PSW ; RESTORE A RET ; BUFFER LSFLG: DS 1 ; LEADING FLAG ; PRINT RESULT OF DIVISION OF A BY B W/LEADING (INTEGER DIVISION) PAC: MVI C,0 ; SET COUNT PACL: SUB B ; COMPUTE COUNT JC PACD INR C ; INCR COUNT JMP PACL PACD: ADD B ; ADD B BACK IN PUSH PSW ; SAVE A MOV A,C ; GET COUNT ORA A ; ZERO? JNZ PACD1 LDA LSFLG ; CHECK FOR LEADING ORA A ; 0 MEANS NO JZ PACD1 MVI A,' ' ; PRINT CALL COUT POP PSW ; RESTORE A RET PACD1: XRA A ; A=0 STA LSFLG ; TURN OFF LEADING FLAG MOV A,C ; GET COUNT ADI '0' ; CONVERT TO DECIMAL CALL COUT ; PRINT IT POP PSW ; RESTORE A RET END