MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00001 00001 ;LCOMM/ASM - COMM Communications Program MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00002 'Build 631 distribution (LEVEL 1B) 00418 ; These switches activate patches made since the 1B release. 00419 ; It is important that all earlier patches be enabled when a higher 00420 ; patch is enabled. 00421 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00422 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00423 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00424 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00425 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00426 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00427 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00428 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00429 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00430 ; 00431 ;End of BUILDVER/ASM 00432 IF @BLD631 00434 ELSE 00435 COM '<*(C) 1982,3,4,6 by LSI*>' 00436 ENDIF 00437 ; 3000 00438 BASE EQU 3000H 3000 00439 ORG BASE 00440 ; 3000 210000 00441 $EXIT LD HL,0 ;Init no error 3003 310000 00442 QUIT$ LD SP,$-$ ;P/u original stack 3004 00443 STACK EQU $-2 3006 00444 @@CKBRKC ;Clear break bit 3006+3E6A 00445 LD A,106 3008+EF 00446 RST 40 3009 C9 00447 RET 00448 ; MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00003 ' 2K of space 3028 21AC37 00474 LD HL,LILPG$ ;Display warning 302B 00475 @@DSPLY 00476 IFEQ 00H,1 00477 LD HL, 00478 ENDIF 302B+3E0A 00479 LD A,10 302D+EF 00480 RST 40 302E 3E13 00481 LD A,XOFF ;Schedule a forced PUT 302F 00482 XOFFP2 EQU $-1 3030 325234 00483 LD (FRCPUT+1),A 3033 AF 00484 XOR A 3034 322430 00485 LD (MAINLP+1),A ;Inhibit until next page 3037 DD219538 00486 ENUFPG LD IX,KIVCTR ;Get key from buffer if 303B CDB438 00487 CALL PGMGET ; available 303E 2022 00488 JR NZ,SENDIT ;Bypass if got one 3040 3E00 00489 FSSW LD A,0 ;FS On/Off (XMIT File) 3042 B7 00490 OR A 3043 2832 00491 JR Z,FSOFF ;Bypass if not XMTG 3045 3AAD38 00492 CKFREPG LD A,(FREEPG) ;Don't get from file 3048 FE0C 00493 CP 12 ; if < 3K buffer space 304A DA7730 00494 JP C,FSOFF ;Go if less 304D 110438 00495 LD DE,FS_FCB ;Get sending FCB 3050 00496 FSSWGO @@GET ;Get a byte to XMIT 3050+3E03 00497 LD A,3 3052+EF 00498 RST 40 3053 280D 00499 JR Z,SENDIT ;Bypass if got byte 3055 FE1C 00500 CP 1CH ;EOF encountered? MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00004 ' command function entered - decode it 00677 ; 3168 010000 00678 CMDKEY LD BC,0 ;Init no device vector 316B 110000 00679 LD DE,0 ;Init no File FCB 316E 218930 00680 LD HL,DSPCTRL+1 ;Pt to ctrl char dsply parm 00681 IF @MOD4 3171 FEA7 00682 CP 27H!80H ;Display control chars? 00683 ENDIF 00684 IF @MOD2 00685 CP '&'+80H 00686 ENDIF 3173 CA3332 00687 JP Z,QFUNC 00688 ; 3176 216A30 00689 LD HL,DPLXSW+1 3179 FEA1 00690 CP '!'+80H ;Ck duplex 317B CA3332 00691 JP Z,QFUNC 00692 ; 317E 21C930 00693 LD HL,ECHOSW+1 00694 IF @MOD4 3181 FEA2 00695 CP '"'+80H ;Ck echo 00696 ENDIF 00697 IF @MOD2 00698 CP '@'+80H 00699 ENDIF 3183 CA3332 00700 JP Z,QFUNC 00701 ; 3186 21A330 00702 LD HL,SHAKE+1 ;Check handshake 00703 IF @MOD4 3189 FEAA 00704 CP '*'+80H 00705 ENDIF 00706 IF @MOD2 00707 CP '_'+80H 00708 ENDIF MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00008 ' OPEN DCB 3400 62 01238 FNDDVR LD H,D ;Xfer to HL 3401 6B 01239 LD L,E 3402 7E 01240 LD A,(HL) ;Get DCB type 3403 CB6F 01241 BIT 5,A ;Is it linked? 3405 2013 01242 JR NZ,LNKD ;Need CHNIO if so 3407 23 01243 INC HL ;=>address field of DCB 3408 5E 01244 LD E,(HL) ;If routed, address is 3409 23 01245 INC HL ; next DCB to use 340A 56 01246 LD D,(HL) ; else EP of driver 340B CB67 01247 BIT 4,A ;Z = not routed 340D 20F1 01248 JR NZ,FNDDVR ;Loop till not routed 340F E608 01249 AND 00001000B ;Can't talk to NIL device 3411 C0 01250 RET NZ 3412 EB 01251 EX DE,HL ;Address to HL 3413 111D34 01252 LD DE,RETADD ;Put RET address on stack 3416 D5 01253 PUSH DE ; 3417 FE02 01254 CP 2 ;Set C,NZ for input request 3419 E9 01255 JP (HL) ;Go to driver 01256 ; 341A 01257 LNKD @@GET ;Use SVC if LINKED 341A+3E03 01258 LD A,3 341C+EF 01259 RST 40 341D C0 01260 RETADD RET NZ ;NZ means no char rcv'd 01261 ; 341E 0600 01262 EIGHT LD B,0 ;Eight bit mode switch 3420 04 01263 INC B 3421 05 01264 DEC B 3422 2006 01265 JR NZ,XLTR1 ;Go if 8 bit 3424 E67F 01266 AND 7FH ;Strip bit 7 3426 C8 01267 RET Z ;Always ignore nulls 3427 FE7F 01268 CP 7FH ; & DELETE if not 8-bit 3429 C8 01269 RET Z 01270 ; 01271 ; Do XLATER after stripping high bit 01272 ; 342A FE00 01273 XLTR1 CP $-$ ;Character to translate? 342C 2002 01274 JR NZ,TSTNUL ;Go if not a match 342E 3E00 01275 XLTR2 LD A,$-$ ;Replace with xlated char 01276 ; 01277 ; NULL Parm now only affects 8-bit mode 01278 ; 3430 B7 01279 TSTNUL OR A ;Is char a null? 3431 2005 01280 JR NZ,KEEPCH ;Go if not MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00019 '= 1200 baud because interuppts are on. 01426 ; DE must be loaded with KIVCTR. 01427 ; 34FB 00 01428 DB 0 34FC DDE5 01429 PUSH IX ;Dev requesting the output 34FE E1 01430 POP HL 34FF AF 01431 XOR A ;The difference will be 3500 ED52 01432 SBC HL,DE ; the offset into the 3502 116A3E 01433 LD DE,DEVICE$ ; name table 3505 19 01434 ADD HL,DE 3506 010400 01435 LD BC,4 3509 11893E 01436 LD DE,OVRRUN$+3 MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00022 'input buffer 3579 01526 @@KEYIN ;Get command request 3579+3E09 01527 LD A,9 357B+EF 01528 RST 40 357C D8 01529 RET C ;Back on Break 357D 04 01530 INC B 357E 05 01531 DEC B 357F C8 01532 RET Z ; or CR only 3580 EB 01533 EX DE,HL 3581 210000 01534 LD HL,$-$ ;Pt to CFLAG$ 3582 01535 CFLAG EQU $-2 3584 CB46 01536 BIT 0,(HL) ;Get current status 3586 E5 01537 PUSH HL 3587 F5 01538 PUSH AF ;Save memory freeze status 3588 CBC6 01539 SET 0,(HL) ;Freeze memory 358A EB 01540 EX DE,HL MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00024 ' 2D 20 36 2E 33 2E 31 20 2D 20 43 6F 70 79 72 69 67 68 74 20 31 39 38 32 2F 38 33 2F 38 34 2F 38 36 2F 39 30 20 62 79 20 4D 49 53 4F 53 59 53 2C 20 3D89 49 01886 DB 'Inc., ',10 ;<631> 6E 63 2E 2C 20 20 20 20 20 20 20 0A 01887 ELSE 01888 DB ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst' 01889 DB 'ems, Inc. ',10 01890 ENDIF MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00034 'COMM initialization code' 01891 ; 01892 ; DB 'All Rights Reserved. Licensed 1982/83/84 to Tandy ' 01893 ; DB 'Corporation.',10,13 01894 ; 01895 ; DB 'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI' 01896 ; DB 'STRIBUTE !! ',10,13 01897 ; DB 'All Rights reserved by LSI, 8970 N. 55th St. Milwa' 01898 ; DB 'ukee, Wisc. ',10,13 3D96 41 01899 DB 'All Rights Reserved. Unauthorized duplication is p' 6C 6C 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 20 55 6E 61 75 74 68 6F 72 69 7A 65 64 20 64 75 70 6C 69 63 61 74 69 6F 6E 20 69 73 20 70 3DC8 72 01900 DB 'rohibited. ',10,13 6F 68 69 62 69 74 65 64 2E 20 20 0A 0D 01901 IF @MOD4 3DD6 55 01902 GETMNU$ DB 'Use for menu',LF,CR 73 65 20 3C 43 4C 45 41 52 2D 38 3E 20 66 6F 72 20 6D 65 6E 75 0A 0D 01903 ENDIF 01904 IF @MOD2 01905 GETMNU$ DB 'Use for menu',LF,CR 01906 ENDIF 3DEE 0A 01907 LFEEDS DB LF,LF,LF,LF,LF,LF,LF 0A 0A 0A 0A 0A 0A 3DF5 0A 01908 DB LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,14,3 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0E 03 01909 ; 3E02 00 01910 DC 32,0 ;Patch space 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01911 ; 3E22 43 01912 BADCL$ DB 'Comm Line driver not specified',CR 6F 6D 6D 20 4C 69 6E 65 20 64 72 69 76 65 72 20 6E 6F 74 20 73 70 65 63 69 66 69 65 64 0D 3E41 49 01913 NOBUFS$ DB 'Insufficient memory to establish buffers',CR 6E 73 75 66 66 69 63 69 65 6E 74 20 6D 65 6D 6F 72 79 20 74 6F 20 65 73 74 61 62 6C 69 73 68 20 62 75 66 66 65 72 73 0D 3E6A 20 01914 DEVICE$ DB ' KI PR CL-RCL-S FS FR ????' MISOSYS EDAS-4.3 04/19/99 21:17:32 COMM/CMD - LS-DOS 6,2 Page 00035 'COMM initialization code' 4B 49 20 20 50 52 20 43 4C 2D 52 43 4C 2D 53 20 46 53 20 20 46 52 20 3F 3F 3F 3F 3E86 2A 01915 OVRRUN$ DB '** xxxx Buffer overrun **',3 2A 20 78 78 78 78 20 42 75 66 66 65 72 20 6F 76 65 72 72 75 6E 20 2A 2A 03 3EA0 50 01916 PRNAME DB 'PR' 52 01917 ; 3EA2 58 01918 PRMTBL$ DB 'XLATES' 4C 41 54 45 53 3EA8 E93E 01919 DW XLATES 3EAA 58 01920 DB 'XS ' 53 20 20 20 20 3EB0 E93E 01921 DW XLATES 3EB2 58 01922 DB 'XLATER' 4C 41 54 45 52 3EB8 EB3E 01923 DW XLATER 3EBA 58 01924 DB 'XR ' 52 20 20 20 20 3EC0 EB3E 01925 DW XLATER 3EC2 4E 01926 DB 'NULL ' 55 4C 4C 20 20 3EC8 E33E 01927 DW NULLPRM 3ECA 4E 01928 DB 'N ' 20 20 20 20 20 3ED0 E33E 01929 DW NULLPRM 3ED2 58 01930 DB 'XON ' 4F 4E 20 20 20 3ED8 E53E 01931 DW XONP 3EDA 58 01932 DB 'XOFF ' 4F 46 46 20 20 3EE0 E73E 01933 DW XOFFP 3EE2 00 01934 NOP 01935 ; 3EE3 FFFF 01936 NULLPRM DW -1 ;Default to accept nulls 3EE5 1100 01937 XONP DW 'Q'-40H ;Ctl-Q 3EE7 1300 01938 XOFFP DW 'S'-40H ;Ctl-S 3EE9 0000 01939 XLATES DW 0 3EEB 0000 01940 XLATER DW 0 01941 ; 3C00 01942 END LCOMM 3C00 is the transfer address 00000 Total errors