; ; ;* - - - - - - - - - - - - - - - - - - - - - * ;* * ;* - CPM-PEN - * ;* * ;* ROUTINE TO TRANSLATE CP/M FILES TO * ;* TO ELECTRIC PENCIL FORMAT * ;* (C) COPYRIGHT 1979 * ;* ROD HALLEN BOX 73 TOMBSTONE, AZ 85638 * ;* 26 JULY 1979 * ;* THIS PROGRAM MAY BE USED FREELY BY * ;* COMPUTER HOBBYISTS FOR NON-COMMERCIAL * ;* APPLICATIONS. IT MAY NOT BE USED FOR * ;* COMMERCIAL PURPOSES OR SOLD WITHOUT * ;* WRITTEN PERMISSION OF THE AUTHOR. * ;* * ;* ASSEMBLE WITH DIGITAL RESEARCH "MAC" * ;* ASSEMBLER AND SEQIO LIBRARY. INPUT * ;* FORMAT IS "CPM-PEN X.Y" AND OUTPUT * ;* FILE WILL ALWAYS BE "X.PCL". * ;* * ;* - - - - - - - - - - - - - - - - - - - - - * ; ; ; ORG 100H ; MACLIB SEQIO ;SEQUENTIAL I/O LIBRARY ; LXI H,0 ;SAVE OLD SP DAD SP ;AND SET UP NEW SP SHLD OLDSP LXI SP,NEWSP ; FILE INFILE,INF,,1,,1024 ;SETUP PENCIL INPUT FILE ; FILE OUTFILE,OUTF,,1,PCL,1024 ;SETUP CPM OUTPUT FILE ; MESS MES1 ;PRINT ACTIVITY MESSAGE ; CPMPN XRA A ;CLEAR ACCUMULATOR STA CPOS ;CLEAR CHAR POS COUNTER CPMP1 GET INF ;GET CHAR FROM INPUT FILE CPI 1AH ;CPM END OF FILE ? JZ DONE ;IF SO, TIME TO EXIT CPI 0AH ;IS IT END OF LINE ? JZ CPMPN ;IF SO, IGNORE AND START NEW LINE CPI 9 ;IS IT HORIZ TAB ? JZ EXTAB ;GOTO EXPANSION CALL OUTPT ;SEND IT LDA CPOS ;GET CHAR POS INR A ;INCREMENT IT STA CPOS ;STORE IT JMP CPMP1 ;NEXT CHARACTER ; DONE XRA A ;CLEAR ACCUMULATER CALL OUTPT ;SEND PENCIL EOF MESS MES2 ;PRINT COMPLETION MESSAGE FINIS OUTF ;CLOSE OUTPUT FILE LHLD OLDSP ;GET OLD STACK POINTER SPHL ;AND RESTORE IT RET ;RETURN TO CPM ; EXTAB MVI A,20H ;LOAD SPACE CALL OUTPT ;SEND IT LDA CPOS ;GET CHAR POSITION INR A ;INCREMENT IT STA CPOS ;STORE IT ANI 7 ;TAB COLUMN? JZ CPMP1 ;NEXT CHARACTER JMP EXTAB ;MORE SPACE ; OUTPT PUT OUTF ;SEND CHAR TO OUTPUT FILE RET ; OLDSP DS 2 ;STORAGE FOR OLD STACK POINTER DS 40H ;NEW STACK LOCATION NEWSP ;NEW STACK POINTER CPOS DB 0 ;CHARACTER POSITION STORAGE ; MES1 DB CR,LF,'CONVERTING CP/M FILE TO ELECTRIC PENCIL ' DB 'FORMAT . . . . .',CR,CR,LF,'$' MES2 DB CR,LF,'<--- CONVERSION COMPLETE --->',CR,LF,'$' ; BUFFERS ; END