cgs@umd5.umd.edu (Chris G. Sylvain) (03/19/89)
; What this program does: ; ---------------------- ; ; SWAPPORT.COM swaps the I/O port numbers for LPT1 and LPT2. After running ; the first time, DOS will use LPT2 when LPT1 or PRN is specified, and LPT1 ; when LPT2 is specified. Subsequent invokations reverse the existing situation. ; ; Program History and Attributions: ; -------------------------------- ; ; 3/18/89 Tested program before inflicting it on MASMless masses. Found ; address printed in the DEBUG script didn't get anywhere near the BIOS ; Data Area. Fixed program to swap the LPT1 and LPT2 base addresses as ; was originally intended. --- Chris G. Sylvain ; ; This MASM version of SWAPPORT was derived from a DEBUG script printed ; in the Q&A article of the January 1989 issue of PC Resource. The ; script was written by the PCResource Staff in response to a reader ; (Mary E. Campbell, Fort Wayne, Ind.) query. The printed DEBUG script ; includes code comments, but the instruction is to leave the comments ; out when creating SWAPPORT.SCR. This version includes comments and ; avoids using the "archaic" INT 20h DOS exit service. ; ; The entire contents of the January 1989 issue of PC Resource is ; Copyright (c) 1988 by IDG Communications/Peterborough, Inc. ; ; Motivation for using this program: ; --------------------------------- ; ; If you have two printers connected to your machine, and would rather ; not switch cables when you wish for the STDPRN device to be LPT2 ; instead of LPT1, then you will want to use this program. You can ; automate the switching back in forth in a batch file, for instance. ; ; The source code for the program: ; ------------------------------- ; BIOSarea EQU 040h ; segment where the BIOS Date Area lives PRNPoffs EQU 008h ; offset into BIOS Data Area where the LPTx ; port numbers are stored CSEG SEGMENT ASSUME CS:CSEG, DS:NOTHING ; ORG 100h ; use .COM memory layout ; START: mov AX, BIOSarea ; load value of data Segment mov DS, AX ; set data Segment to 0040h mov SI, PRNPoffs ; DS:SI will point to BIOS printer port data mov AX, [SI] ; get LPT1 port address mov BX, [SI+2] ; get LPT2 port address xchg AX, BX ; exchange register contents mov [SI], AX ; put LPT2 address in place of LPT1 mov [SI+2], BX ; put LPT1 address in place of LPT2 mov AX, 4C01h int 21h ; exit with return code == 01 ; CSEG ENDS ; END START I know binaries aren't *supposed* to be posted here, but does *FIVE* lines really count as a thing not-to-be-posted ?? begin 644 swapport.com 8N$``CMB^"`"+!(M<`I.)!(E<`K@!3,TA- `` end size 24 -- --==---==---==-- .. He left it dead, and with its head .. ARPA: cgs@umd5.UMD.EDU BITNET: cgs%umd5@umd2 UUCP: ..!uunet!umd5.umd.edu!cgs