home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug036.ark / CPM-PEN.ASM < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  3.0 KB  |  89 lines

  1. ;
  2. ;
  3. ;* - - - - - - - - - - - - - - - - - - - - - *
  4. ;*                                           *
  5. ;*               - CPM-PEN -                 *
  6. ;*                                           *
  7. ;*    ROUTINE TO TRANSLATE  CP/M FILES TO    *
  8. ;*         TO ELECTRIC PENCIL FORMAT         *
  9. ;*            (C) COPYRIGHT 1979             *
  10. ;* ROD HALLEN  BOX 73  TOMBSTONE, AZ  85638  *
  11. ;*               26 JULY 1979                *
  12. ;*    THIS PROGRAM MAY BE USED FREELY BY     *
  13. ;*   COMPUTER HOBBYISTS FOR NON-COMMERCIAL   *
  14. ;*   APPLICATIONS.  IT MAY NOT BE USED FOR   *
  15. ;*    COMMERCIAL PURPOSES OR SOLD WITHOUT    *
  16. ;*     WRITTEN PERMISSION OF  THE AUTHOR.    *
  17. ;*                                           *
  18. ;*    ASSEMBLE WITH DIGITAL RESEARCH  "MAC"  *
  19. ;*     ASSEMBLER AND SEQIO LIBRARY.  INPUT   *
  20. ;*     FORMAT IS  "CPM-PEN X.Y" AND OUTPUT   *
  21. ;*         FILE WILL ALWAYS BE "X.PCL".      *
  22. ;*                                           *
  23. ;* - - - - - - - - - - - - - - - - - - - - - *
  24. ;
  25. ;
  26. ;
  27.         ORG     100H
  28. ;
  29.         MACLIB  SEQIO   ;SEQUENTIAL I/O LIBRARY
  30. ;
  31.         LXI     H,0     ;SAVE OLD SP
  32.         DAD     SP      ;AND SET UP NEW SP
  33.         SHLD    OLDSP
  34.         LXI     SP,NEWSP
  35. ;
  36. FILE    INFILE,INF,,1,,1024     ;SETUP PENCIL INPUT FILE
  37. ;
  38. FILE    OUTFILE,OUTF,,1,PCL,1024   ;SETUP CPM OUTPUT FILE
  39. ;
  40.         MESS    MES1    ;PRINT ACTIVITY MESSAGE
  41. ;
  42. CPMPN   XRA     A       ;CLEAR ACCUMULATOR
  43.         STA     CPOS    ;CLEAR CHAR POS COUNTER
  44. CPMP1   GET     INF     ;GET CHAR FROM INPUT FILE
  45.         CPI     1AH     ;CPM END OF FILE ?
  46.         JZ      DONE    ;IF SO, TIME TO EXIT
  47.         CPI     0AH     ;IS IT END OF LINE ?
  48.         JZ      CPMPN   ;IF SO, IGNORE AND START NEW LINE
  49.         CPI     9       ;IS IT HORIZ TAB ?
  50.         JZ      EXTAB   ;GOTO EXPANSION
  51.         CALL    OUTPT   ;SEND IT
  52.         LDA     CPOS    ;GET CHAR POS
  53.         INR     A       ;INCREMENT IT
  54.         STA     CPOS    ;STORE IT
  55.         JMP     CPMP1   ;NEXT CHARACTER
  56. ;
  57. DONE    XRA     A       ;CLEAR ACCUMULATER
  58.         CALL    OUTPT   ;SEND PENCIL EOF
  59.         MESS    MES2    ;PRINT COMPLETION MESSAGE
  60.         FINIS   OUTF    ;CLOSE OUTPUT FILE
  61.         LHLD    OLDSP   ;GET OLD STACK POINTER
  62.         SPHL            ;AND RESTORE IT
  63.         RET             ;RETURN TO CPM
  64. ;
  65. EXTAB   MVI     A,20H     ;LOAD SPACE
  66.         CALL    OUTPT   ;SEND IT
  67.         LDA     CPOS    ;GET CHAR POSITION
  68.         INR     A       ;INCREMENT IT
  69.         STA     CPOS    ;STORE IT
  70.         ANI     7       ;TAB COLUMN?
  71.         JZ      CPMP1   ;NEXT CHARACTER
  72.         JMP     EXTAB   ;MORE SPACE
  73. ;
  74. OUTPT   PUT     OUTF    ;SEND CHAR TO OUTPUT FILE
  75.         RET
  76. ;
  77. OLDSP   DS      2       ;STORAGE FOR OLD STACK POINTER
  78.         DS      40H     ;NEW STACK LOCATION
  79. NEWSP                   ;NEW STACK POINTER
  80. CPOS    DB      0       ;CHARACTER POSITION STORAGE
  81. ;
  82. MES1    DB      CR,LF,'CONVERTING CP/M FILE TO ELECTRIC PENCIL '
  83.         DB      'FORMAT . . . . .',CR,CR,LF,'$'
  84. MES2    DB      CR,LF,'<--- CONVERSION COMPLETE --->',CR,LF,'$'
  85. ;
  86. BUFFERS
  87. ;
  88.         END
  89.