
 1000  *SAVE S.SCREEN PRINTER.PLUS
 1010  *--------------------------------
 1020  *      INSTANT HARDCOPY PROGRAM
 1030  *      BY ULF SCHLICHTMANN
 1040  *--------------------------------
 1050  SLOT   .EQ 1
 1060  BASL   .EQ $28
 1070  VLINE  .EQ $FC
 1080  *--------------------------------
 1090  FLAGS      .EQ $7F8
 1100  DOS.REHOOK .EQ $03EA
 1110  MON.VTAB   .EQ $FC22
 1120  MON.VTABZ  .EQ $FC24
 1130  MON.PR     .EQ $FE95
 1140  MON.CROUT  .EQ $FD8E
 1150  MON.COUT   .EQ $FDED
 1160  MON.SETVID .EQ $FE93
 1170  MON.DASH   .EQ $FD9E
 1180  *--------------------------------
 1190         .OR $300
 1200  HCOPY  LDA #SLOT    SET UP OUTPUT VECTOR
 1210         JSR MON.PR   TO POINT AT PRINTER
 1220         JSR MON.CROUT     START A NEW LINE
 1230         LDA FLAGS+SLOT
 1240         AND #$BF
 1250         STA FLAGS+SLOT
 1260         JSR DASH.LINE
 1270         LDX #0       START AT TOP OF SCREEN
 1280  .1     TXA
 1290         JSR MON.VTABZ   COMPUTE BASE ADDRESS
 1300         LDA #VLINE
 1310         JSR MON.COUT
 1320         LDY #0       START IN COLUMN 1
 1330  .2     LDA (BASL),Y NEXT CHARACTER FROM THIS LINE
 1340         ORA #$80     BE SURE IN RANGE FOR PRINTING
 1350         CMP #$A0
 1360         BCS .3
 1370         LDA #$A0     PRINT SPACE IN PLACE OF ILLEGALS
 1380  .3     JSR MON.COUT
 1390         INY
 1400         CPY #40      END OF LINE YET?
 1410         BNE .2       NO
 1420         LDA #VLINE
 1430         JSR MON.COUT
 1440         JSR MON.CROUT
 1450         INX          NEXT LINE
 1460         CPX #24      END OF SCREEN YET?
 1470         BNE .1       NO
 1480         JSR DASH.LINE
 1490         JSR MON.VTAB RE-ESTABLISH CURSOR POSITION
 1500         JSR MON.SETVID
 1510         JMP DOS.REHOOK
 1520  *--------------------------------
 1530  DASH.LINE
 1540         LDY #42
 1550  .1     JSR MON.DASH
 1560         DEY
 1570         BNE .1
 1580         JMP MON.CROUT
 1590  *--------------------------------

