1 ' see  PC Magazine  Volume 1 Number 3  june/july 1982
10 REM program serial.  used to fakeout PC to allow use of serial printer in the                        same way the Print Screen function works for a parallel
20 '
30 ' It seems that in order for this program to run you must have the serial         cable connected to a printer or modem that is TURNED ON.  Otherwise the         open COMLINE$ in line 220 wont open.
40 '
50 ' Baud rates in line 220 can ONLY be 75, 110, 150, 300, 600, 1200, 1800, 2400     4800, or 9600
60 '
70 ' After running this program, you must exit to the system (DONT BOOT), then       re-enter BASIC for basic to recognize the new parameters.
80 '
90 'LLIST  and LPRINT  will work ;  and when you use the SYSTEM command to          return to DOS, Control PrtSc & up-shift PrtSc are enabled in PC-DOS rev 1.0     you could AUTOEXEC.BAT this routine ie..  1) DATE  2)BASIC SERIAL  3)BASIC
100 '
110 CLS:COLOR 0,7:PRINT TAB(32);"PROGRAM SERIAL";TAB(79):COLOR 7,0:LOCATE 3,1:      PRINT "Make sure your serial printer is connected to the Async RS-232 port":    PRINT "and the printer in turned on and `ON-LINE' ie. not in `local' mode"
115 REM
120 LOCATE 8,1:PRINT "Please enter the baud rate at which":PRINT "you wish to send data to the serial printer";TAB(79):PRINT SPC(79):PRINT "(baud rate can only be :  75,110,150,300,600,1200,1800,2400,4800,9600)";TAB(79);
130 LOCATE 9,50:LINE INPUT;"? ";BAUD$:BAUD$=LEFT$(BAUD$,4):IF BAUD$="" THEN BAUD!=300 :GOTO 200  ELSE BAUD!=VAL(BAUD$)
140 IF BAUD!=  75 OR BAUD!= 110 THEN 200
150 IF BAUD!= 150 OR BAUD!= 300 THEN 200
160 IF BAUD!= 600 OR BAUD!=1200 THEN 200
170 IF BAUD!=1800 OR BAUD!=2400 THEN 200
180 IF BAUD!=4800 OR BAUD!=9600 THEN 200
190 SOUND 45,12:GOTO 120  'illegal baud rate, re-enter
200 COMLINE$="COM1:"+STR$(BAUD!)+",N,8,1"
210 COMLINE$=LEFT$(COMLINE$,5)+MID$(COMLINE$,7)   ' to remove imbedded space                                                        after colen
220 OPEN COMLINE$ AS #1
230 WIDTH "com1:",80
240 DEF SEG=&H60
250 POKE &HD, &H40  'dos parallel printer vector change
260 POKE &HE, &H1
270 DEF SEG=&H40
280 POKE &H8, &HF8  'tell basic that there is a printer
290 POKE &H9, &H3
300 DEF SEG=&H0 : POKE &H100, &HFB  'restore the flages
310 REM an inconsistency exists in the rom bios concerning the meaning of the AH        register in the RS232 and the Parallel port subroutines therefore the           following line
320 POKE &H101, &HB4 : POKE &H102, &H1
330 REM  the next three lines simulate the printer port interrupt vector
340 POKE &H103, &HEA : POKE &H104, &H39
350 POKE &H105, &HE7 : POKE &H106, &H0
360 POKE &H107, &HF0
370 REM  now tell the interrupt handler to jump to  100H  for its new                    instruction sequence
380 POKE &H5C, &H0 : POKE &H5D, &H1
390 POKE &H5E, &H0 : POKE &H5F, &H0
400 CLS:BEEP:LOCATE 4,10:PRINT "The new parameters for serial printer operation  at";BAUD!;"baud":LOCATE,10:PRINT"have been set;": LOCATE 7,10:PRINT "Re-enter basic and use        up-shift PrtSc    in BASIC.":LOCATE 9,40:PRINT "up-shift or"
410 LOCATE ,40:PRINT"Control PrtSc     in PC-DOS":LOCATE ,61:PRINT "as required";:LOCATE 15,1
420 SYSTEM
4800 , OR 9600
r"
410 LOCATE ,40:PRINT"Control PrtSc     in PC-DOS":LOCATE ,61:PRINT "as required";:LOCATE 15,1
420