home *** CD-ROM | disk | FTP | other *** search
/ A.N.A.L.O.G. Magazine 1987 March / 87_mar.atr / dumpmate.ama < prev    next >
Text File  |  2023-02-26  |  3KB  |  1 lines

  1. ¢      ORG 1536¢; ***************************¢; *   DUMPMATE M-L UTILITY  *¢; *  used to process screen *¢; *   memory for printing   *¢; *   with the Okimate 10   *¢; * printer and the Dumpmate*¢; *      BASIC program      *¢; *   revision of 9/23/85   *¢; *   by Arthur F. Horan    *¢; ***************************¢;¢;¢;Equates:¢ROWCRS   = 84; Y-coordinate¢COLCRS   = 85; x-coordinate¢PRINT    = 203; pointer to PRINT$¢PBL      = 205; stores processed screen data - low byte¢PBH      = 206; screen data - hi byte¢SAVMSC   = 88; start of screen memory¢SHIFT    = 207; shift factor¢LAST     = 216; flag for column 0¢SCREENAD = 212;pointer to screen byte¢NOLFT    = 214;flag for sh. direction¢OFFSET   = 215; for current line dump¢CIOV     = 58454; vector to CIO¢;Program starts here¢     CLD¢     PLA     ;discard # arguments¢     PLA     ;pull hi-byte of PRYNT$¢     STA PRINT+1 ;and save¢     PLA     ;now get lo-byte¢     STA PRINT ;save it too¢;¢;Initialize variables¢     LDA #0¢     STA OFFSET¢     STA SHIFT¢     STA NOLFT¢     STA LAST¢;¢;Check if column 0¢     LDA COLCRS+1¢     BNE GETOFF¢     LDA COLCRS¢     BNE GETOFF¢     INC LAST ;yes, set flag¢;¢;Loop to get offset¢GETOFF LDY #3¢DIV8 LSR COLCRS+1; (divide x-position¢     ROR COLCRS ;by 8 for offset into¢     ROR OFFSET ;screen mem and save¢     DEY     ;remainder as offset¢;             into lo-byte¢     BNE DIV8 ;of 7-bit pixel array¢;¢;Now right-justify remainder¢     LDY #5¢JUST LSR OFFSET¢     DEY¢     BNE JUST¢;¢;Initialize shift factor according to¢;bit-offset of cursor position in¢;screen¢INSH LDA OFFSET¢     BNE OF1¢     LDA #1¢     STA SHIFT¢     STA NOLFT¢     BNE PROCESS¢OF1  LDA OFFSET¢     STA SHIFT¢     DEC SHIFT¢;¢; Now process screen bytes¢;¢PROCESS LDA SAVMSC ;set up pointer¢     CLC¢     ADC COLCRS¢     STA SCREENAD¢     LDA SAVMSC+1¢     ADC #0¢     STA SCREENAD+1¢;¢;Loop through a vertical "STRIPE" of¢;screen & process it for printing¢GBYTE LDY #0¢     LDA (SCREENAD),Y¢     STA PBL ;get pic-byte lo¢     INY;¢     LDA (SCREENAD),Y¢     STA PBH ;& pic-byte hi¢     LDA NOLFT ;shift right?¢     BEQ SH2 ;no, so skip ahead¢     LSR PBL ;shift right one bit¢     LDA PBL¢     CLC     ;force branch¢     BCC FILBUF¢;¢SH2  LDY SHIFT ;shift 7-bit field¢;               left according¢     BEQ NOSH ;to calculated factor¢;¢DOSHL ASL PBH ;shift hi-byte¢     ROL PBL  ;and rotate lo-byte¢     DEY¢     BNE DOSHL ¢;¢NOSH LDA PBL¢     AND #127 ;mask out bit 7¢;¢;Fill buffer string with¢;processed byte¢FILBUF NOP     ;padding to allow¢;               later¢     NOP     ;modification for¢;             reverse printing¢     LDY ROWCRS¢     LDX LAST¢     BEQ FILL  ;handle last stripe?¢     LSR A¢     LSR A   ;yes, so shift¢FILL STA (PRINT),Y ;fill PRINT$¢     LDA #40 ;set pointer to next¢     CLC¢     ADC SCREENAD ;screen row¢     STA SCREENAD¢     LDA #0¢     ADC SCREENAD+1¢     STA SCREENAD+1¢     INY¢     STY ROWCRS¢     CPY #192 ;done?¢     BNE GBYTE ;no, go back.¢     DEC ROWCRS¢     RTS ;That's it!¢