Listing of file='GENHDR.MAC;0B' on disk='vmedia/printer_pkg_src-sideB-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; GENERATE A HEADER FOR A PRINT FILE ; ; VALUES ON ENTRY: ; A - DRIVE NUMBER ON WHICH FILE RESIDES ; BC => BUFFER FOR DIRECTORY READ ; DE => FPB ; HL => BUFFER FOR HEADER MESSAGE ; ; DESTROYS: ; ALL REGISTERS ; ; RETURNS: ; HL => LAST BYTE OF HEADER MESSAGE ; TITLE GENHDR EXTRN FCS EXTRN GTTIME,GTDATE EXTRN HEXOUT EXTRN LINLEN ; SPECIAL CONTROL CHARACTERS LF EQU 10 FF EQU 12 CR EQU 13 ESC EQU 27 SPACE EQU 32 ENTRY GENHDR GENHDR: ADI '0' ;SET DRIVE NUMBER STA DRIVE SHLD HDRPTR ;SAVE POINTERS TO HEADER MSG XCHG SHLD FNPTR ; AND FILE NAME PUSH B ;GENERATE ADDRESS FOR FCS MOV A,B ; READ COMMAND LXI H,RDADR CALL HEXOUT MOV A,C LXI H,RDADR+2 CALL HEXOUT LXI H,VOLMSG CALL FCS ;READ VOLUME NAME OFF DISK POP D ;COPY VOLUME NAME TO THE LHLD HDRPTR ; HEADER MESSAGE INX D INX D INX D MVI B,10 MVI C,0 MOVVOL: LDAX D CPI 32 ;IGNORE CONTROL CHRS - THEY JC SKPCHR ; ARE PROBABLY COLOR CODES MOV M,A INR C ;COUNT THE NO. CHRS IN HEADER INX H SKPCHR: INX D DCR B JNZ MOVVOL MVI A,SPACE ;CHOP OFF TRAILING SPACES DCX H TRIM: DCR C CMP M DCX H JZ TRIM INR C INX H INX H MVI M,'>' ;ADD '>' TO THE VOLUME NAME INR C INX H XCHG LHLD FNPTR XCHG INX D INX D MVI B,6 MOVFN: LDAX D ;COPY THE FILE NAME TO THE CPI ' ' ; HEADER MESSAGE TOO JZ SKPSPC MOV M,A INR C INX H SKPSPC: INX D DCR B JNZ MOVFN ENDFN: MVI M,'.' ;ADD A PERIOD INR C INX H MVI B,3 ; AND THE FILE TYPE MOVFT: LDAX D MOV M,A INR C INX D INX H DCR B JNZ MOVFT MVI M,';' ;ADD SEMICOLON INR C INX H LDAX D CALL HEXOUT ; AND VERSION NUMBER INR C INR C INX H MVI M,SPACE ;TWO SPACES INR C INX H MVI M,SPACE INR C PUSH B CALL GTTIME ;PUT THE TIME IN HEADER POP B MOV A,C ADI 8 MOV C,A MVI M,SPACE INR C PUSH B CALL GTDATE ; AND THE DATE POP B MOV A,C ADI 8 MOV C,A LDA LINLEN ;CALCULATE SPACE LEFT ON LINE SUB C JM TOOBAD JZ TOOBAD SUI 8 ;LEAVE ROOM FOR PAGE NO. JM TOOBAD JZ TOOBAD FILL: MVI M,SPACE ;PAD WITH SPACES INX H DCR A JNZ FILL TOOBAD: XRA A MOV M,A ;MARK END OF HEADER MSG RET ;.............................................................. ; ; MESSAGES VOLMSG: DB 'READ CD' DRIVE: DB '0' DB ': 0,' RDADR: DB 'A000,80',0 ; DATA AREA HDRPTR: DS 2 FNPTR: DS 2 END