IMD 1.17: 29/05/2011 18:21:14 t-dos gen,par,doc  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   CB80FIX3DO  ;USER HAS LOCKED THE RECORD, 0B8 CAUSES THE NORMAL CB-80 ; ;ERROR RETURNS. ; ; ALSO, PLEASE NOTE THE FOLLOWIS6SINGLEPAR !S6SPOOLRGEN"S6SPOOLRPAR #$S6TURBO DOCC%&'()*+,-1.3 ONLY. USE WITH ; OTHER VERSIONS WILL PROBABLY MALFUNCTION. ; ; TurboDOS VERSION 1.20 OR LATER IS REQUIRED. HOWEVER, THICB80FIX4DO GENSYSM1DO GENSYSM2DO  GENSYSM4DO  NG ERRORS IN THE CB-80 LANGUAGE MANUAL ; DATED September, 1981 (First Printing): ; ; 1. PAGE 81 - THE DESCRIPTION OF "OPEN" SSLAVE GEN.SSLAVE PAR /0SSLAVELGGEN1SSLAVELGPAR23S PATCH ; IS NOT REQUIRED IN TurboDOS VERSION 1.30 OR LATER. ; ; WHEN USING THIS PATCH, ENSURE THAT IN THE .PAR FILES FOR ; GENSYSSGDO  GENSYSSPDO  OSLOAD DO  S6LOADERGENAND "CREATE" OMITS THE ; KEYWORDS "LOCKED", "UNLOCKED", AND "READONLY", WHICH SHOULD ; APPEAR AFTER THE "AS FILENO%" CLAUSE. UPDATE DOCd456789:;<=>?@THE MASTER PROCESSOR AND ALL OF THE SLAVES: ; ; CPMVER = 30 ;DEFAULT, ALLOWS CB-80 LOCKING TO FUNCTION. ; COMPAT = 0F8 ;SES6LOADERPARS6MASTR1GEN S6MASTR1PARS6MASTR2GEN ;-------------------------------------------------------------------- ; ; CB-80 RECORD LOCKING FIXES. DATETHE DEFAULT MODE IS ; "LOCKED", WHICH CAUSES TurboDOS TO OPEN IN EITHER EXCLUSIVE OR ; PERMISSIVE MODE, ACCORDING TO THE PERMIT LOGICAL FLAG, OTHERS. YOU MAY ALSO USE 0B8. ; ;0F8 CAUSES THE REQUESTOR TO SUSPEND WHEN ANOTHER ; S6MASTR2PARS6MASTR4GEN S6MASTR4PARS6SINGLEGEN: 20 OCT 82 ; MODIFIED: 12 APR 83 ; ; THE FOLLOWING FIXES APPLY TO CB-80 VERSION  SSIVE BIT IN "COMPAT". ; "UNLOCKED" MUST BE USED FOR SHARED ACCESS, OTHERWISE THE "LOCK" ; AND "UNLOCK" FUNCTIONS RETURN NO ERAND "CREATE" OMITS THE ; KEYWORDS "LOCKED", "UNLOCKED", AND "READONLY", WHICH SHOULD ; APPEAR AFTER THE "AS FILENO%" CLAUSE. SE VERIFY THE FOLLOWING CHANGES WHEN PERFORMED BY MONITOR: ; ; AT 046A CHANGE 0D TO 0C ; AT 046B CHANGE 2A TO 3A ; AT 046C CTHE MASTER PROCESSOR AND ALL OF THE SLAVES: ; ; CPMVER = 30 ;DEFAULT, ALLOWS CB-80 LOCKING TO FUNCTION. ; COMPAT = 0F8 ;SERORS, AND DO NOT LOCK. ; "READONLY" MAY BE SPECIFIED TO CAUSE THE READ-ONLY FILE INTERFACE ; ATTRIBUTE TO BE SET. ; ; 2. PA;-------------------------------------------------------------------- ; ; CB-80 RECORD LOCKING FIXES. DATETHE DEFAULT MODE IS ; "LOCKED", WHICH CAUSES TurboDOS TO OPEN IN EITHER EXCLUSIVE OR ; PERMISSIVE MODE, ACCORDING TO THE PERMIHANGE F0 TO 42 ; MONITOR L MIDDLE.REL E 46A 0C 3A 42  S MIDDLE.REL Q RENAME CB80.IRL CB80-13.ORG LIB CB80[I]=FRONT,T LOGICAL FLAG, OTHERS. YOU MAY ALSO USE 0B8. ; ;0F8 CAUSES THE REQUESTOR TO SUSPEND WHEN ANOTHER ; GES 91-93 - THE RETURN CODES FOR "LOCK" AND "UNLOCK" ARE WRONG. ; A ZERO VALUE IS A GOOD RETURN, NON-ZERO IS A BAD RETURN. ; : 20 OCT 82 ; MODIFIED: 12 APR 83 ; ; THE FOLLOWING FIXES APPLY TO CB-80 VERSION SSIVE BIT IN "COMPAT". ; "UNLOCKED" MUST BE USED FOR SHARED ACCESS, OTHERWISE THE "LOCK" ; AND "UNLOCK" FUNCTIONS RETURN NO ERMIDDLE,REAR SET CB80.IRL ;RG DDLE.REL E 46A 0C 3A 42 S MIDDLE.REL Q RENAME CB80.IRL CB80-13.ORG LIB CB80[I]=FRONT, ;USER HAS LOCKED THE RECORD, 0B8 CAUSES THE NORMAL CB-80 ; ;ERROR RETURNS. ; ; ALSO, PLEASE NOTE THE FOLLOWI; NOW, HERE IS THE PATCH FOR THE CB-80 LIBRARY TO FIX THE "ERROR IF" BUG: ; SET CB80.IRL ;N-RGF LIB FRONT.REL=CB80.IRL(CBINIT1.4 ONLY. USE WITH ; OTHER VERSIONS WILL PROBABLY MALFUNCTION. ; ; TurboDOS VERSION 1.20 OR LATER IS REQUIRED. HOWEVER, THIRORS, AND DO NOT LOCK. ; "READONLY" MAY BE SPECIFIED TO CAUSE THE READ-ONLY FILE INTERFACE ; ATTRIBUTE TO BE SET. ; ; 2. PANG ERRORS IN THE CB-80 LANGUAGE MANUAL ; DATED September, 1981 (First Printing): ; ; 1. PAGE 81 - THE DESCRIPTION OF "OPEN" ,CBARIT,CBPRIN,CBCON) LIB MIDDLE.REL=CB80.IRL(CBFILE) LIB REAR.REL=CB80.IRL(CBCHN,CBSTR,CBMISC,CBDIM,CBMATC,CBTRAN) ; ; PLEAS PATCH ; IS NOT REQUIRED IN TurboDOS VERSION 1.30 OR LATER. ; ; WHEN USING THIS PATCH, ENSURE THAT IN THE .PAR FILES FOR ;  GES 91-93 - THE RETURN CODES FOR "LOCK" AND "UNLOCK" ARE WRONG. ; A ZERO VALUE IS A GOOD RETURN, NON-ZERO IS A BAD RETURN. ; 6 ;CONSOLE DRIVER FOR 9600 BAUD TERMINAL LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSHAKE) LSTPAR ;LISTCB80.IRL ;RG DDLE.REL E 47E 61 D2 E0 S MIDDLE.REL Q RENAME CB80.IRL CB80-14.ORG LIB CB80[I]=FRONT,MIDDLE,REAR SET ; NOW, HERE IS THE PATCH FOR THE CB-80 LIBRARY TO FIX THE "ERROR IF" BUG: ; SET CB80.IRL ;N-RGF LIB FRONT.REL=CB80.IRL(INIT,A DRIVER FOR CENTRONICS PARALLEL PORT SERIAL ;STANDARD SERIAL MULTIPLEX DRIVER SPIE80 ;SERIAL/PARALLEL DRIVERS FOR NERITH,PRINT,INP) LIB MIDDLE.REL=CB80.IRL(FILE) LIB REAR.REL=CB80.IRL(CHAIN,STR,MISC,DIM,MATCH,TRAN) ; ; PLEASE VERIFY THE FOLT/80 AND EXP/80 SNDE80 ;SLAVE NETWORK DRIVER FOR NET/80+EXP/80 SLVRES ;SLAVE RESET DETECTION RALLEL DRIVERS FOR NEGEN S6MASTR2 OSMASTER.SYS GEN SSLAVE OSSLAVE.SYS DO OSLOAD LOWING CHANGES WHEN PERFORMED BY MONITOR: ; ; AT 047E CHANGE 69 TO 61 ; AT 047F CHANGE 58 TO D2 ; AT 0480 CHANGE C0 TO E0 ;GEN S6MASTR1 OSMASTER.SYS GEN SSLAVE OSSLAVE.SYS DO OSLOAD AULT = USER 0, PRIVILEGED SOMSG = 0D,0A,0A,"MuSYS NET/80+EXP/80 running:" SOMSG+1F = 0D,0A,"TurboDOS ver: 1.16 $"  ;DEF MONITOR L MIDDLE.REL E 47E 61 D2 E0  S MIDDLE.REL Q RENAME CB80.IRL CB80-14.ORG LIB CB80[I]=FRONT,MIDDLE,REAR SET  : " CALL INPLN ;INPUT LINE JRZ ..IDE ;IF NULL INPUT, CONTINUE ANI 5FH ;FORCE UPPER CASE CPI "S" ;RESPONSE=S? JRZ ..IDC IN PROGRAM AREA ; FMTNIT::XRA A STA FLAGS ;CLEAR ALL FLAGS STA FMTDEN ;CLEAR FORMAT DENSITY STA FMTHDS ;CLEAR FORMAT NUGS SET CRLF,M ;SET CR/LF REQUIRED FLAG ..INPC: CALL DMS ;DISPLAY MESSAGE .ASCII [ACR] [ALF] .ASCIS "Enter number of track; .LOC .DATA.# ;LOCATE IN DATA AREA ; DENSTY::.BYTE 0 ;FORMAT DENSITY FLAG NMBHDS::.BYTE 0 ;FORMAT NUMBER OF HEADS SECSIZ:GEN S6SPOOLR OSMASTER.SYS DO OSLOAD  ;IF SO, CONTINUE CPI "D" ;RESPONSE=D? JRZ ..IDC ;IF SO, CONTINUE ..IDE: CALL DMS ;ELSE, SOUND BELL .ASCIS [ABEL] JMPR GEN S6SINGLE OSMASTER.SYS DO OSLOAD s (3=35, 4=40, 8=80): " CALL INPLN ;INPUT LINE JRZ ..ICE ;IF NULL INPUT, CONTINUE CPI "3" ;RESPONSE=3? JRZ ..ICC ;IF SO,:.BYTE 0 ;FORMAT SECTOR SIZE SECTRK::.BYTE 0 ;FORMAT SECTORS/TRACK GAPLEN::.BYTE 0 ;FORMAT GAP LENGTH NMBTRK::.WORD 0 ;FORMAT CPI "1" ;RESPONSE=1? JRZ ..ISC ;IF SO, CONTINUE CPI "2" ;RESPONSE=2? JRZ ..ISC ;IF SO, CONTINUE ..ISE: CALL DMS ;ELSE, GEN S6MASTR4 OSMASTER.SYS GEN SSLAVE OSSLAVE.SYS DO OSLOAD ..INPD ;CONTINUE ..IDC: CPI "S" ;FORMAT DENSITY=S? JRZ ..SD1 ;IF SO, CONTINUE LXI H,DENSTY ;ELSE, GET FORMAT DENSITY FLAG  LDA FMTDEN ;GET FORMAT DENSITY ORA A ;FORMAT DENSITY=0? JRNZ ..IDC ;IF NOT, CONTINUE LXI H,FLAGS ;ELSE, GET FLAGS SET CONTINUE CPI "4" ;RESPONSE=4? JRZ ..ICC ;IF SO, CONTINUE CPI "8" ;RESPONSE=8? JRZ ..ICC ;IF SO, CONTINUE ..ICE: CALL D NUMBER OF TRACKS ; FLAGS: .BYTE 0 ;FORMAT FLAGS FMTDEN: .BYTE 0 ;FORMAT DENSITY FMTHDS: .BYTE 0 ;FORMAT NUMBER OF HEADS FMSOUND BELL .ASCIS [ABEL] JMPR ..INPS ;CONTINUE ..ISC: SUI "0" ;STRIP ASCII BIAS STA NMBHDS ;SET NUMBER OF HEADS LDA FMT, INC." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; AUTHORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; VERSION MVI M,0FFH ;SET FORMAT DENSITY FLAG=0FFH ..SD1: LDA FMTHDS ;GET FORMAT NUMBER OF HEADS ORA A ;FORMAT NUMBER OF HEADS=0? J CRLF,M ;SET CR/LF REQUIRED FLAG ..INPD: CALL DMS ;DISPLAY MESSAGE .ASCII [ACR] [ALF] .ASCIS "Enter density (Single/Double)MS ;ELSE, SOUND BELL .ASCIS [ABEL] JMPR ..INPC ;CONTINUE ..ICC: MVI C,35 ;GET 35 TRACKS CPI "3" ;NUMBER OF TRACKS=3? JRTTRK: .BYTE 0 ;FORMAT NUMBER OF TRACKS FMTTYP: .BYTE 0 ;FORMAT TYPE INBUF: .BYTE 1,0,0 ;INPUT BUFFER ; .LOC .PROG.# ;LOCATETRK ;GET FORMAT NUMBER OF TRACKS ORA A ;FORMAT NUMBER OF TRACKS=0? JRNZ ..ICC ;IF NOT, CONTINUE LXI H,FLAGS ;ELSE, GET FLA: 10/04/81 ; .IDENT FMTI5F ;MODULE ID ; .INSERT EQUATE ;SYMBOLIC EQUIVALENCES ; CRLF = 0 ;CR/LF REQUIRED FLAG (FLAGS) RNZ ..ISC ;IF NOT, CONTINUE LXI H,FLAGS ;ELSE, GET FLAGS SET CRLF,M ;SET CR/LF REQUIRED FLAG ..INPS: CALL DMS ;DISPLAY MESS gen s6loader osload.com gen s6loader osload1.com ;l2000 delete osload.sys rename osload1.com osload.sys PER SIX REAL TIME CLOCK DRIVER RIVER DST58F ;SUPER SIX DISK DRIVE SPECIFICATION TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010 ;SQHD2020 ;SER OF HEADS JMPR ..OSL ;CONTINUE ..N2S: CPI "3" ;CHARACTER=3? JRNZ ..N35T ;IF NOT, CONTINUE JMPR ..NTC ;ELSE, CONTINUE . ;RESPONSE=C? JRZ ..ITC ;IF SO, CONTINUE ..ITE: CALL DMS ;ELSE, SOUND BELL .ASCIS [ABEL] JMPR ..INPT ;CONTINUE ..ITC: LX = DON'T TEST MEMORY80 ;ELSE, GET 80 TRACKS ..ICCC: MOV A,C ;GET NUMBER OF TRACKS STA NMBTRK ;SET FORMAT NUMBER OF TRACKS LDA FMTTYP ;GET FORMAT FLAGS BIT CRLF,A ;CR/LF REQUIRED FLAG SET? RZ ;IF NOT, DONE CALL DMS ;ELSE, DISPLAY MESSAGE .ASCIS [ACR] [ALF] RET UPER QUAD HARD DISK DRIVER FOR QUANTUM Q2020 ;SQHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SUPER QUAD HA.N35T: CPI "4" ;CHARACTER=4? JRNZ ..N40T ;IF NOT, CONTINUE JMPR ..NTC ;ELSE, CONTINUE ..N40T: CPI "8" ;CHARACTER=8? JRNZ I H,SECSIZ ;GET SECTOR SIZE MVI M,0 ;SET SECTOR SIZE=0 CPI "C" ;FORMAT TYPE=C? JRZ ..CPM ;IF SO, CONTINUE INR M ;ELSE, S? JRNZ ..NSD ;IF NOT, CONTINUE JMPR ..FDC ;ELSE, CONTINUE ..NSD: CPI "D" ;CHARACTER=D? JRNZ ..NDD ;IF NOT, CONTINUE ..FT TYPE ORA A ;FORMAT TYPE=0? JRNZ ..ITC ;IF NOT, CONTINUE LXI H,FLAGS ;ELSE, GET FLAGS SET CRLF,M ;SET CR/LF REQUIRED FL ;DONE ; GETOPT: LXI D,TBUF ;GET DEFAULT BUFFER LDAX D ;GET BUFFER COUNT ORA A ;BUFFER COUNT=0? RZ ;IF SO, DONE MOV BRD DISK DRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;SUPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD HARD DISK DRSTDMASTR ;STANDARD NETWORKING MASTER CPMSUP ;CP/M FUNCTION SUPPORT MODULE S6NIT ;SUPER SIX HARDWARE INITIALIZATION ;S6CON INCREMENT SECTOR SIZE BY 2 INR M ..CPM: LDA DENSTY ;GET FORMAT DENSITY FLAG ORA A ;FORMAT DENSITY FLAG=0? JRZ ..SD2 ;IF SDC: STA FMTDEN ;ELSE, SET FORMAT DENSITY JMPR ..OSL ;CONTINUE ..NDD: CPI "1" ;CHARACTER=1? JRNZ ..N1S ;IF NOT, CONTINUE JAG ..INPT: CALL DMS ;DISPLAY MESSAGE .ASCII [ACR] [ALF] .ASCIS "Enter format type (TurboDOS/Cpm): " CALL INPLN ;INPUT LINDSKAST = 0,DSKDRA ;ONLY 1 DISK DRIVE ; SEE S6MASTER.PAR FILE FOR EXPLANATION OF DRVTBL PROGRAMMING DRVTBL = 0 ; 8" FLOPPY DIVER FOR TANDON TM502 ;SQHDT503 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERS S6RTC ;SU;SUPER SIX CONSOLE DRIVER CONREM ;REMOTE CONSOLE DRIVER (ANY SLAVE), DON'T USE CON96 IF USING THIS LSTPAR ;LIST DRIVER FOR PSTDLOADR ;STANDARD LOADER S6NIT ;SUPER SIX HARDWARE INITIALIZATION S6CON ;SUPER SIX CONSOLE DRIVER S6DSK ;SUPER SIX DISK DMPR ..NHC ;ELSE, CONTINUE ..N1S: CPI "2" ;CHARACTER=2? JRNZ ..N2S ;IF NOT, CONTINUE ..NHC: STA FMTHDS ;ELSE, SET FORMAT NUMBE JRZ ..ITE ;IF NULL INPUT, CONTINUE ANI 5FH ;FORCE UPPER CASE CPI "T" ;RESPONSE=T? JRZ ..ITC ;IF SO, CONTINUE CPI "C"RIVE MAXFPY = 1 ;NUMBER OF FLOPPY DRIVES LOADFN = 0,"OSMASTER","SYS" MEMTOP = (0FFFF) ;0FFFF = TEST ALL OF MEMORY ;(0)  ARALLEL PORT LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSHAKE) ;LSTETX ;LIST DRIVER FOR 1200 BAUD PRINTER (ETX/ACK HCESS ;MSGFMT ;NETWORK MESSAGE FORMATTER Y IN THE DRIVE TABLE. ; THE BITS IN THE ENTRY ARE PROGRAMED ACCORDING TO THE FOLLOWING ; INFO: ; BITS 0-1 STEP RATE FOR DD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERS SQPIO ;SUPER QUAD PARALLEL I/O DRIVER S6RTC ;SUPER SIX  EQUATES WILL SET UP PRINTER B ON SLAVE 2 (PORT 72) ; AS A REMOTE PRINTER FROM MASTER WITH FULL SPOOLING ; ;PTRAST+3 = 81,(2)ANDSHAKE) ;LSTXON ;LIST DRIVER FOR XON/XOF HANDSHAKE S6DSK ;SUPER SIX DISK DRIVER DST58F ;SUPER SIX DISK DRIVE SPECIFICATISRHDRV = 0FF ;SEARCH SYSTEM DISK FOR COMMAND FILES COMPAT = 0F0 ;RECORD/FILE LOCKING COMPATIBILITY FLAGS ;CPMVER = 022 ;INHRIVE, TIMES DOUBLE FOR 5.25" DRIVES ; 0 = 3MS STEP RATE ; 1 = 6MS ; 2 = 10MS ; 3 = 15MS ; BIT 4 MINI DRIVEREAL TIME CLOCK DRIVER MCDSS ;MASTER CIRCUIT DRIVER FOR SUPER SLAVE SSLOAD ;SUPER SLAVE INITIAL LOAD SSBOOT ;SUPER SLAVE O ;SET PRINTER REMOTE TO PRINTER B, SLAVE 2 ;QUEAST+3 = 81,(2) ;SET QUEUE REMOTE TO QUEUE B, SALVE 2 ;DSPPAT+1 = 2 ;USE QUEUE ON TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010 ;SQHD2020 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2020 ;SIBIT CB-80 RECORD LOCKING ;FFCHR = "^Z" ;USE CONTROL-Z FOR CLEARING THE SCREEN ON THE CONSOLE ;ETXBR = 47 ;NEC 5510 WITH CTS ; BIT 5 96 TPI DRIVE ; EXAMPLE OF PROGRAMMING ; 11 = 5.25" 48TPI DRIVE W/ 12MS STEP RATE ; 0 = 8" DRIVE W/ 3MS STEP RATPERATING SYSTEM BOOT ; ; PATCH AREA BELOW IS NECESSARY FOR V1.22 PATCH ; PATCH ;PATCH AREA FOR FIXES ; ; FOLLOWING FIB FOR PRINTER B ; DSKAST = 0,DSKDRA,1,DSKDRA,0FF,DSKDRA,0FF,DSKDRA ;ENABLE DRIVES A & B TO DRIVER A ; ; DRIVE TYPE SELECTQHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SUPER QUAD HARD DISK DRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;S AS WELL AS ETX/ACK ;ETXLEN = 6E ;LENGTH OF BLOCK PRIOR TO ETX PTRAST = 0,LSTDRA,1,LSTDRB ;1st = PARALLEL PORT, 2nd = 2nd SERE ; DRVTBL = 2,2 ;FIRST TWO DRIVES 8" MAXFPY = 2 ;NUMBER OF FLOPPY DISK DRIVES MEMRES = 1000 ;AMOUNT OF DYNAMIC SPACE BELLES ARE NECESSARY FOR PRINTERS ON SLAVE ; THAT ARE GOING TO BE ACCESSABLE ACROSS THE NETWORK. ; ;NETREQ ;NETWORK REQUEST PROION FOR SUPER SIX FLOPPY DISK DRIVER ; IS DONE BY PATCHING TO THE DRIVE TABLE IN THE DISK DRIVER. ; EACH DRIVE HAS AN ENTRUPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM502 ;SQHDT503 ;SUPER QUAD HARIAL PORT DSPPAT = 1,2 ;ASSIGN EACH PRINTER TO ITS OWN QUEUE QUEAST = 0,(0),0,(0) ;MAKE QUEUE FOR EACH PRINTER ; ; FOLLOWING OW THE O.S. AUTUSR = 080 ;DEFAULT TO PRIVLEGED, USER 0 NMBUFS = 18 ;DEFAULT NUMBER OF BUFFERS BUFSIZ = 03 ;DEFAULT BUFFER ;SUPER SIX CONSOLE DRIVER CONREM ;REMOTE CONSOLE DRIVER (ANY SLAVE), DON'T USE CON96 IF USING THIS LSTPAR ;LIST DRIVER FOR P,31,0DD,74,32 PATCH +28 = 0CD,CLSEXT,0D1,0DD,73,31,0DD PATCH +30 = 72,32,0F1,0DD,77,40,0E1,22,CMPLEN+1,0C9 LES ARE NECESSARY FOR PRINTERS ON SLAVE ; THAT ARE GOING TO BE ACCESSABLE ACROSS THE NETWORK. ; ;NETREQ ;NETWORK REQUEST PROSUPER SLAVE SYSTEM ASSIGNMENT TABLE ;(i.e LAST CHAR. OF SLAVE OPERATING SYSTEM ; FILE NAME [eg. "OSSLAVE .SYS" ; UPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM502 ;SQHDT503 ;SUPER QUAD HARSIZE (LOG2(SIZE/128)) NMBMBS = 3 ;PRE-ALLOCATE NMBSVC+2 MESSAGE BUFFERS NMBRPS = 3 ;PRE-ALLOCATE NMBSVC+2 REPLY WAITING BUFFARALLEL PORT LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSHAKE) ;LSTETX ;LIST DRIVER FOR 1200 BAUD PRINTER (ETX/ACK H ..SD1: LDA FMTHDS ;GET FORMAT NUMBER OF HEADS ORA A ;FORMAT NUMBER OF HEADS=0? JRNZ ..ISC ;IF NOT, CONTINUE LXI H,FLAGS ;CESS ;MSGFMT ;NETWORK MESSAGE FORMATTER OR "OSSLAVEB.SYS"] TO LOAD FOR GIVEN SLAVE) ; ; FOLLOWING FIX IS ONLY NECESSARY FOR V1.22 DO NOT USE ON V1.21 ; REQUIRES TD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERS SQPIO ;SUPER QUAD PARALLEL I/O DRIVER S6RTC ;SUPER SIX ERS NMBSVC = 1 ;NUMBER OF "SERVER PROCESSES" (NUMBER OF SLAVES) NMBSSA = 1 ;NUMBER OF SUPER SLAVES SLAVES SUPPORTED ON FIRSTANDSHAKE) ;LSTXON ;LIST DRIVER FOR XON/XOF HANDSHAKE S6DSK ;SUPER SIX DISK DRIVER DST58F ;SUPER SIX DISK DRIVE SPECIFICATIELSE, GET FLAGS SET CRLF,M ;SET CR/LF REQUIRED FLAG ..INPS: CALL DMS ;DISPLAY MESSAGE .ASCII [ACR] [ALF] .ASCIS "Enter nuF SECTORS/TRACK STA SECTRK ;SET FORMAT NUMBER OF SECTORS/TRACK LXI H,GAPTBL ;GET GAP LENGTH TABLE LDA SECSIZ ;GET FORMAT HAT PATCH MODULE BE INCLUDED IN .GEN MODULE ; CPYFCB+26 = 0CD,PATCH PATCH = 0EB,21,13,00,19,0CB,7E,0EB PATCH +8 = 0C8,0REAL TIME CLOCK DRIVER MCDSS ;MASTER CIRCUIT DRIVER FOR SUPER SLAVE SSLOAD ;SUPER SLAVE INITIAL LOAD SSBOOT ;SUPER SLAVE O DRIVER ; ; FOLLOWING TABLES ARE ONLY NEEDING IF YOU ARE GOING TO CHANGE ; THE DEFAULT VALUES WHICH ARE SHOWN ; ;SSADTA = 7ON TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010 ;SQHD2020 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2020 ;SSTDMASTR ;STANDARD NETWORKING MASTER CPMSUP ;CP/M FUNCTION SUPPORT MODULE S6NIT ;SUPER SIX HARDWARE INITIALIZATION ;S6CON SECTOR SIZE DAD D ;INDEX INTO GAP LENGTH TABLE DAD D JRZ ..SD4 ;IF FORMAT DENSITY FLAG=0, CONTINUE DCX H ;ELSE, DECREMENE5,0CD,GETPFA,23,23,23 PATCH +10 = 23,23,0DD,7E,40,0F5,7E,23 PATCH +18 = 0DD,77,40,0DD,5E,31,0DD,56 PATCH +20 = 32,0D5,0DD,75PERATING SYSTEM BOOT ; ; PATCH AREA BELOW IS NECESSARY FOR V1.22 PATCH ; PATCH ;PATCH AREA FOR FIXES ; ; FOLLOWING FI0,72,74,76,78,7A,7C,7E ;I/O PORT ADDRESSES FOR SUPER SLAVE ;SSADTA+8 = 80,82,84,86,88,8A,8C,8E ;SSASTA = ' ' ;QHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SUPER QUAD HARD DISK DRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;S  T TABLE POINTER ..SD4: MOV A,M ;GET GAP LENGTH STA GAPLEN ;SET FORMAT GAP LENGTH LDA FLAGS ;GET FLAGS BIT CRLF,A ;CR/LF RE ; DRVTBL = 2,2 ;FIRST TWO DRIVES 8" MAXFPY = 2 ;NUMBER OF FLOPPY DISK DRIVES MEMRES = 1000 ;AMOUNT OF DYNAMIC SPACE BELION FOR SUPER SIX FLOPPY DISK DRIVER ; IS DONE BY PATCHING TO THE DRIVE TABLE IN THE DISK DRIVER. ; EACH DRIVE HAS AN ENTRE5,0CD,GETPFA,23,23,23 PATCH +10 = 23,23,0DD,7E,40,0F5,7E,23 PATCH +18 = 0DD,77,40,0DD,5E,31,0DD,56 PATCH +20 = 32,0D5,0DD,75IAL PORT DSPPAT = 1,2 ;ASSIGN EACH PRINTER TO ITS OWN QUEUE QUEAST = 0,(0),0,(0) ;MAKE QUEUE FOR EACH PRINTER ; ; FOLLOWING0,72,74,76,78,7A,7C,7E ;I/O PORT ADDRESSES FOR SUPER SLAVE ;SSADTA+8 = 80,82,84,86,88,8A,8C,8E ;SSASTA = ' ' ;EQUIRED FLAG SET? RZ ;IF NOT, DONE CALL DMS ;ELSE, DISPLAY MESSAGE .ASCIS [ACR] [ALF] RET ;DONE ; GETOPT: LXI D,TBUFOW THE O.S. AUTUSR = 080 ;DEFAULT TO PRIVLEGED, USER 0 NMBUFS = 18 ;DEFAULT NUMBER OF BUFFERS BUFSIZ = 03 ;DEFAULT BUFFER Y IN THE DRIVE TABLE. ; THE BITS IN THE ENTRY ARE PROGRAMED ACCORDING TO THE FOLLOWING ; INFO: ; BITS 0-1 STEP RATE FOR D,31,0DD,74,32 PATCH +28 = 0CD,CLSEXT,0D1,0DD,73,31,0DD PATCH +30 = 72,32,0F1,0DD,77,40,0E1,22,CMPLEN+1,0C9  EQUATES WILL SET UP PRINTER B ON SLAVE 2 (PORT 72) ; AS A REMOTE PRINTER FROM MASTER WITH FULL SPOOLING ; ;PTRAST+3 = 81,(2)SUPER SLAVE SYSTEM ASSIGNMENT TABLE ;(i.e LAST CHAR. OF SLAVE OPERATING SYSTEM ; FILE NAME [eg. "OSSLAVE .SYS" ; SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR COMMAND FILES COMPAT = 0F0 ;RECORD/FILE LOCKING COMPATIBILITY FLAGS ;CPMVER = 022 ;INHSIZE (LOG2(SIZE/128)) NMBMBS = 4 ;PRE-ALLOCATE NMBSVC+2 MESSAGE BUFFERS NMBRPS = 4 ;PRE-ALLOCATE NMBSVC+2 REPLY WAITING BUFFRIVE, TIMES DOUBLE FOR 5.25" DRIVES ; 0 = 3MS STEP RATE ; 1 = 6MS ; 2 = 10MS ; 3 = 15MS ; BIT 4 MINI DRIVE ;SET PRINTER REMOTE TO PRINTER B, SLAVE 2 ;QUEAST+3 = 81,(2) ;SET QUEUE REMOTE TO QUEUE B, SALVE 2 ;DSPPAT+1 = 2 ;USE QUEUE OR "OSSLAVEB.SYS"] TO LOAD FOR GIVEN SLAVE) ; ; FOLLOWING FIX IS ONLY NECESSARY FOR V1.22 DO NOT USE ON V1.21 ; REQUIRES TIBIT CB-80 RECORD LOCKING ;FFCHR = "^Z" ;USE CONTROL-Z FOR CLEARING THE SCREEN ON THE CONSOLE ;ETXBR = 47 ;NEC 5510 WITH CTSERS NMBSVC = 2 ;NUMBER OF "SERVER PROCESSES" (NUMBER OF SLAVES) NMBSSA = 2 ;NUMBER OF SUPER SLAVES SLAVES SUPPORTED ON FIRST ; BIT 5 96 TPI DRIVE ; EXAMPLE OF PROGRAMMING ; 11 = 5.25" 48TPI DRIVE W/ 12MS STEP RATE ; 0 = 8" DRIVE W/ 3MS STEP RATB FOR PRINTER B ; DSKAST = 0,DSKDRA,1,DSKDRA,0FF,DSKDRA,0FF,DSKDRA ;ENABLE DRIVES A & B TO DRIVER A ; ; DRIVE TYPE SELECTHAT PATCH MODULE BE INCLUDED IN .GEN MODULE ; CPYFCB+26 = 0CD,PATCH PATCH = 0EB,21,13,00,19,0CB,7E,0EB PATCH +8 = 0C8,0 AS WELL AS ETX/ACK ;ETXLEN = 6E ;LENGTH OF BLOCK PRIOR TO ETX PTRAST = 0,LSTDRA,1,LSTDRB ;1st = PARALLEL PORT, 2nd = 2nd SER DRIVER ; ; FOLLOWING TABLES ARE ONLY NEEDING IF YOU ARE GOING TO CHANGE ; THE DEFAULT VALUES WHICH ARE SHOWN ; ;SSADTA = 7  STDMASTR ;STANDARD NETWORKING MASTER CPMSUP ;CP/M FUNCTION SUPPORT MODULE S6NIT ;SUPER SIX HARDWARE INITIALIZATION ;S6CON ;X2=X4 LXI D,.END.# ;GET TRACK BUFFER DAD D ;CALC END OF TRACK BUFFER XCHG ;END OF TRACK BUFFER TO DE-REG LHLD OPSYS+1PERATING SYSTEM BOOT ; ; PATCH AREA BELOW IS NECESSARY FOR V1.22 PATCH ; PATCH ;PATCH AREA FOR FIXES ; ; FOLLOWING FIB FOR PRINTER B ; DSKAST = 0,DSKDRA,1,DSKDRA,0FF,DSKDRA,0FF,DSKDRA ;ENABLE DRIVES A & B TO DRIVER A ; ; DRIVE TYPE SELECTQHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SUPER QUAD HARD DISK DRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;S AS WELL AS ETX/ACK ;ETXLEN = 6E ;LENGTH OF BLOCK PRIOR TO ETX PTRAST = 0,LSTDRA,1,LSTDRB ;1st = PARALLEL PORT, 2nd = 2nd SER;SUPER SIX CONSOLE DRIVER CONREM ;REMOTE CONSOLE DRIVER (ANY SLAVE), DON'T USE CON96 IF USING THIS LSTPAR ;LIST DRIVER FOR P ;GET TOP OF TRANSIENT PROGRAM AREA ORA A ;CLEAR CARRY FLAG DSBC D ;ENOUGH MEMORY FOR TRACK BUFFER? MVI A,0FFH ;PRESET RETLES ARE NECESSARY FOR PRINTERS ON SLAVE ; THAT ARE GOING TO BE ACCESSABLE ACROSS THE NETWORK. ; ;NETREQ ;NETWORK REQUEST PROION FOR SUPER SIX FLOPPY DISK DRIVER ; IS DONE BY PATCHING TO THE DRIVE TABLE IN THE DISK DRIVER. ; EACH DRIVE HAS AN ENTRUPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM502 ;SQHDT503 ;SUPER QUAD HARIAL PORT DSPPAT = 1,2 ;ASSIGN EACH PRINTER TO ITS OWN QUEUE QUEAST = 0,(0),0,(0) ;MAKE QUEUE FOR EACH PRINTER ; ; FOLLOWINGARALLEL PORT LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSHAKE) ;LSTETX ;LIST DRIVER FOR 1200 BAUD PRINTER (ETX/ACK HURN CODE=0FFH RC ;IF INSUFFICIENT MEMORY, DONE LDA INTLV ;ELSE, GET SECTOR INTERLEAVE MOV E,A ;SECTOR INTERLEAVE TO E-REGCESS ;MSGFMT ;NETWORK MESSAGE FORMATTER Y IN THE DRIVE TABLE. ; THE BITS IN THE ENTRY ARE PROGRAMED ACCORDING TO THE FOLLOWING ; INFO: ; BITS 0-1 STEP RATE FOR DD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERS SQPIO ;SUPER QUAD PARALLEL I/O DRIVER S6RTC ;SUPER SIX  EQUATES WILL SET UP PRINTER B ON SLAVE 2 (PORT 72) ; AS A REMOTE PRINTER FROM MASTER WITH FULL SPOOLING ; ;PTRAST+3 = 81,(2)ANDSHAKE) ;LSTXON ;LIST DRIVER FOR XON/XOF HANDSHAKE S6DSK ;SUPER SIX DISK DRIVER DST58F ;SUPER SIX DISK DRIVE SPECIFICATISRHDRV = 0FF ;SEARCH SYSTEM DISK FOR COMMAND FILES COMPAT = 0F0 ;RECORD/FILE LOCKING COMPATIBILITY FLAGS ;CPMVER = 022 ;INH SECTRK# ;GET NUMBER OF SECTORS/TRACK MOV L,A ;NUMBER OF SECTORS/TRACK TO HL-REG MVI H,0 ;DOUBLE LENGTH DAD H ;X2 DAD H RIVE, TIMES DOUBLE FOR 5.25" DRIVES ; 0 = 3MS STEP RATE ; 1 = 6MS ; 2 = 10MS ; 3 = 15MS ; BIT 4 MINI DRIVEREAL TIME CLOCK DRIVER MCDSS ;MASTER CIRCUIT DRIVER FOR SUPER SLAVE SSLOAD ;SUPER SLAVE INITIAL LOAD SSBOOT ;SUPER SLAVE O ;SET PRINTER REMOTE TO PRINTER B, SLAVE 2 ;QUEAST+3 = 81,(2) ;SET QUEUE REMOTE TO QUEUE B, SALVE 2 ;DSPPAT+1 = 2 ;USE QUEUE ON TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010 ;SQHD2020 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2020 ;SIBIT CB-80 RECORD LOCKING ;FFCHR = "^Z" ;USE CONTROL-Z FOR CLEARING THE SCREEN ON THE CONSOLE ;ETXBR = 47 ;NEC 5510 WITH CTS   ; BIT 5 96 TPI DRIVE ; EXAMPLE OF PROGRAMMING ; 11 = 5.25" 48TPI DRIVE W/ 12MS STEP RATE ; 0 = 8" DRIVE W/ 3MS STEP RATHAT PATCH MODULE BE INCLUDED IN .GEN MODULE ; CPYFCB+26 = 0CD,PATCH PATCH = 0EB,21,13,00,19,0CB,7E,0EB PATCH +8 = 0C8,0SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR COMMAND FILES ;ETXBR = 47 ;NEC 5510 WITH CTS AS WELL AS ETX/ACK ;ETXLEN = 6E ;LENGTH O DRIVER ; ; FOLLOWING TABLES ARE ONLY NEEDING IF YOU ARE GOING TO CHANGE ; THE DEFAULT VALUES WHICH ARE SHOWN ; ;SSADTA = 7;SQHD2020 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2020 ;SQHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SE ; DRVTBL = 2,2 ;FIRST TWO DRIVES 8" MAXFPY = 2 ;NUMBER OF FLOPPY DISK DRIVES MEMRES = 1000 ;AMOUNT OF DYNAMIC SPACE BELSTDSINGL ;STANDARD SINGLE USER WITH SPOOLER CPMSUP ;CP/M FUNCTION SUPPORT MODULE S6NIT ;SUPER SIX HARDWARE INITIALIZATION SE5,0CD,GETPFA,23,23,23 PATCH +10 = 23,23,0DD,7E,40,0F5,7E,23 PATCH +18 = 0DD,77,40,0DD,5E,31,0DD,56 PATCH +20 = 32,0D5,0DD,75F BLOCK PRIOR TO ETX ATNCHR = "^@" ;MAKE ATTENTION CHAR. BREAK CHAR PTRAST = 0,LSTDRA,1,LSTDRB ;1st = PARALLEL PORT, 2nd = 2n0,72,74,76,78,7A,7C,7E ;I/O PORT ADDRESSES FOR SUPER SLAVE ;SSADTA+8 = 80,82,84,86,88,8A,8C,8E ;SSASTA = ' ' ;UPER QUAD HARD DISK DRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;SUPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD OW THE O.S. AUTUSR = 080 ;DEFAULT TO PRIVLEGED, USER 0 NMBUFS = 18 ;DEFAULT NUMBER OF BUFFERS BUFSIZ = 03 ;DEFAULT BUFFER 6CON ;SUPER SIX CONSOLE DRIVER LSTPAR ;LIST DRIVER FOR PARALLEL PORT LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSH,31,0DD,74,32 PATCH +28 = 0CD,CLSEXT,0D1,0DD,73,31,0DD PATCH +30 = 72,32,0F1,0DD,77,40,0E1,22,CMPLEN+1,0C9 d SERIAL PORT PRTMOD = 0 ;NO SPOOLER SO MAKE PRINTING DIRECT DSKAST = 0,DSKDRA,1,DSKDRA,0FF,DSKDRA,0FF,DSKDRA ;ASSIGN DRIVES SUPER SLAVE SYSTEM ASSIGNMENT TABLE ;(i.e LAST CHAR. OF SLAVE OPERATING SYSTEM ; FILE NAME [eg. "OSSLAVE .SYS" ; HARD DISK DRIVER FOR TANDON TM502 ;SQHDT503 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERSSIZE (LOG2(SIZE/128)) NMBMBS = 6 ;PRE-ALLOCATE NMBSVC+2 MESSAGE BUFFERS NMBRPS = 6 ;PRE-ALLOCATE NMBSVC+2 REPLY WAITING BUFFAKE) ;LSTETX ;LIST DRIVER FOR 1200 BAUD PRINTER (ETX/ACK HANDSHAKE) ;LSTXON ;LIST DRIVER FOR XON/XOF HANDSHAKE S6DSK ;SUPEA & B TO DRIVER A ; ; DRIVE TYPE SELECTION FOR SUPER SIX FLOPPY DISK DRIVER ; IS DONE BY PATCHING TO THE DRIVE TABLE IN TOR "OSSLAVEB.SYS"] TO LOAD FOR GIVEN SLAVE) ; ; FOLLOWING FIX IS ONLY NECESSARY FOR V1.22 DO NOT USE ON V1.21 ; REQUIRES T SQPIO ;SUPER QUAD PARALLEL I/O DRIVER S6RTC ;SUPER SIX REAL TIME CLOCK DRIVER ERS NMBSVC = 4 ;NUMBER OF "SERVER PROCESSES" (NUMBER OF SLAVES) NMBSSA = 4 ;NUMBER OF SUPER SLAVES SLAVES SUPPORTED ON FIRSTR SIX DISK DRIVER DST58F ;SUPER SIX DISK DRIVE SPECIFICATION TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010  HE DISK DRIVER. ; EACH DRIVE HAS AN ENTRY IN THE DRIVE TABLE. ; THE BITS IN THE ENTRY ARE PROGRAMED ACCORDING TO THE FOLLO6CON ;SUPER SIX CONSOLE DRIVER LSTPAR ;LIST DRIVER FOR PARALLEL PORT LSTCTS ;LIST DRIVER FOR 9600 BAUD PRINTER (CTS HANDSH SECTOR LIST ..L: LXI B,..L ;GET LOOP TOP ADDRESS PUSH B ;PUSH RETURN ADDRESS ON STACK MOV C,0(X) ;GET SUBROUTINE ADDR FROMd SERIAL PORT DSPPAT = 1,2 ;ASSIGN EACH PRINTER TO ITS OWN QUEUE QUEAST = 0,(0),0,(0) ;MAKE QUEUE FOR EACH PRINTER DSKAST = R OF BUFFERS BUFSIZ = 03 ;DEFAULT BUFFER SIZE (LOG2(SIZE/128))  TANDON TM502 ;SQHDT503 ;SUPER QUAD HARD DISK DRIVER FOR TANDON TM503 S6SIO ;SUPER SIX SERIAL I/O DRIVERS SQPIO ;SUPER QUADWING ; INFO: ; BITS 0-1 STEP RATE FOR DRIVE, TIMES DOUBLE FOR 5.25" DRIVES ; 0 = 3MS STEP RATE ; 1 = 6MS ; 2 AKE) ;LSTETX ;LIST DRIVER FOR ETX/ACK HANDSHAKE ;LSTXON ;LIST DRIVER FOR XON/XOF HANDSHAKE S6DSK ;SUPER SIX DISK DRIVER D CMD LIST INX X MOV B,0(X) INX X PUSH B ;PUSH SUBROUTINE ADDRESS ON STACK RET ;TRANSFER TO SUBROUTINE ; KLIT: MOV B0,DSKDRA,1,DSKDRA,0FF,DSKDRA,0FF,DSKDRA ;ASSIGN DRIVES A & B TO DRIVER A ; ; DRIVE TYPE SELECTION FOR SUPER SIX FLOPPY DISK .SD3 ;IF SO, CONTINUE LXI H,DDFTBL-4 ;GET DOUBLE-DENSITY TABLE ..SD3: DAD D ;INDEX INTO TABLE MOV E,M ;GET FORMAT COMMAND  PARALLEL I/O DRIVER S6RTC ;SUPER SIX REAL TIME CLOCK DRIVER = 10MS ; 3 = 15MS ; BIT 4 MINI DRIVE ; BIT 5 96 TPI DRIVE ; EXAMPLE OF PROGRAMMING ; 11 = 5.25" 48TPI DRIVE W/ 12MSST58F ;SUPER SIX DISK DRIVE SPECIFICATION TABLE ;SQHD2010 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2010 ;SQHD2020 ;SUPER QUA,0(X) ;GET COUNT FROM COMMAND LIST INX X MOV A,0(X) ;GET BYTE FROM COMMAND LIST INX X ..L: STAX D ;STORE IN TRACK BUFFER DRIVER ; IS DONE BY PATCHING TO THE DRIVE TABLE IN THE DISK DRIVER. ; EACH DRIVE HAS AN ENTRY IN THE DRIVE TABLE. ; THELIST ADDRESS INX H MOV D,M INX H PUSH D ;FORMAT COMMAND LIST TO IX-REG POP X MOV E,M ;GET SECTOR LOOP POINTER INX SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR COMMAND FILES ;ETXBR = 47 ;NEC 5510 WITH CTS AS WELL AS ETX/ACK ;ETXLEN = 6E ;LENGTH O STEP RATE ; 0 = 8" DRIVE W/ 3MS STEP RATE ; DRVTBL = 2,2 ;FIRST TWO DRIVES 8" MAXFPY = 2 ;NUMBER OF FLOPPY DISK DRIVES D HARD DISK DRIVER FOR QUANTUM Q2020 ;SQHD2040 ;SUPER QUAD HARD DISK DRIVER FOR QUANTUM Q2040 ;SQHD4020 ;SUPER QUAD HARD DISK STDSPOOL ;STANDARD SINGLE USER WITH SPOOLER CPMSUP ;CP/M FUNCTION SUPPORT MODULE S6NIT ;SUPER SIX HARDWARE INITIALIZATION S BITS IN THE ENTRY ARE PROGRAMED ACCORDING TO THE FOLLOWING ; INFO: ; BITS 0-1 STEP RATE FOR DRIVE, TIMES DOUBLE FOR 5.25" DH MOV D,M SDED KLP ;SAVE SECTOR LOOP ADDRESS LXI D,.END.# ;GET BEGINNING OF TRACK BUFFER LXI H,SECLST ;GET INTERLEAVEDF BLOCK PRIOR TO ETX ATNCHR = "^@" ;MAKE ATTENTION CHAR. BREAK CHAR PTRAST = 0,LSTDRA,1,LSTDRB ;1st = PARALLEL PORT, 2nd = 2nMEMRES = 0400 ;AMOUNT OF DYNAMIC SPACE BELOW THE O.S. AUTUSR = 080 ;DEFAULT TO PRIVLEGED, USER 0 NMBUFS = 04 ;DEFAULT NUMBEDRIVER FOR MINISCRIBE 4020 ;SQHDS506 ;SUPER QUAD HARD DISK DRIVER FOR SEAGATE ST506 ;SQHDT502 ;SUPER QUAD HARD DISK DRIVER FOR  RIVES ; 0 = 3MS STEP RATE ; 1 = 6MS ; 2 = 10MS ; 3 = 15MS ; BIT 4 MINI DRIVE ; BIT 5 96 TPI DRIVE ; Es disk contai th operatin syste core an Advance Digita driver necessar t implemen th TurT 1,0FBH ;DATA ADDRESS MARK (FB) .KLIT 128,0E5H ;256 E5'S .KLIT 128,0E5H .KLIT 1,0F7H ;CRC GENERATION (F7) .KLIT 16,0FFTDLOADR.REL ;Standard Loader system STDSINGL.REL ;Standard Single system STDSPOOL.REL 'S .KLIT 1,0F7H ;CRC GENERATION (F7) .KLIT 1,0FFH ;1 FF .WORD KNXT ;JMP KLP ; ; 256 BYTE SECTOR, SINGLE DENSITY ; KLST program GEN.COM ;System linker FMTWD5.COM ;5.25" floppy formatter XAMPLE OF PROGRAMMING ; 11 = 5.25" 48TPI DRIVE W/ 12MS STEP RATE ; 0 = 8" DRIVE W/ 3MS STEP RATE ; DRVTBL = 2,2 ;FIRST TWOboDOӠ operatin syste o Advance Digita board Th bootabl dis i mad u fro file fro al th othe  Advanced Digital Super Six Turbo Dos Documentation Thi documen i designe t explai som o ;Standard Spooled Single system STDMASTR.REL ;Standard Master system STDSLAVE.REL S1: .KLIT 40,0FFH ;40 FF'S .KLIT 6,0 ;6 ZEROES .KLIT 1,0FCH ;INDEX MARK (FC) KLPS1: .KLIT 26,0FFH ;26 FF'S .KLIT 6,0 ;6 Z FMTWD8.COM ;8" floppy formatter MASTER.COM ;Used to attach slaves to master proc.  DRIVES 8" MAXFPY = 2 ;NUMBER OF FLOPPY DISK DRIVES MEMRES = 0400 ;AMOUNT OF DYNAMIC SPACE BELOW THE O.S. AUTUSR = 080 ;DE disks specifically: Operating System Core side; BUFFERS.CO͠ ;Allowviewinanch th mystery o implementin Turb Do o th Supe Si an Supe Slav board b Advance Digita Corp.  ;Standard Slave system CPMSUP.REL ;CP/M Support module Gen, Par and Doc Files side EROES .KLIT 1,0FEH ;ID ADDRESS MARK (FE) .WORD KTRK ;TRACK NUMBER .WORD KSID ;SIDE NUMBER .WORD KSEC ;SECTOR NUMBER .K PRINT.COM ;Printer manager PRINTER.COM ; more SET.COM ;Set file attrFAULT TO PRIVLEGED, USER 0 NMBUFS = 04 ;DEFAULT NUMBER OF BUFFERS BUFSIZ = 03 ;DEFAULT BUFFER SIZE (LOG2(SIZE/128)) angin buffers CHANGE.COM ;For changing disks in multi sys. COPY.COM ;For copyin I yo purchase you TurboDO throug Advance Digita the yo recieve fiv diskette fro us The UPDATE.DOC ;S2000 update documentation SQTURBO.DOC ;This file S6LOADERLIT 1,1 ;RECORD LENGTH .KLIT 1,0F7H ;CRC GENERATION (F7) .KLIT 11,0FFH ;11 FF'S (ADDR/DATA GAP) .KLIT 6,0 ;6 ZEROES .KLIibutes TYPE.COM ;Type ascii files USER.COM ;Change user number S .KLIT 11,0FFH ;11 FF'S (ADDR/DATA GAP) .KLIT 6,0 ;6 ZEROES .KLIT 1,0FBH ;DATA ADDRESS MARK (FB) .KLIT 128,0E5H ;128 E5g files CRASH.CO͠ ;Demonstratioprofo multsys slaves DIR.COM ;Directory .GEN ;Turbo Dos loader .GEN file S6LOADER.PAR ; and .PAR file S6MASTRx.GEN ;Tuix real time clock driver SQPIO.REL ;Super Quad parallel I/O driver S6SIO.REL ;S ; M4 = Multi w/ 4 slaves Non-Disk Drivers side; LSTCTS.REL ;Clet loader for floppies SBCHBOOT.MAC ;Sector zero boot loader for hard disks LDRBDOS.MAC  ; w/logo installed SSLAVELG.PAR ; and .PAR file OSLOAD.DO  SSCKTDR.REL ;Super Slave network circuit driver SSRTC.REL ;Super Slave real time clock driverrbo Dos Master .GEN file for x slaves S6MASTRx.PAR ; and .PAR file S6SINGLE.GEN ;Turbuper Six serial I/O driver MCDSS.REL ;Master Circuit Driver for Super Slaves HDWINIT.REL ar to send handshake list driver LSTETX.REL ;ETX handshake list driver LSTPAR.REL  ;Logical portion of track 0 loader LODRBIOS.MAC ;Physical portion of track 0 loader Fo  ;OSLOAD.SYS gen batch command file GENSYSxx.DϠ ;Dfile tcreatesystemliste  Disk drivers side; S6DSK.REL ;Super Six floppy disk driver DST58F.RE̠ o Dos Single user .GEN file S6SINGLE.PAR ; and .PAR file S6SPOOLR.GEN ;Turbo Dos Sing ;Hardware initialization for Super Slave SSLOAD.REL ;Super Slave loader SSBOOT.REL ;Parallel list driver LSTXON.REL ;XON XOFF handshake list driver SSRESET.REL ;Slavehar dis system yo ma hav t edi th har dis driver an reassembl the befor genin you system above ; SG = Single w/o spooling ; SP = Single w/ spooling  ;SupeSidisdrivspecificatio table SQHDxxxx.RE̠ ;HDC100har dis drive fovariou drivesle Spooled .GEN file S6SPOOLR.PAR ; and .PAR file SSLAVE.GEN ;Turbo Dos Slave .GEN  ;Super Slave power up booter SSPIO.REL ;Super Slave parallel I/O driver SSSIO.REL  reset processor S6NIT.REL ;Super Six hardware initialization S6RTC.REL ;Super S T generat Turb Do syste yo mus edi th GE an PA file t matc th syste configuratio tha ; M1 = Multi w/ 1 slave ; M2 = Multi w/ 2 slaves  TRK0XXXX.LDҠ ;Traczer loader fovarioudis types SBCBOOT.MAC ;Sector zero boofile SSLAVE.PAR ; and .PAR file SSLAVELG.GEΠ ;Turb Do Slav .GE fil  ;Super Slave serial I/O driver SSMPINIT.RE̠ ;SupeSlavmemorparit initialization   yo want Thes file hav bee configure b Advance Digita t mee mos aplications bu ma neio canno rea Turbo Do formatte diskette whil Turb Do ca rea CP/ formatte diskettes Thi i du t  ar single-sided/single-densit CP/ format single-sided/double- densit Turb Do format an double-sided/doub track o th disk T generat loader.sy fil t us wit th trac loade us th OSLOAD.D batcR SYS S6MASTRx.PAR ; AND .PAR FILE SSLAVE.GEN ;GENS THE SUPER SLAVE SYS  LODRBIOS.MA files Lin SBCBOOT.RE fo executio a 0H lin LDRBDOS.RE fo executio a 100H lie som customizatio fo you implementa- tion Th file t edi are: S6LOADER.GEN ;GENER th fac tha Turb Do format al track i doubl densit fo thos format wher a CP/ format trac ile-densit Turb Do format Fo 5.25 system th onl vali option ar single- sided/double-densit Turb comman file Th dis shoul no boo directl fro th monitor prom installed on the Super Quad board.  SSLAVE.PAR ; AND .PAR FILE Afte generatin you ne syste yon LODRBIOS.RE fo executio a 500H No usin th MONITO comman i Turb Do loa th SBCBOOԠ a 10ATES THE SYSTEM LOADER S6LOADER.PAR ; AND .PAR FILE S6SINGLE.GEN ;GENS THE  singl density I is possible to generate bootable disks of either format however. T generat l Do format an double-sided/double- densit Turb Do format I yo ar goin t b usin a 8 sy  wil nee t mak backups Yo star thi proces b formattin ne diskette Th forma program hav0H loa th LDRBDO a 180H an loa th LODRBIO a 580 i memory Sav th whol thin ou t file No usinSINGLE USER SYS S6SINGLE.PAR ; AND .PAR FILE S6SPOOLR.GEN ;GENS SINGLE SPOOoade o trac unde Turb Do edi th ldrbdo fil fo th typ o dis t b writte to Edi th ste wit bot CP/ an Turb Do the i woul b goo ide t forma diskette unde CP/ a th CP/ bLL DMS ;DISPLAY MESSAGE .ASCIS [ACR] [ALF] LXI H,VFYDST ;GET VERIFY DST ADDRESS SHLD PDRDMA ;SET PD REQUEST PACKET DMA AD man option tha yo ca choos from fo 8 system th onl vali combination whic ca b mad bootabl  eithe th Boo comman or th TK0BOO comman fo har disk writ th loade fil ou t th reserveLED SYS S6SPOOLR.PAR ; AND .PAR FILE S6MASTRx.GEΠ ;GENS THE MULTIUSER MASTE lodrbio fo th typ o flopp drive tha yo have Assembl th SBCBOOT.MA file Assembl th LDRBDOS.MA an DRESS MVI A,2 ;GET RETURN DST FUNCTION NUMBER STA PDRFCN ;SET PD REQUEST PACKET FUNCTION CALL XECPDA ;SELECT VERIFY DRIVE T CB-80 RECORD LOCKING SERCHN = 2 ;TWO SERIAL CHANNELS INSTALLED ON A SUPER SLAVE ;CONBR = 08F ;USE 19.2K BAUD TERMINAL FOR ION SSRTC ;SUPER SLAVE REAL TIME CLOCK SSSOM ;SUPER SLAVE SIGN ON MESSAGE ; ; THE FOLLOWING FILES ARE USED FOR A LOCAL PRID COMMAND. THE FILE "BATCH.DO" MUST ; ALSO EXIST ON USER 0 OF SYSTEM DRIVE, IT SHOULD BE A ; FIFO FILE WITH THE SUSPEND ATTRIBLAVE MEMORY PARITY INITIALIZATION SSINT ;SUPER SLAVE INTERRUPT CONTROLLER SQCON ;SUPER QUAD & SUPER SLAVE CONSOLE DRIVER ;LER B ; AUTUSR = 80 ;DEFAULT = USER 0, PRIVILEGED NMBMBS = 1 ;PRE-ALLOCATE NMBCKT MESSAGE BUFFERS (SIMPLE SLAVE) NMBRPS = 1 JZ ..VDNR ;IF DRIVE NOT READY, CONTINUE LHLD SECTRK ;GET NUMBER OF SECTORS/TRACK SHLD PDRSC ;SET PD REQUEST SECTOR COUNT CONSOLE CONBR = 08E ;USE 9600 BAUD TERMINAL FOR CONSOLE ATNCHR = 0 ;USE "BREAK" KEY FOR ATTENTION ;FFCHR = "^Z" ;USE CONTRNTER ; THAT IS SPOOLED AND ACCESSABLE THRU THE NETWORK ; ;NETSVC ;NETWORK REQUEST SERVICE PROCESS ;DSPOOL ;DESPOOLER UTE SET. ; ;WARMFN = 0,"BATCH ","AUT" ;WARM START AUTOLOAD FILE NAME STCTS ;PRINTER DRIVER FOR 9600 BAUD, CTS HANDSHAKING ;LSTPAR ;PARALLEL PRINTER DRIVER ;LSTETX ;PRINTER DRIVER FOR ETX/ACK H ;PRE-ALLOCATE NMBCKT REPLY WAITING BUFFERS (SIMPLE SLAVE) SLRCHR = "|" ;SLAVE RESET CHARACTER ; ; FOLLOWING ASSIGNMENT FOR MOV A,H ;SWAP H-REG/L-REG MOV H,L MOV L,A SRLR H ;SHIFT HL-REG LEFT 7 (*128) PUSH PSW SLAR H POP PSW RARR L RAROL-Z FOR CLEARING THE SCREEN ON THE CONSOLE PRTMOD = 1 ;DEFAULT PRINT MODE = SPOOLED ; ; FOLLOWING PRINTER ASSIGNMENT WOULD ONTROL C, CONTINUE JRZ ..VTL ;IF CARRIAGE RETURN, CONTINUE ..VFYC: CALL CONST ;ELSE, GET CONSOLE STATUS ORA A ;CHARACTER AVLY FLAG SET? JRNZ ..ERRX ;IF SO, CONTINUE JMPR ..X ;ELSE, CONTINUE ..VDNR: CALL DMS ;DISPLAY MESSAGE .ASCII [ACR] [ALF] ANDSHAKE ;LSTXON ;PRINTER DRIVER FOR XON/XOF HANDSHAKE SQSERIAL ;STANDARD SERIAL MULTIPLEX DRIVER SSSIO ;SUPER SLAVE SERIAL GENERATING SLAVE TO BE ; USED A A BACKROUND BATCH PROCESSOR WITH COMMANDS ; SEND TO IT VIA THE BATCH COMMAND. "BATCH.AUT" FILR H LDA SECSIZ ;GET SECTOR SIZE ..SL: DCR A ;DECREMENT SECTOR SIZE JM ..SLX ;IF UNDERFLOW, CONTINUE DAD H ;ELSE, SHIFT BYMAKE PRINTER B LOCAL ; AND LOCALLY SPOOLED ; ;PTRAST+3 = 00,LSTDRA ;RELATIVE PRINTER 0, USED FOR PARALLEL PRINTER ;QUEAST+3 SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR .COM FILES COMPAT = 0F0 ;FILE/RECORD LOCKING COMPATIBILITY FLAGS ;CPMVER = 022 ;INHIBI .ASCII "Verify drive not ready" [ABEL] .ASCIS [ACR] [ALF] LDA OPTFLG ;GET OPTION FLAGS BIT VFY,A ;VERIFY ONLY FLAG SET?  I/O DRIVERS ;SSPIO ;SUPER SLAVE PARALLEL I/O DRIVER SSCKTDR ;SUPER SLAVE CIRCUIT DRIVER SSRESET ;SUPER SLAVE RESET DETECTE ; MUST EXIST ON USER 0 OF SYSTEM DRIVE AND CONTAIN ; A SINGLE COMMAND "DO BATCH". "BATCH.AUT" IS CREATED ; WITH THE AUTOLOASTDSLAVE ;STANDARD NETWORKING SLAVE CPMSUP ;CP/M FUNCTION SUPPORT MODULE HDWINIT ;HARDWARE INITIALIZATION SSMPINIT ;SUPER S= 0,(0) ;QUEUE ASSIGNMENT TABLE, LOCALLY GENERATED QUEUE ;DSPPAT+1 = 2 ;PRINTER B USES QUEUE B ;QUEPTR = 2 ;COME UP ON PRINT  JZ ..FMT ;IF NOT, CONTINUE JMP ..VFYO ;ELSE, CONTINUE ..ERRX: LXI H,OPTFLG ;GET OPTION FLAGS RES REP,M ;RESET REPEAT FLAGOL-Z FOR CLEARING THE SCREEN ON THE CONSOLE PRTMOD = 1 ;DEFAULT PRINT MODE = SPOOLED ; ; FOLLOWING PRINTER ASSIGNMENT WOULD  LOKDRV: CALL CALCBV ;CALC DRIVE BIT VECTOR PUSH D ;SAVE DRIVE BIT VECTOR MVI C,LKDFCN ;C=LOCKOUT DRIVE FUNCTION CALL OPS EXIST ON USER 0 OF SYSTEM DRIVE AND CONTAIN ; A SINGLE COMMAND "DO BATCH". "BATCH.AUT" IS CREATED ; WITH THE AUTOLOAD COMMANDANDSHAKE ;LSTXON ;PRINTER DRIVER FOR XON/XOF HANDSHAKE SQSERIAL ;STANDARD SERIAL MULTIPLEX DRIVER SSSIO ;SUPER SLAVE SERIAL "SYSLOG.SYS" IN USER 31. SYSLOG.SYS CAN START OUT AS ; A ZERO LENGTH FILE CREATED UNDER WORDSTAR OR SOME OTHER EDITOR ; AUTU ..X: CALL DMS ;DISPLAY MESSAGE .ASCIS [ACR] [ALF] LDA OPTFLG ;GET OPTION FLAGS BIT REP,A ;REPEAT FLAG SET? JZ WBOOT ;IMAKE PRINTER B LOCAL ; AND LOCALLY SPOOLED ; ;PTRAST+3 = 00,LSTDRA ;RELATIVE PRINTER 0, USED FOR PARALLEL PRINTER ;QUEAST+3 SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR .COM FILES COMPAT = 0F0 ;FILE/RECORD LOCKING COMPATIBILITY FLAGS ;CPMVER = 022 ;INHIBI. THE FILE "BATCH.DO" MUST ; ALSO EXIST ON USER 0 OF SYSTEM DRIVE, IT SHOULD BE A ; FIFO FILE WITH THE SUSPEND ATTRIBUTE SET.  I/O DRIVERS SSPIO ;SUPER SLAVE PARALLEL I/O DRIVER SSCKTDR ;SUPER SLAVE CIRCUIT DRIVER SSRESET ;SUPER SLAVE RESET DETECTISR = 0FF ;DEFAULT = USER 0, PRIVILEGED ; NMBMBS = 1 ;PRE-ALLOCATE NMBCKT MESSAGE BUFFERS (SIMPLE SLAVE) NMBRPS = 1 ;PRE-ALSTDSLAVE ;STANDARD NETWORKING SLAVE CPMSUP ;CP/M FUNCTION SUPPORT MODULE HDWINIT ;HARDWARE INITIALIZATION SSMPINIT ;SUPER S= 0,(0) ;QUEUE ASSIGNMENT TABLE, LOCALLY GENERATED QUEUE ;DSPPAT+1 = 2 ;PRINTER B USES QUEUE B ;QUEPTR = 2 ;COME UP ON PRINTT CB-80 RECORD LOCKING SERCHN = 2 ;TWO SERIAL CHANNELS INSTALLED ON A SUPER SLAVE ;CONBR = 08F ;USE 19.2K BAUD TERMINAL FOR  ; ;WARMFN = 0,"BATCH ","AUT" ;WARM START AUTOLOAD FILE NAME ON SSRTC ;SUPER SLAVE REAL TIME CLOCK SSSOM ;SUPER SLAVE SIGN ON MESSAGE ; ; THE FOLLOWING FILES ARE USED FOR A LOCAL PRINLOCATE NMBCKT REPLY WAITING BUFFERS (SIMPLE SLAVE) SLRCHR = "|" ;SLAVE RESET CHARACTER ; ; FOLLOWING ASSIGNMENT FOR GENERATILAVE MEMORY PARITY INITIALIZATION SSINT ;SUPER SLAVE INTERRUPT CONTROLLER SQCON ;SUPER QUAD & SUPER SLAVE CONSOLE DRIVER ;LER B ; ; AUTUSR IS SET FOR USE OF THE LOGON COMMAND. "LOGON.COM" ; SHOULD BE COPIED TO USER 31 AND RENAMED TO "WARMSTRT.AUT".CONSOLE CONBR = 08E ;USE 9600 BAUD TERMINAL FOR CONSOLE ATNCHR = 0 ;USE "BREAK" KEY FOR ATTENTION ;FFCHR = "^Z" ;USE CONTRORA A ;QUOTENT=0? JRNZ ..DD ;IF NOT, DISPLAY DIGIT INR C DCR C ;LEADING ZERO FLAG SET? RZ ;IF NOT, DONE ..DD: ADI "0" TER ; THAT IS SPOOLED AND ACCESSABLE THRU THE NETWORK ; NETSVC ;NETWORK REQUEST SERVICE PROCESS DSPOOL ;DESPOOLER NG SLAVE TO BE ; USED A A BACKROUND BATCH PROCESSOR WITH COMMANDS ; SEND TO IT VIA THE BATCH COMMAND. "BATCH.AUT" FILE ; MUSTSTCTS ;PRINTER DRIVER FOR 9600 BAUD, CTS HANDSHAKING ;LSTPAR ;PARALLEL PRINTER DRIVER ;LSTETX ;PRINTER DRIVER FOR ETX/ACK H ; YOU WILL NEED A "USERID.SYS" FILE WITH YOUR USER ID'S AND ; PASSWORDS. IF YOU WANT A LOG OF SYSTEM ACTIVITY PUT THE ; FILE  *** RELEASE 1.21 UPDATE INFORMATION *** 1. BUG IN COMPUTE FILE SIZE FUNCTION (FUNCTION 35) FIXED. OW DIAGNOSES AND IGNORES MULTIPLE DEFINED STARTING ADDRESSES. 11. BUG IN MONITOR COMMAND FIXED. THIS BUG CAUS. 7. BUG IN LOGON COMMAND FIXED. THIS BUG CAUSED THE LOGON TO FAIL IF THE SYSLOG.SYS WAS PRESENT, RESULTING HIS BUG CAUSED INSUFFICIENT MEMORY CONDITIONS NOT TO BE DIAGNOSED PROPERLY, GENERALLY RESULTING IN SYSTEM CRASH. 17.  WAS NOT SET. 4. SGLLOG.REL MODULE DELETED. THE SINGLE LOGON MODULE CAN NO LONGER BE SUPPORTED DUE TO THE MUE FUNCTION WAS PROCESSED. 14. NEW PATCHABLE SYSTEM PARAMETER ADDED (NMBRPS). NMBRPS (NUMBER OF REPLY WAITING PACKETS THIS BUG CAUSED ALL FILES IN USER ZERO TO BE ACCESSABLE WHETHER OR NOT THE GLOBAL ATTRIBUTE WAS SET. 2. BUG IN NETED LOWER CASE HEX DIGITS ENTERED IN THE EXAMINE MODE TO BE IGNORED. 12. SLAVE PROCESSOR DOWNLOAD REQUEST REQUIREMENTIN ENDLESS AUTOLOADING OF THE LOGON COMMAND. 8. BUG IN USER COMMAND FIXED. THIS BUG CAUSED THE "NON-PRIVILEG USER SIGN-ON MESSAGE CAPABILITY ADDED. IF SYMBOL USRSOM IS DEFINED, IT WILL BE ASSUMED TO BE A USER SUPPLIED SIGNLTIPLE MASTER CAPABILITIES. 5. BUG IN LOGON/LOGOFF PROCESSOR FIXED. THIS BUG CAUSED ALL FILES IN USER ZERO WITH THE) MAY NOW BE SET TO PRE-ALLOCATE REPLY WAITING PACKETS IN THE SAME MANNER AS NMBMBS (NUMBER OF MESSAGE BUFFERS) TOWORK MANAGER FIXED. THIS BUG CAUSED MESSAGE BUFFERS TO BE DISCARDED RATHER THAN BEING RE-USED, RESULTING IN LOSS O CHANGED. IT IS NO LONGER NECESSARY FOR THE DOWNLOAD REQUEST MESSAGE HEADER TO HAVE MESSAGE ORIGIN ID SET EQUAL TOED USER" MESSAGE TO DISPLAY WITH TRAILING GARBAGE ON THE CRT. 9. BUG IN DIR COMMAND FIXED. THIS BUG CAUSED T-ON MESSAGE TERMINATED BY A "$" AND WILL BE DISPLAYED IMMEDIATELY FOLLOWING THE NORMAL TURBODOS SIGN-ON MESSAGE.  GLOBAL ATTRIBUTE SET TO BE ACCESSABLE WHEN LOGGED OFF UNDER THE LOGGED OFF USER NUMBER (NORMALLY 31). 6. BU PREVENT TRAPPING OF DISK BUFFERS. 15. BUG IN VERIFY COMMAND FIXED. THIS BUG CAUSED DUPLICATE MAP ENTRIES TO F TPA, TRAPPING OF DISK BUFFERS, AND POSSIBLE SYSTEM CRASH. 3. BUG IN LOAD FILE PROCESSOR FIXED. THIS BUG CA THE MESSAGE SOURCE ID. THIS DUPLICATION IS NOW TAKEN CARE OF INTERNALLY. 13. RETURN BUFFER PARAMETERS FUNCTION (FUNHE THREE COLUMN DISPLAY MODE TO EXCEED AN 80 COLUMN DISPLAY LINE. 10. GEN COMMAND ENHANCED. THE GEN COMMAND N 18. COPY/DELETE/DIR/QUEUE/RENAME/SERIAL/SET/SHOW COMMANDS NOW CHECK FOR SUFFICIENT MEMORY WHILE BUILDING SORTED DIRECG IN DATE COMMAND FIXED. DATE COMMAND NO LONGER OUTPUTS ESCAPE-I SEQUENCE WHEN RE-DISPLAYING DATE AND TIME PROMPTSBE MADE IN THE BLOCKS.BAD FILE, CONSUMING DIRECTORY MAP AREA IN THE ENTRY. 16. BUG IN VERIFY COMMAND FIXED. TUSED ALL BUT THE FIRST OF SIMULTANEOUS AUTO OR PROGRAM LOAD SEQUENCES TO FAIL IF THE PERMISSIVE COMPATABILITY FLAGCTION 97) NOW RETURNS WITH THE A-REGISTER EQUAL TO MEMORY SIZE OF PROCESSOR WHERE ORIGINATED, RATHER THAN WHERE TH TORY LISTS. THE SORT ALGORITHM HAS ALSO BEEN ENHANCED TO IMPROVE PERFORMANCE. 19. BUG IN MONITOR COMMAND FIXCP/M OR PREVIOUS TURBODOS OPERATING SYSTEM RELEASES. THE DIR.COM COMMAND DISPLAYS A "(H)" BETWEEN THE DATE AND TI ANY PROCESS BUT CONTAINING RECORDS, WILL HAVE THOSE RECORDS DISCARDED IF EITHER: (1). THE FIFO IS RENAMED. ORE FILES WITH THE ARCHIVED ATTRIBUTE SET. 2. SPOOLER ENHANCED. ON ENCOUNTERING A FULL DISK CONDITION, THE S22. PACKAGE COMMAND ADDED. (PACKAGE.COM) THE PACKAGE COMMAND IS ESSENTIALLY A MICROSOFT RELOCATABLE FILE CONCATE26. PATCH.REL MODULE LENGTHENED. THE PATCH MODULE HAS BEEN LENGTHENED FROM 64 BYTES TO 128 BYTES. 27. BUG IN OSBOOED. THIS BUG CAUSED "LINKER CONTROL ERROR" MESSAGE TO BE DISPLAYED WHEN ATTEMPTING TO LOAD THE MONITOR COMMAND INTME FIELDS FOR DISKS WITH HASHED DIRECTORIES. HASHING SHOULD SIGNIFICANTLY IMPROVE NON WILD CARD DIRECTORY PERFORMA (2). THE FIFO ATTRIBUTE (F1) IS TURNED OFF. 24. HASHED DIRECTORY SEARCH SUPPORT ADDED. DISK DIRECTORIES WILL BE MPOOLER NOW CLOSES THE CURRENT PRINT FILE BUT DOES NOT QUEUE IT. IT THEN DISPLAYS AN ERROR MESSAGE AND REQUESTS ANNATOR. COMMAND SYNTAX FOR PACKAGE.COM IS IDENTICAL TO THE GEN.COM COMMAND, EXCEPT THE INPUT FILE NAME DEFAULTS TO ".PKG"T.REL FIXED. THIS BUG CAUSED THE THE FIRST COPY OF OSLOAD.COM FOUND IN THE DIRECTORY TO BE LOADED, WHETHER THE USEO INSUFFICIENT MEMORY. 20. BUG IN WRITE TO UNALLOCATED BLOCK FIXED. THIS BUG CAUSED FILES EXTENDED IN CERTAINNCE ON DISKS WITH LARGE DIRECTORIES. 25. FIXED MEDIA FLAG ADDED TO DST ENTRY BIT SEVEN OF THE ALLOCATION BLOCK SIZE AINTAINED VIA A HASHING ALGORITHM IF SO REQUESTED DURING THE ERASEDIR.COM COMMAND. WHETHER A DIRECTORY IS MAINTAID "IGNORE" OR "ABORT" RESPONSE. AN "IGNORE" RESPONSE CAUSES THE PRINT MODE TO BE SET TO OFFLINE, AND THE APPLICATI INSTEAD OF ".GEN". THIS COMMAND MAY BE USED TO CONSTRUCT CUSTOM "STD" MODULES, PRE-PACKAGE DRIVER MODULES, ADD AR NUMBER WAS ZERO OR NOT. 28. DE-SPOOL MODULE ENHANCED TO PROVIDE IMPROVED PRINTER PERFORMANCE. *** RE NON-SEQUENTIAL ORDERS TO BECOME CORRUPTED. 21. BUG IN RECORD LOCK MANAGER FIXED. THIS BUG CAUSED AN ERROR TOENTRY OF A DST NOW SIGNIFIES THAT THE DISK IS NON-REMOVABLE. THIS WILL CAUSE THE DST ADDRESS TO BE REMEMBERED FORNED VIA HASHING OR NOT IS RECORDED IN THE DISK'S DIRECTORY LABEL. HASHED DIRECTORY DISKS ARE NOT COMPATABLE WITH ON PROGRAM TO CONTINUE WITH FURTHER PRINTING DISCARDED. AN "ABORT" RESPONSE CAUSES THE APPLICATION PROGRAM TO BE DDITIONAL MODULES TO EXISTING "STD" MODULES, ETC. 23. FIFO MANAGER ENHANCED. A RAM FIFO NOT CURRENTLY OPEN BYLEASE 1.22 UPDATE INFORMATION *** 1. BUG IN COPY COMMAND FIXED. THIS BUG CAUSED THE ARCHIVE OPTION TO FAIL TO IGN BE RETURNED IF AN ATTEMPT WAS MADE TO WRITE TO A LOCKED RECORD WHEN THE "LOGICAL" COMPATABILITY FLAG WAS SET. EVER AFTER THE DRIVE IS ACCESSED THE FIRST TIME. MEDIA STATUS DISPLAY HAS BEEN ADDED TO THE DRIVE.COM COMMAND  TERMINATED. A NEW MODULE, "SPLMSG", CONTAINS THE CONSOLE HANDLING PORTION OF THIS ENHANCEMENT AND SHOULD ALWAYS BE INCLU IN FUNCTION 35 (COMPUTE FILE SIZE) FIXED. THIS BUG CAUSED AN INCORRECT FILE SIZE TO BE RETURNED UNDER CERTAIN CIR 1 = CONTINUE AFTER ABORT RESPONSE 4 1 = RETURN TO CALLER AFTER ABORT RESPONSE 7. BUG IN FUNCTION 104 ( TO FAIL ON FILES LARGER THAN 528K IN LENGTH. 16. BUG IN NETREQ MODULE FIXED. THIS BUG CAUSED COMMUNICATION CS MUST BE REGENERATED! 5. SYSTEM COMMANDS ENHANCED. ALL SYSTEM COMMANDS WILL NOW ACCEPT CONSOLE INPUT FROM DQ MODULE FIXED. THIS BUG CAUSED A FAILURE TO PROPERLY DIAGNOSE ACCESSES TO DISK DRIVES FROM SLAVES WHERE THE DRIVEDED WITH THE "SPOOLR" MODULE. 3. DE-SPOOLER ENHANCED. ON ENCOUNTERING AN UNRECOVERABLE ERROR, THE DE-SPOOLERCUMSTANCES. 10. BUG IN COPY COMMAND FIXED. THIS BUG CAUSED AN "UNABLE TO READ SOURCE FILE" ERROR TO OCCUR IF CP/M 3.0 - MP/M II SET DATE/TIME) FIXED. THIS BUG CAUSED SYSTEM TIME SET BY THIS FUNCTION TO BE INCORRECT. 8. BUG IHANNEL FUNCTIONS (FUNCTIONS 87-93) AND THE USER DEFINED FUNCTION (FUNCTION 127) TO FAIL IF THE DESTINATION PROCESSO FILES. 6. FLUSH/FREE BUFFERS FUNCTION ENHANCED. THE FLUSH/FREE BUFFERS FUNCTION (115) NOW ACCEPTS THE FOLLOWING S WERE MARKED INVALID [0FFH,(0)]. A "NOT READY ERROR" MESSAGE IS NOW PROPERLY DISPLAYED. 14. BUG IN SPOOLR MIDULE FI NOW ABORTS THE CURRENT PRINT JOB AND PLACES THE PRINTER OFF-LINE. ANY REMAINING PRINT JOBS WILL REMAIN QUEUED. THE SOURCE FILE WAS AN EXACT MULTIPLE OF 128 RECORDS IN LENGTH. 11. BUG IN FILSUP MODULE FIXED. THIS BUG CAUSED INCON PSA-TO-MICROSOFT CONVERION PROCESSOR (RELCVT.COM) FIXED. THIS BUG CAUSED INCORRECT CONVERSION TO OCCUR IN SOME CASES WHOR (DEFDID) HAD A NETREQ MODULE PRESENT. 17. BUG IN DSPOOL MODULE FIXED. THIS BUG CAUSED THE SYSTEM TO CRASH IF AN A PARAMETERS ON ENTRY: E-REGISTER = DRIVE NUMBER (0=A,...15=P) D-REGISTER = FLAGS BITXED. THIS BUG CAUSED FUNCTION 17/18 SEQUENCES TO FAIL IF A FUNCTION 5 CALL WAS ISSUED WHICH RESULTED IN A NEW SPOO 4. AUTOLOAD COMMAND ENHANCED. THE AUTOLOAD COMMAND WILL NOW ACCEPT MULTIPLE COMMANDS PER LINE. THE DEFAULT CORRECT OPERATION OF DISK DRIVES WITH CERTAIN NUMBERS OF ALLOCATION BLOCKS. 12. BUG IN NETSVC MODULE FIXED. THIERE MULTIPLE MODULES WERE ASSEMBLED FROM ONE SOURCE FILE USING THE PSA ASSEMBLER ".PRGEND" PSEUDO-OP. 9. BUGTTEMPT WAS MADE TO CHANGE A PRINTER'S QUEUE ASSIGNMENT WHILE THE PRINTER WAS IN STOPPED MODE. 18. BUG IN BUFMGR MODU --- 7 1 = FREE BUFFER 6 1 = DISCARD BUFFER AFTER ABORT RESPONSE 5 LER PRINT FILE BEING CREATED. 15. BUG IN FILMGR FIXED. THIS BUG CAUSED THE RENAME FILE FUNCTION (FUNCTION 23)MMAND LINE SEPERATOR IS "|" WHICH WILL BE REPLACED BY A "\". ALL AUTOLOAD FILES GENERATED WITH PREVIOUS AUTOLOAD COMMANDS BUG CAUSED IMPROPER OPERATION WITH DIRECT PRINTING WHEN IMPLICIT NETWORK FORWARDING WAS INVOLVED. 13. BUG IN NETRE LE FIXED. THIS BUG IS PROBABLY RESPONSIBLE FOR MANY NON-REPRODUCABLE DISK DATA AND DIRECTORY ERRORS. TWO KNOWN EXRITING PROCESS. (2) FIFO FILES OPENED GLOBALLY ARE NO LONGER FORCED TO READ ONLY STATUS WHEN THE GLOBAL WRITE DULE FIXED. THIS BUG CAUSED FUNCTION 17/18 SEQUENCES TO REPEAT ENDLESSLY ON HASHED DIRECTORIES WHEN A FUNCTION 17  FROM DRIVE P DOWNWARD TO DRIVE A INSTEAD OF THE NORMAL UPWARD SCAN. SCANDN DEFAULTS TO 0 (FALSE) AND MAY BE PATCHED TO 0MARGIN WIDTH ON LISTING 104H 0C FORM FEED CHARACTER DO.COM 103H "{" LEFT DELIMETER AMPLES ARE: (1). AN ALLOCATION BLOCK ASSIGNED TO TWO FILES AT THE SAME TIME. (2). AN ERROR DURING THE CLOSINCOMPATABILITY FLAG IS FALSE. 26. THE FOLLOWING IS A RECAP OF PATCHABLE LOCATIONS IN COMMAND FILES. (NOTE THAT SOME AON A UNAMBIGUOUS FILE NAME WAS FOLLOWED BY A FUNCTION 18 WITH THE FILE NAME REPLACED BY AN AMBIGUOUS SPECIFICATIONFF (TRUE). 21. BUG IN FILSUP MODULE FIXED. THIS BUG CAUSED FILE MANAGEMENT PROBLEMS WITH CERTAIN PATHOLOGOCICALLY  104H "}" RIGHT DELIMETER LOGON.COM 103H 0C FORM FEED CHARACTER MASTER 103H 0G OF AN EXTENT OR FILE (SOMETIMES DURING READ OR WRITE OPERATIONS). 19. BUG IN DO COMMAND FIXED. THISRE NEW ADDITIONS). AUTOLOAD.COM 103H "|" COMMAND LINE SEPERATOR CHARACTER 104H "\" COMMAND . 24. RENAME FILE FUNCTION (FUNCTION 23) ENHANCED. THE RENAME FILE FUNCTION NOW RESETS THE ARCHIVED (T3) ATTRIBUTE.  ORDERED HASHED DIRECTORIES. 22. DO COMMAND ENHANCED. GLOBAL DO FILES ENVOKED FROM USER 0 BY A PRIVILEGED USER R1 ATTENTION CHARACTER 104H 13 ATTENTION SUBSTITUTE CHARACTER SEND.COM 103H "|" COMMAND  BUG CAUSED A BAD TEMPORARY FILE NAME TO BE GENERATED IF THE DO FILE NAME CONSISTED OF A SINGLE CHARACTER FILE TYPE. 2LINE SEPERATOR SUBSTITUTE CHARACTER BATCH.COM 103H "|" COMMAND LINE SEPERATOR CHARACTER 104H  25. FIFO FILE OPERATION ENHANCED. (1) FIFO FILES OPENED IN PERMISSIVE MODE ARE NO LONGER LIMITED TO ONE WEQUIRING A TEMPORARY FILE HAVE THE TEMPORARY FILE CREATED WITH THE GLOBAL ATTRIBUTE SET. 23. BUG IN FILSUP MOLINE SEPERATOR CHARACTER 104H "\" COMMAND LINE SEPERATOR SUBSTITUTE CHARACTER 0. TURBODOS LOADER (OSLOAD.COM) ENHANCED. A PATCHABLE SYMBOL (SCANDN) HAS BEEN ADDED TO ALLOW THE LOADER TO SCAN "\" COMMAND LINE SEPERATOR SUBSTITUTE CHARACTER 105H 00 FIFO DISK DIR.COM 103H 03 LEFT  .PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - NET/82 INTERRUPT CONTROLLER ROUTINES" .SBTTL "COPYRIGHT (C) 1981, SOFTWARE 2000, INOC MVI A,70H ; CLEAR INTERRUPT SERVICE REGISTER OUT ICOC CALL INTCOM ;SET INTERRUPT MASK REGISTER ; MVI A,018H ;RESET S RESET 9519 OUT ICOC MVI A,80H ; LOAD MODE 0-4 OUT ICOC MVI A,0A9H ; LOAD MODE 5,6 AND SET 7 OUT ICOC MVI A,0C0H ; P9 CMA OUT ICOD RET ;DONE ; INTBIT: MOV B,A ;PUT INTERRUPT NUMBER INTO B INR B ;MAKE INTERRUPT NUMBER 'ONE RELATIVE' YTE CONTAINS A ONE BIT FOR EACH INTERRUPT ; ON THE 9519A WHICH IS CURRENTLY ENABLED. ; INTMSK::.BYTE 000H ;INTERRUPT MASK BYTPT. ; INTENA:: PUSH PSW ;SAVE INTERRUPT NUMBER PUSH H ;SAVE INTERRUPT SERVICE ROUTINE ADDRESS ; CALL INTBIT ;COMPUTE INC. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MuSYS CORP. ; ; AUTHORS: ROIO CHANNELS OUT SIOA OUT SIOB OUT SIOA OUT SIOB ; LXI H,INTNIT ;GET INITIALIZATION CODE ADDRESS JMP DEALOC# ;DE-ALRESELECT AUTOLOEAR OUT ICOC MVI A,0FFH ; LOAD AUTOCLEAR - ALL CHANNELS OUT ICOD ; LXI D,(0E0H*256)+IVEC ;9519 CHANNEL + XRA A ;COMPUTE INTERRUPT BIT STC ..ILP: RAL DJNZ ..ILP LXI H,INTMSK ;POINT TO INTERRUPT MASK BYTE RET ;DONE ; ; THE ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; ; COLD START INITIALIZATION FOR THE 9519A INTERRUPT CONTROLLER ; .WORD NITLENTERRUPT BIT IN A (HL = INTMSK) ORA M ;SET PROPER ENABLE BIT MOV M,A ; POP D ;GET ISR ADDRESS IN D POP PSW ;RESTORE INTEANLD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 10/19/81 ; .IDENT INTN82 ;MODULOCATE INITIALIZATION CODE ; NITLEN = .-INTNIT ;INITIALIZATION CODE LENGTH ; ; THIS ROUTINE SHOULD NEVER BE ENTERED. ; BAD VECTOR MVI B,8 ;INITIALIZE 8 CHANNELS ..ILP: MOV A,D ;SELECT 9519 CHANNEL OUT ICOC MOV A,E ;SEND VECTOR ADDRESS OUT ICIS ROUTINE IS CALLED WITH A EQUAL TO THE INTERRUPT NUMBER ; IF IT IS NECESSARY TO DISABLE A PREVIOUSLY ENABLED INTERRUPT. ; I+2 ;INITIALIZATION CODE LENGTH ; INTNIT::XRA A ;SET INTERRUPT BASE PAGE ZERO STAI IM2 ;SET INTERRUPT MODE TWO ; LXI DRRUPT NUMBER IN A MOV L,A ;COMPUTE VECTOR ADDRESS MVI H,0 LXI B,IVEC DAD H DAD B MOV M,E ;PLACE ISR ADDRESS INTO VECLE ID ; SIOA = 01H ;SIO CHANNEL A COMMAND PORT SIOB = 03H ;SIO CHANNEL B COMMAND PORT ; ICOD = 18H ; 9519 DATA PORT ICOINT: DI ;BAD INTERRUPT VECTOR TAKEN HLT ;WAIT FOR RESET JMPR BADINT ; ; THIS ROUTINE IS CALLED WITH A EQUAL TO THE INTEROD INR D ;BUMP VARIABLES INR E INR E DJNZ ..ILP ;JUMP IF NOT DONE YET ; MVI A,40H ; CLEAR INTERRUPT REGISTER OUT ICNTDIS:: CALL INTBIT ;COMPUTE PROPER MASK BIT (HL = INTMSK) CMA ;CLEAR THE ENABLE BIT ANA M MOV M,A JMPR INTCOM ;GO TE,BADINT ;SET DEFAULT INTERRUPT VECTORS LXI H,IVEC MVI B,8 ..LP: MOV M,E INX H MOV M,D INX H DJNZ ..LP ; XRA A ;TOR INX H MOV M,D ; INTCOM: MVI A,0B0H ;SELECT INTERRUPT MASK REGISTER OUT ICOC LDA INTMSK ;SEND INTERRUPT MASK TO 951C = 19H ; 9519 COMMAND PORT ; IVEC = 10H ; INTERRUPT VECTOR BASE ADDRESS ; .LOC .DATA.# ;LOCATE IN DATA AREA ; ; THIS BRUPT NUMBER ; AND HL EQUAL TO THE INTERRUPT SERVICE ROUTINE ADDRESS. ; IT SETS UP THE INTERRUPT VECTOR AND ENABLES THE INTERRU LL INTERRUPT CONTROLLER ; ; THIS IS THE STANDARD EXIT PROCEDURE FOR INTERRUPT SERVICE ROUTINES. ; INTXIT:: ;NO SPECIAL CODE #`=I%9XSU悠LST3FFd5DE$LST3BR%a)q@: FD2*J dUD) .BYTE 016H ;MVI D, LST3BR::.BYTE 025H ; 25H (=300 BAUD, NO INPUT) ; MOV A,E ;GET FUNCTION NUMBER CPI 2 ;FUNCTION NUM FOR NET/80 ; POP H ;RESTORE REGISTERS POP D POP B POP PSW LSPD INTSP# JMP ISRXIT# ;INTERRUPT EXIT TO OPERATING SYS.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - 300 BAUD LIST DRIVER" .SBTTL "COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC." ; ; COPYS `=I%9XSU撀INTMSKdDHINTENAdDD8HINTXIT%0Gv5LB1F}+a*ZaBER=2? JRZ LSTOUT ;IF SO, CONTINUE CPI 7 ;FUNCTION NUMBER=7? JRZ LSTWSR ;IF SO, CONTINUE RET ;ELSE, DONE ; LSTWSR: LDTEM ; .XSYM .END  ;RESTORE REGISTERS POP D POP B POP PSW LSPD INTSP# JMP ISRXIT# ;INTERRUPT EXIT TO OPERATING SYSRIGHT (C) 1981 BY SOFTWARE 2000, INC. ; ; AUTHORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; VERSION: 11/25/81 ; .IDENT ?aAaL0Qamk` i4<ͮ cEo!sdu0$W2Y^;N= 02A LST3FF ;GET FORM FEED CHARACTER MOV C,A ;FORM FEED CHARACTER TO C-REG MVI E,2 ;SET FUNCTION NUMBER=2 ; LSTOUT: JMP SERIALST300 ;MODULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; .LOC .DATA.# ;LOCATE IN DATA AREA ; LST3FF::.BYTE APS1%9QMB3$TԖU'L# ;CONTINUE ; .XSYM .END ER MOV C,A ;FORM FEED CHARACTER TO C-REG MVI E,2 ;SET FUNCTION NUMBER=2 ; LSTOUT: JMP SERIAFF ;FORM FEED CHARACTER ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; LSTDR%:: ; MVI D,025H ;SET DEFAULT BAUD RATE CODE (300 BA NUMBER CPI 2 ;FUNCTION NUMBER=2? JRZ LSTOUT ;IF SO, CONTINUE CPI 7 ;FUNCTION NUMBER=7? JRZ LSTWSR ;IF SO, CONTINUE RETIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 11/09/81 ; .IDENT LSTETX ;MODULE ID ; C. & MuSYS CORP." ; ; COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MuSYS CORP. ; ; AUTHORS:  ;ELSE, DONE ; LSTWSR: ; MVI C,AFF ;FORM FEED CHARACTER TO C-REG .BYTE 00EH ;(MVI C,) CTSFF:: .BYTE AFF ;(FORM FEED CHARA.INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; .LOC .DATA.# ;LOCATE IN DATA AREA ; ETXLEN::.BYTE 140 ;CHARACTER COUNT BETRONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 10/10/81 ; .IDENT LSTCTS ;MOCTER) ; MVI E,2 ;SET FUNCTION NUMBER=2 ; LSTOUT: JMP SERIAL# ;CONTINUE ; .XSYM .END TSFF:: .BYTE AFF ;(FORM FEED CHARAWEEN ETX'S ETXSEQ::.BYTE 3 ;MAX ESCAPE SEQUENCE LENGTH ETXFF:: .BYTE AFF ;FORM FEED CHARACTER CHRCNT: .BYTE [16]0 ;CHARACTER DULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; LSTDR%:: ; MVI D,06EH .PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - ETX/ACK PRINTER DRIVER" .SBTTL "COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. & MuSYS C`=I%9XSU` jhJQ - o,p0<a 8COUNT SEQCNT: .BYTE [16]0 ;SEQUENCE COUNT ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; LSTDR%:: ; MVI D,007H ;SET DEFAULT BAU;SET DEFAULT BAUD RATE CODE .BYTE 016H ;(MVI D,) CTSBR:: .BYTE 06EH ;(BAUD RATE CODE - 9600 BAUD) ; MOV A,E ;GET FUNCTION ORP." ; ; COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MuSYS CORP. ; ; AUTHORS: RONALD E. RA.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - DATA TERMINAL READY PRINTER DRIVER" .SBTTL "COPYRIGHT (C) 1981 BY SOFTWARE 2000, IN D RATE CODE IN D .BYTE 016H ;(MVI D,) ETXBR:: .BYTE 007H ;(BAUD RATE CODE - 1200 BAUD) ; MOV A,E ;GET FUNCTION NUMBER CPVI E,1 ;SET FUNCTION NUMBER=1 CALL SERIAL# ;GET SERIAL INPUT JMPR ..SIOC ;CONTINUE ..SOUT: PUSH B ;SAVE CHANNEL NUMBER/CHARTER=ESCAPE? JRNZ ..NESC ;IF NOT, CONTINUE CALL ..GSCA ;ELSE, GET SEQUENCE COUNT ADDRESS LDA ETXSEQ ;GET MAX ESCAPE SEQUENCA,M ;GET SEQUENCE COUNT ORA A ;IN ESCAPE SEQUENCE? JRNZ ..OUT ;IF SO, CONTINUE PUSH B ;ELSE, SAVE OUTPUT CHARACTER MVI CU#`=I%9XSU`0ETXLENdUE4UETXFFd5DE$ETXBR#` hX{I 2 ;FUNCTION NUMBER=2? JRZ LSTOUT ;IF SO, CONTINUE CPI 7 ;FUNCTION NUMBER=7? JRZ LSTWSR ;IF SO, CONTINUE RET ;ELSE, DOACTER PUSH D ;SAVE FUNCTION NUMBER CALL SERIAL# ;OUTPUT CHARACTER ..SIOC: POP D ;RESTORE FUNCTION NUMBER POP B ;RESTORE CE LENGTH MOV M,A ;SET SEQUENCE COUNT ..NESC: CALL ..SOUT ;OUTPUT CHARACTER CALL ..GCCA ;GET CHARACTER COUNT ADDRESS INR M,AETX ;GET ETX CHARACTER CALL ..SOUT ;OUTPUT ETX CHARACTER ..WAIT: CALL ..SIN ;ELSE, GET SERIAL INPUT ANI 7FH ;STRIP SIGN BPd<<f@/mi?-F(8ͫ ڦ?6'1ٵu@ڸͬFmi+T<f+ͫ  $C1jENE ; LSTWSR: LDA ETXFF ;GET FORM FEED CHARACTER MOV C,A ;FORM FEED CHARACTER TO C-REG MVI E,2 ;SET FUNCTION NUMBER=2 ; LHANNEL NUMBER/CHARACTER RET ;DONE ..GCCA: LXI H,CHRCNT ;GET CHARACTER COUNT TABLE JMPR INDEX ;CONTINUE ..GSCA: LXI H,SEQ ;INCREMENT CHARACTER COUNT CALL ..GSCA ;GET SEQUENCE COUNT ADDRESS DCR M ;DECREMENT SEQUENCE COUNT RP ;IF POSITIVE, DONEIT SUI AACK ;CHARACTER=ACK? JRNZ ..WAIT ;IF NOT, WAIT CALL ..GCCA ;ELSE, GET CHARACTER COUNT ADDRESS MOV M,A ;RESET CHAR_hI()STOUT: CALL ..GCCA ;GET CHARACTER COUNT ADDRESS MOV A,M ;GET CHARACTER COUNT LXI H,ETXLEN ;GET CHARACTER COUNT BETWEEN ETX'CNT ;GET SEQUENCE COUNT TABLE ; INDEX: PUSH D ;SAVE FUNCTION NUMBER MOV E,B ;CHANNEL NUMBER TO DE-REG MVI D,0 ;DOUBLE LEN INR M ;ELSE, RESTORE COUNT TO 0 RET ;DONE ..SIN: PUSH B ;SAVE CHANNEL NUMBER/CHARACTER PUSH D ;SAVE FUNCTION NUMBER MACTER COUNT POP B ;RESTORE OUTPUT CHARACTER ..OUT: MOV A,C ;GET OUTPUT CHARACTER ANI 7FH ;STRIP SIGN BIT CPI AESC ;CHARACS CMP M ;MAX CHARACTER COUNT OUTSTANDING? JRC ..OUT ;IF NOT, CONTINUE CALL ..GSCA ;ELSE, GET SEQUENCE COUNT ADDRESS MOV GTH DAD D ;INDEX INTO TABLE POP D ;RESTORE FUNCTION NUMBER RET ;DONE ; .XSYM .END ER TO DE-REG MVI D,0 ;DOUBLE LEN .PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - NET/80 PARALLEL LIST DRIVER" .SBTTL "COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. & MuIME LXI H,PARDAT;POINT TO DATA AREA JMP PARAO# ;CONTINUE ; .XSYM .END GET THIS CHARACTER STA LAST ;SAVE IT FOR NEXT T .WORD ..MX ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; LSTDR%::PUSH B ;SAVE REGISTERS PUSH D LXI H,PARMX ;MUTUAL EXCLUSISYS CORP." ; ; COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981 BY MuSYS CORP. ; ; AUTHORS: RONALON CALL WAIT# POP D ;RESTORE REGISTERS POP B MOV A,E ;GET FUNCTION CODE CPI 2 ;OUTPUT CHARACTER? JRZ ..XIT ;YES, GO D E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 11/25/81 ; .IDENT LSTPAR ;MODULE .PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - XON/XOFF PRINTER DRIVER" .SBTTL "COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. & MuSYS DO IT CPI 7 ;CONDITIONAL FORM FEED? RNZ ;NO, EXIT MVI C,0CH ;YES, MAKE IT A REAL FORM FEED LDA LAST ;GET LAST CHARACTERID ; .INSERT DREQUATE ;O/S SYMBOLIC EQUIVALENCES ; .LOC .DATA.# ;LOCATE IN DATA AREA ; LAST: .BYTE 00CH ;LAST CHARACTER ST`=I%9XSU`LSTDR@ % V3@ O; ` 2# ]%R2BTTSCORP." ; ; COPYRIGHT (C) 1981 BY SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MUSYS CORP. ; ; AUTHORS: RONALD E. R OUT CMP C ;WAS IT A FORM FEED? RZ ;YES, IGNORE THIS ONE ..XIT: MOV A,C ;GET THIS CHARACTER STA LAST ;SAVE IT FOR NEXT TENT OUT ; PARDAT: .BYTE [8]0 ;DUMMY DATA AREA FOR PARALLEL PORT PARMX: .WORD 1 ;MUTUAL EXCLUSION SEMAPHORE ..MX: .WORD ..MX  AIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 11/25/81 ; .IDENT LSTXON ;MODULE ID ; H D ;SAVE FUNCTION NUMBER MVI E,0 ;SET FUNCTION NUMBER=0 CALL SERIAL# ;GET SERIAL STATUS JMPR ..SSIC ;CONTINUE ; ..SIN: .PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - MASTER NETWORK DRIVER (MuSYS NET/80)" .SBTTL "COPYRIGHT (C) 1981, 1982, SOFTWARE 20 C,A ;FORM FEED CHARACTER TO C-REG MVI E,2 ;SET FUNCTION NUMBER=2 ; LSTOUT: CALL ..SST ;GET SERIAL STATUS ORA A ;CHARACTER .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; .LOC .DATA.# ;LOCATE IN DATA AREA ; XONFF:: .BYTE AFF ;FORM FEED CHARACTEӣ`=I%9XSUXONFFd5DE$XONBR%`9q@: K@–69ͦc" {+T<fҰPUSH B ;SAVE CHANNEL NUMBER/CHARACTER PUSH D ;SAVE FUNCTION NUMBER MVI E,1 ;SET FUNCTION NUMBER=1 CALL SERIAL# ;GET SERIAL00, INC. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, 1982, MuSYS CORP. ; ; AVAILABLE? JRZ ..OUT ;IF NOT, CONTINUE CALL ..SIN ;ELSE, GET SERIAL INPUT ANI 7FH ;STRIP SIGN BIT CPI ADC3 ;CHARACTER=DR ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; LSTDR%:: ; MVI D,7 ;SET DEFAULT BAUD RATE (7 = 1200 BAUD) .BYTE 016H ;MVI D, YdN2*J d STATUS ..SSIC: POP D ;RESTORE FUNCTION NUMBER POP B ;RESTORE CHANNEL NUMBER/CHARACTER RET ;DONE ; .XSYM .END  SERIAL AUTHORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 02/21/82 ; .IDENT MC3 (XOFF)? JRNZ LSTOUT ;IF NOT, WAIT ..WAIT: CALL ..SIN ;GET SERIAL INPUT ANI 7FH ;STRIP SIGN BIT CPI ADC1 ;CHARACTER=DC1 XONBR:: .BYTE 7 ; 7 (= 1200 BAUD) ; MOV A,E ;GET FUNCTION NUMBER CPI 2 ;FUNCTION NUMBER=2? JRZ LSTOUT ;IF SO, CONTINUE NDN80 ;MODULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; RESET = 0 ;RESET SLAVE PROCESSOR INT = 1 ;INTERRUPT  (XON)? JRNZ ..WAIT ;IF NOT, WAIT ..OUT: JMP SERIAL# ;OUTPUT CHARACTER ; ..SST: PUSH B ;SAVE CHANNEL NUMBER/CHARACTER PUS CPI 7 ;FUNCTION NUMBER=7? JRZ LSTWSR ;IF SO, CONTINUE RET ;ELSE, DONE ; LSTWSR: LDA XONFF ;GET FORM FEED CHARACTER MOV SLAVE PROCESSOR RESREQ = 3 ;RESET SLAVE PROCESSOR REQUEST ; SPWOUT = 0 ;SLAVE PROCESSOR WAITING ON OUTPUT SPWIN = 1 ;SLAVS INX H MOV M,D INX H MOV M,E INX H MOV M,D INX H DJNZ ..IPSL ;CONTINUE FOR NUMBER OF SLAVES POP PSW ;RESTORE R OF SLAVES * 2 TO C-REG ADD A ;X2=X4 ADD C ;+2=X6 MOV L,A ;NUMBER OF SLAVES * 6 TO HL-REG MVI H,0 ;DOUBLE LENGTH CALLIALIZATION CODE LENGTH ; NETDR%::MOV A,C ;GET FUNCTION NUMBER PUSH PSW ;SAVE FUNCTION NUMBER PUSH D ;SAVE MESSAGE BUFFER AN: .WORD 0 ;POLL ROUTINES ADDRESS POLCNT: .BYTE [16]0 ;POLL ROUTINES DOWN COUNTERS ; REQBLK: .BYTE [10]0 ;REQUEST BLOCK ; S TO C-REG ..IPRL: INX H ;ADVANCE PAST LINK POINTERS INX H INX H INX H MVI M,3EH ;STORE (MVI A,) INSTRUCTION INX H E PROCESSOR WAITING ON INPUT OVRRUN = 2 ;SLAVE PROCESSOR OVERRUN REQEST = 3 ;SLAVE PROCESSOR REQUEST ; MAXTRY = 10 ;MAX RNUMBER OF NET/80 SLAVES PUSH PSW ;SAVE NUMBER OF NET/80 SLAVES MOV L,A ;NUMBER OF NET/80 SLAVES TO HL-REG MVI H,0 ;DOUBLE  ALLOC# ;ALLOCATE PACKET FOR SEMAPHORES SHLD POLSPH ;SAVE POLL SEMAPHORES BASE ADDRESS POP PSW ;RESTORE NUMBER OF NET/80 SLADDRESS MOV A,B ;GET MESSAGE DESTINATION ID CALL DIDCOM ;DO COMMON SETUP POP H ;RESTORE MESSAGE BUFFER ADDRESS POP PSW ;R.LOC .PROG.# ;LOCATE IN PROGRAM AREA ; .WORD NITLEN+2 ;INITIALIZATION CODE LENGTH ; NETIN%::LDA NMBN80 ;GET NUMBER OF NET/MOV A,C ;GET NUMBER OF NET/80 SLAVES SUB B ;CALC NET/80 SLAVE ID MOV M,A ;STORE DESTINATION ID INX H MVI M,0C3H ;STORE (ESET TRY COUNT ; .LOC .DATA.# ;LOCATE IN DATA AREA ; NMBN80::.BYTE 2 ;NUMBER OF NET/80 SLAVES ; N80PAT:: ;NET/80 PORT ADLENGTH MOV E,L ;NUMBER OF NET/80 SLAVES TO DE-REG MOV D,H DAD H ;X2 DAD H ;X2=X4 DAD H ;X2=X8 DAD D ;+1=X9 CALL ALVES PUSH PSW ;SAVE NUMBER OF NET/80 SLAVES MOV B,A ;NUMBER OF SLAVES TO B-REG XRA A ;A-REG=0 ..IPSL: MOV M,A ;SET SEMAPHOESTORE FUNCTION NUMBER ORA A ;FUNCTION NUMBER=0? JRZ RESSLV ;IF SO, CONTINUE MVI D,5 ;SET RETRY COUNTER TO 5 DCR A ;FUNC80 SLAVES ORA A ;NUMBER OF NET/80 SLAVES=0? RZ ;IF SO, DONE DCR A ;ELSE, DECREMENT NUMBER OF SLAVES ANI 0FH ;LIMIT TO 1JMP) INSTRUCTION INX H MOV M,E ;STORE NET/80 POLL ROUTINE ADDRESS INX H MOV M,D INX H DJNZ ..IPRL ;CONTINUE FOR NUMBDRESS TABLE .BYTE 20H .BYTE 22H .BYTE 24H .BYTE 26H .BYTE 28H .BYTE 2AH .BYTE 2CH .BYTE 2EH .BYTE 30H .BYTE LOC# ;ALLOCATE PACKET FOR POLL ROUTINES SHLD POLRTN ;SAVE POLL ROUTINES BASE ADDRESS LXI D,N80POL ;GET NET/80 POLL ROUTINE RE COUNT=0 INX H MOV M,A INX H MOV E,L ;COPY SEMAPHORE ADDRESS INTO DE-REG MOV D,H MOV M,E ;INITIALIZE P/D LIST HEADTION NUMBER=1? JRZ RCVSLV ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=2? JZ SNDSLV ;IF SO, CONTINUE RET ;ELSE, DONE ; RES6 NET/80 SLAVES INR A ;INCREMENT NUMBER OF NET/80 SLAVES PUSH PSW ;SAVE NUMBER OF NET/80 SLAVES ADD A ;X2 MOV C,A ;NUMBEER OF SLAVES LXI H,NETIN% ;GET INITIALIZATION CODE JMP DEALOC# ;DE-ALLOCATE INITIALIZATION CODE ; NITLEN = .-NETIN% ;INIT32H .BYTE 34H .BYTE 36H .BYTE 38H .BYTE 3AH .BYTE 3CH .BYTE 3EH ; POLSPH: .WORD 0 ;POLL ROUTINES SEMAPHORES POLRTADDRESS POP PSW ;RESTORE NUMBER OF NET/80 SLAVES MOV B,A ;NUMBER OF NET/80 SLAVES TO B-REG MOV C,A ;NUMBER OF NET/80 SLAVE SLV: MVI B,MAXTRY ;GET MAX RESET TRY COUNT ..RL: PUSH B ;SAVE RESET TRY COUNT/STATUS PORT PUSH H ;SAVE MESSAGE BUFFER ADDRES B ;DECREMENT MESSAGE LENGTH CALL RCVCOM ;RECEIVE REMAINDER OF MESSAGE JRNZ ..ERR ;IF ERROR, RETRY ..FATL: POP D ;POP OFF R..RL ;CONTINUE ; RCVSLV: PUSH H ;SAVE MESSAGE BUFFER ADDRESS PUSH D ;SAVE RETRY COUNTER (IN D) MVI D,0 ;CLEAR D (MAKES PRO MVI B,0 ;GET TIMEOUT LOOP COUNT ..WTIL: MVI A,1;O., @5x?†7dZ`+ fͬ`"Ef0* qmveuF6NITIALIZATION CODE ; MPENIT:: LXI D,MPEPOL ;GET ADDRESS OF DUMMY POLL ROUTINE CALL LNKPOL# ;CREATE POLL ROUTINE RET ;W.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - NET/82 MEMORY PARITY INITIALIZATION" .SBTTL "COPYRIGHT (C) 1981, SOFTWARE 2000, INC; SPBBUF: ;SLAVE PROCESSOR BOOT BUFFER .BYTE 0 ;SLAVE PROCESSOR BOOT A-REG .BYTE 0FFH ;SLAVE PROCESSOR BOOT C-REG .BYTE@ 6 dXטڣ>аdXטڢ>d=id]` !/0xee=K_ 82N2Mf!S `=I%9XSU曀2NMBN82d%HNETIN@dUDE$ pb2ar: hAIT FOR INITIALIZATION TO COMPLETE ; MPEPOL: ;DUMMY POLL ROUTINE .WORD 0 ;PREDECESSOR LINK POINTER .WORD 0 ;SUCCESSOR LI. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MuSYS CORP. ; ; AUTHORS: RON 0 ;SLAVE PROCESSOR BOOT B-REG .BYTE 0 ;SLAVE PROCESSOR BOOT E-REG .BYTE 0 ;SLAVE PROCESSOR BOOT D-REG .BYTE 0 ;SLAVE PROCHRve).!ioY"*dN@* bbzep""'^2qJ$fD)!'Fj@*"*b g&'%'F}@" Jg!"UrrbJr\el) Nx: v@=P:&3@xH#.b3#9&JH2͢,& /9+xA`;Hڲmeqto?€v͡ X;JfЀa+# U!dLW(2y?ȇL! hY[+B<3@ 0rBif^X fHV~,AFf  dl E4KT N82CTL ; LXI H,MPEPOL ;GET ADDRESS OF DUMMY POLL ROUTINE CALL UNLINK# ;UNLINK POLL ROUTINE ; LXI H,MPENIT ;DEALLOCATE ID ; N82CTL = 01FH ;NET/82 CONTROL PORT ADDRESS ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; .WORD NITLEN+2 ;LENGTH OF IRESS ; .XSYM .END E 0 ;SLAVE PROCESSOR BOOT H-REG ; MSGL = .-MSGHDR ;MESSAGE LENGTH ; OSLOAD = SPBBUF+128 ;O/S LOAD ADDQ ^dnMt!mdp& E INITIALIZATION CODE AND RETURN JMP DEALOC# ; NITLEN = .-MPENIT ;LENGTH OF INITIALIZATION CODE ; .XSYM .END ;DEALLOCATVER FOR NET/80 SLVRES ;SLAVE RESET DETECTION 80 ;SERIAL/PARALLEL DRIVERS FOR NET/80 SNDN80 ;SLAVE NETWORK DRISRHDRV = 0FF ;SEARCH SYSTEM DRIVE FOR .COM FILES SERCHN = 1 ;ONLY ONE SERIAL CHANNEL ON A NET/80 SPLMOD = 081 STDSLAVE ;STANDARD NETWORKING SLAVE HDWNIT ;HARDWARE INITIALIZATION CON96 ;CONSOLE DRIVER FOR 9600 BAUD TERMINAL ;SPOOL MODE = REMOTE, SPOOLED AUTUSR = 80 ;DEFAULT = USER 0, PRIVILEGED SOMSG = 0D,0A,0A,"MuSYS NET/80 running:" SOMSTS `=I%9XSU -4$2@@XM03@ a`  ʩɉ)q` 8 SERIAL ;STANDARD SERIAL MULTIPLEX DRIVER SPIN80 ;SERIAL/PARALLEL DRIVERS FOR NET/80 SNDN80 ;SLAVE NETWORK DRI' G+18 = 0D,0A,"TurboDOS ver: 1.16 $"  = 80 ;DEFAULT = USER 0, PRIVILEGED SOMSG = 0D,0A,0A,"MuSYS NET/80 running:" SOMST DETECTION 82 ;SERIAL/PARALLEL DRIVERS FOR NET/82 SNDN82 ;SLAVE NETWORK DRIVER FOR NET/82 SLVRES ;SLAVE RESE; THIS PROGRAM IS WRITTEN TO ALLOW SAVING OF .COM FILES ; UNDER THE TurboDOS OPERATING SYSTEM. ; ; IT IS WRITTEN FOR DIGITAL SRHDRV = 0FF ;SEARCH SYSTEM DISK FOR .COM FILES SERCHN = 2 ;ONLY TWO SERIAL CHANNELS ON A NET/82 SPLMOD = 081 RESEARCH'S 'MAC.COM' ASSEMBLER. ; ; COPYRIGHT (C) 1982, MuSYS CORP. ; ; VERSION: FEBRUARY 21, 1982 ; ; AUTHOR: WILLIAM A.STDSLAVE ;STANDARD NETWORKING SLAVE HDWNIT ;HARDWARE INITIALIZATION MPEN82 ;MEMORY PARITY INITIALIZATION INTN82 ;SPOOL MODE = REMOTE, SPOOLED AUTUSR = 80 ;DEFAULT = USER 0, PRIVILEGED SOMSG = 0D,0A,0A,"MuSYS NET/82 running:" SOMS SCHULTZ ; ;********************************************************************* ; ; OPERATION INSTRUCTIONS: ; ; 1. DDT  ;INTERRUPT CONTROLLER FOR NET/82 CON96 ;CONSOLE DRIVER FOR 9600 BAUD TERMINAL SERIAL ;STANDARD SERIAL MULTIPLEG+18 = 0D,0A,"TurboDOS ver: 1.16 $"  = 80 ;DEFAULT = USER 0, PRIVILEGED SOMSG = 0D,0A,0A,"MuSYS NET/82 running:" SOMSDESIRED.COM to load in the program to be patched. ; 2. Be sure to record the "NEXT" address displayed by DDT. ; 3. Enter youX DRIVER SPIN82 ;SERIAL/PARALLEL DRIVERS FOR NET/82 SNDN82 ;SLAVE NETWORK DRIVER FOR NET/82 SLVRES ;SLAVE RESE( r patches as necessary. If you extend the length ; of the program, be sure to increment the "NEXT" address ; appropriZ LOOP0I ; INX D DJNZ LOOP0 DCX H ;ADJUST "NEXT" ADDRESS TO "LAST" ADDRESS MOV A,H ;VALIDATE ANSWER ORA A JRZ ERRTH OF REPLY LXI D,REPLY+2 ;POINT TO REPLY LXI H,0 ;INITIALIZE RESULT AS ZERO LOOP0: LDAX D ;GET A REPLY BYTE ANI 07FH CTER INX D DCR B JR LOOP3 ; ADOT: MOV A,C ;DOT DETECTED PREVIOUSLY? ORA A JRNZ ERROR1 ;YES, ERROR LXI B,(3*256)+****************************************************************** ; ORG 08000H ;START ABOVE MOST PROGRAMS ; MACLIB Z80  LOOP3: INX H MOV A,M ANI 7FH CPI 20H JRZ OPEN JRC ERROR1 CPI '.' JRZ ADOT PUSH PSW ;ANY ROOM LEFT FOR ANOTHER ately. ; 4. ISAVE.HEX and R to get this program into memory at the ; origin address below (nominally 08000H). If your prOR0 JM ERROR0 DCR H ;SUBTRACT 0100H FOR BASE PAGE RALR L ;FIDDLE AROUND TO RECORD COUNT RALR H MOV L,H MVI H,0 R CPI 30H ;IS IT LESS THAN ZERO? JRC ERROR0 ;YES, ERROR CPI 3AH JRC GOOD0A CPI 'A' JRC ERROR0 CPI 'G' JRC GOOD0B 1 ;SET UP FOR EXTENSION LXI D,FCB+9 JR LOOP3 ; OPEN: LDA FCB+1 ;ANY NAME ENTERED? CPI 20H JRZ ERROR1 ;NO, JUMP LXI;USE Z80 OP CODES ; BEGIN: LXI H,STACK ;INITIALIZE A STACK SPHL ; GETLEN: LXI D,MESS1 ;ASK OPERATOR FOR LENGTH MVI C,9CHARACTER? MOV A,B ORA A JRNZ OK3 ;YES, JUMP POP PSW ;NO, ERROR ERROR1: LXI D,ERRM1 ;PRINT ERROR MESSAGE MVI C,9 ogram ; extends above this address, you must have previously ; reassembled SAVE.HEX for a higher origin, which still ALR H INX H ;BUMP ONE RECORD FOR ROUNDING SHLD COUNT ;SAVE AS RECORD COUNTER ; GETNAM: LXI D,MESS2 ;ASK OPERATOR FOR FI CPI 'a' JRC ERROR0 CPI 'g' JRC GOOD0C JR ERROR0 ; GOOD0A: SUI 30H JR GOOD0 ; GOOD0B: SUI 'A'-10 JR GOOD0 ; G D,80H ;SET DMA ADDRESS MVI C,26 CALL 5 LXI D,FCB ;DELETE ANY EXISTING FILE MVI C,19 CALL 5 LXI D,FCB ;MAKE SURE  CALL 5 ; CALL CLEAR ;CLEAR AREA AND GET REPLY ; LDA REPLY+1 ;VALIDATE LENGTH OF REPLY CPI 3 JRZ DOLEN CPI 4 J CALL 5 JR GETNAM ;TRY AGAIN ; OK3: POP PSW CPI 61H ;LOWER TO UPPER CASE REQUIRED? JRC NOX CPI 61H+26 JRNC NOX A; must below DDT when it is loaded. ; 5. G to execute the save. SAVE will ask for the "NEXT" ; address and the file LE NAME MVI C,9 CALL 5 ; CALL CLEAR ;CLEAR AREA AND GET REPLY ; LDA REPLY+1 ;VALIDATE THE LENGTH OF THE ANSWER ORAOOD0C: SUI 'a'-10 ; GOOD0: RAL ;SHIFT DIGIT INTO HL RAL RAL RAL MVI C,4 LOOP0I: RAL RALR L RALR H DCR C JRNNO DUPLICATE NAME EXISTS MVI C,17 CALL 5 CPI 0FFH JRNZ ERROR2 LXI D,FCB ;NOW MAKE THE FILE MVI C,22 CALL 5 ORA RZ DOLEN ; ERROR0: LXI D,ERRM0 ;PRINT ERROR MESSAGE MVI C,9 CALL 5 JR GETLEN ;TRY AGAIN ; DOLEN: MOV B,A ;SAVE LENGNI 5FH ;YES, DO IT NOX: CPI '?' ;ANY ILLEGAL CHARACTERS? JRZ ERROR1 CPI '*' JRZ ERROR1 STAX D ;STORE RESULTING CHARAname to save the result under. ; Writing begins at 0100H, as you would expect. ; 6. SAVE ends with a warm start. ; ;*** A JRZ ERROR1 JM ERROR1 CPI 9 JRNC ERROR1 ; LXI H,REPLY+1 ;MOVE AND VALIDATE THE REPLY LXI D,FCB+1 LXI B,(8*256) ) A JRNZ ERROR3 ; LXI H,0100H ;INITIALIZE DMA ADDRESS SHLD DMA ; LOOP4: LDED DMA ;SET DMA ADDRESS MVI C,26 CALL 5 H,0AH,07H,'***** INVALID FILE NAME.$' ERRMF: DB 0DH,0AH,0AH,07H,'***** FATAL ERROR. $' ERRM2: DB 'UNABLE TO DELETE EXISTING FURING WRITE ; REPLY: DB 13,0,' ' ;OPERATOR REPLY AREA ; FCB: DB 0,'FILENAMEEXT' ;FILE CONTROL BLOCK DW 0,0,0050018C1F1FE613806FE7B3045 :1080C00002E65FFE3F28E7FE2A28E312130518CADE :1080D00079B720DA01010311CE8118BE3AC681FEBC :1080E0002C,9 CALL 5 POP D MVI C,9 CALL 5 JMP 0 ; CLEAR: MVI A,20H ;CLEAR REPLY AREA AND FILE NAME MVI B,13 LXI D,FCB+1 :1080000021B281F911E9810E09CD0500CD6C813ACB :10801000B781FE03280EFE04280A11A6820E09CDA0 :10802000050018E04711B8812100001AE67FF LXI D,FCB ;WRITE RECORD MVI C,21 CALL 5 LHLD DMA ;BUMP DMA ADDRESS LXI D,80H DAD D SHLD DMA LHLD COUNT ;DECREMILE.$' ERRM3: DB 'NO DIRECTORY SPACE.$' ERRM4: DB 'UNABLE TO CLOSE FILE.$' ; END BEGIN 2: DB 'UNABLE TO DELETE EXISTING F,0,0,0,0,0,0,0,0,0 ; MESS1: DB 0DH,0AH,0AH DB 'THE FOLLOWING WILL USUALLY BE THE VALUE DISPLAYED BY DDT.' DB 0DH,0AH DB 028CB1180000E1ACD050011C5810E137A :1080F000CD050011C5810E11CD0500FEFF204E11EA :10810000C5810E16CD0500B7204821000122B2819D :10 LXI H,REPLY+2 LOOP1: STAX D MOV M,A INX D INX H DCR B JNZ LOOP1 XRA A DCX D DCX D MVI B,24 LOOP2: STAX D E30F4 :1080300038E8FE3A3812FE4138E0FE47380EFE615D :1080400038D8FE67380A18D2D6301806D637180244 :10805000D657171717170E0417CB15ENT RECORD COUNT DCX H SHLD COUNT MOV A,H ;ARE WE DONE? ORA L JNZ LOOP4 ;NO, LOOP SOME MORE LXI D,FCB ;CLOSE FILE'ENTER ADDRESS OF "NEXT" BYTE AVAILABLE (HEX): $' ; MESS2: DB 0DH,0AH,0AH DB 'ENTER THE FILE NAME FOR SAVE (FILENAME.EXT): 811000ED5BB2810E1ACD050011C5810E15CD059E :10812000002AB2811180001922B2812AB4812B2247 :10813000B4817CB5C2108111C5810E10CD0500B7INX D DCR B JNZ LOOP2 ; LXI D,REPLY ;GET THE ANSWER MVI C,10 CALL 5 ; RET ;RETURN TO CALLER ; DW 0,0,0,0,0,0CB140D20F88A :108060001310C82B7CB728B2FA1A8025CB15CB1475 :108070006C2600CB142322B4811156820E09CD0543 :1080800000CD6C813AB781B MVI C,16 CALL 5 ORA A JRNZ ERROR4 LXI D,MESS3 ;TELL OPERATOR SUCCESSFUL MVI C,9 CALL 5 JMP 0 ;WARM START ; $' ; MESS3: DB 0DH,0AH,0AH,'SUCCESSFUL SAVE OPERATION.$' ; ERRM0: DB 0DH,0AH,07H,'***** INVALID HEX ADDRESS.$' ERRM1: DB 0D88 :1081400020151188820E09CD0500C3000011F982A7 :1081500018081119831803112D83D511E0820E0917 :10816000CD0500D10E09CD0500C300003,0,0 ;16 LEVEL STACK DW 0,0,0,0,0,0,0,0 STACK: EQU $ ; DMA: DW 0 ;DMA ADDRESS DURING WRITE COUNT: DW 0 ;RECORD COUNTER D72824FAAE80FE093062 :108090001D21B78111C681010008237EE67FFE20E5 :1080A000283A380AFE2E2828F578B7200BF111C49B :1080B000820E09CDERROR2: LXI D,ERRM2 JR ERROR ; ERROR3: LXI D,ERRM3 JR ERROR ; ERROR4: LXI D,ERRM4 ; ERROR: PUSH D LXI D,ERRMF MVI * E20060D4F :1081700011C68121B8811277132305C27681AF1B06 :108180001B0618121305C2838111B6810E0ACD0594 :1081900000C9000000000000004454C4554452045584953544901 :108310004E472046494C452E244E4F204449524555 :1083200043544F52592053504143452E24554E41FA :10833000ATION COMPLETE FLAG ; 1-6 = INPUT SEMAPHORE ; 7 = NEXT AVAILABLE INPUT CHARACTER ; 8-13 = OUTPUT MUTUAL EXCLUSION SEMAPHORE  :108250004558293A20240D0A0A454E5445522054C7 :1082600048452046494C45204E414D4520464F52F9 :10827000205341564520202846494C454E41HORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 03/07/82 ; .IDENT SERIA0000000000000016 :1081A00000000000000000000000000000000000CF :1081B0000000000000000D002020202020202020B2 :1081C00020202020200424C4520544F20434C4F53452046494C16 :03834000452E24A3 :0080000080 ; 14 = LAST BAUD RATE SET ; 15 = SERIAL ASSIGNMENT TABLE BYTE ; 16-17 = INPUT BUFFER BASE ADDRESS ; 18-19 = INPUT BUFFER SIZE4D4506 :108280002E455854293A20240D0A0A535543434594 :10829000535346554C2053415645204F504552416B :1082A00054494F4E2E240D0A072A2L ;MODULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; TRUE = 0 ;DEFINE LOGOCAL EQUATES FALSE = # TRUE ; FAST 046494C454E414D45455831 :1081D000540000000000000000000000000000004B :1081E0000000000000000000000D0A0A544845206D :1081F000464F ; 20-21 = INPUT BUFFER STORE POINTER OFFSET ; 22-23 = INPUT BUFFER FETCH POINTER OFFSET ; CHTICF = 0 ;INITIALIZATION COMPLA2A2A2A2049E9 :1082B0004E56414C4944204845582041444452457B :1082C00053532E240D0A072A2A2A2A2A20494E56B9 :1082D000414C4944204649= FALSE ;TRUE IF FASTER BECAUSE ONLY ONE DRIVER IS SUPPORTED. ; .LOC .DATA.# ;LOCATE IN DATA AREA ; ; FOR EACH CHANNEL TO 4C4C4F57494E472057494C4C205501 :108200005355414C4C592042452054484520564135 :108210004C554520444953504C41594544204259FE :10822.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - STANDARD SERIAL MULXIPLEX DRIVER" .SBTTL "COPYRIGHT (C) 1981, 1982, SOFTWARE 2000, ETE FLAG CHTISC = 1 ;INPUT SEMAPHORE (COUNT BYTE) CHTNIC = 7 ;NEXT AVAILABLE INPUT CHARACTER CHTOSC = 8 ;OUTPUT SEMAPHORE 4C45204E414D452E24B1 :1082E0000D0A0A072A2A2A2A2A20464154414C20EC :1082F0004552524F522E202024554E41424C45208B :10830000544F204BE SUPPORTED (FROM SERCHN::) A ; 24 BYTE AREA IS ALLOCATED FROM DYNAMIC STORAGE IN THE ; FOLLOWING FORMAT: ; ; 0 = INITIALIZ000204444542E0D0A454E54455220414444A6 :1082300052455353204F4620224E45585422204247 :1082400059544520415641494C41424C452028480B INC. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, 1982, MuSYS CORP. ; ; AUT+ (COUNT BYTE) CHTLBR = 14 ;LAST BAUD RATE SET ; .IFN FAST , [ CHTSAT = 15 ;SERIAL ASSIGNMENT TABLE BYTE ;] CHTBBA = 16 TE INX X ;BUMP FOR NEXT CHANNEL TO GENERATE MOV M,A ;STORE ASSIGNMENT IN THE TABLE ;] INX H POP D ;GET POINTER TO BUFFEOINT X TO SERIAL ASSIGNMENT TABLE ;] LXI D,SERBSZ ;POINT DE TO SERIAL BUFFER SIZE TABLE PUSH D ;SAVE IT ON THE STACK ..ILON PERMANENT POLL ROUTINE CALL LNKPOL# ; LXI H,SERNIT ;GET INITIALIZATION CODE ADDRESS JMP DEALOC# ;DE-ALLOCATE INITIALILOCATE IN PROGRAM AREA ; .WORD NITLEN+2 ;INITIALIZATION CODE LENGTH ; SERNIT:: LHLD SERCHN ;GET GET NUMBER OF SERIAL CHA INX H MOV M,B INX H POP B ;RESTORE REMAINING REGISTERS POP D ; .IFN FAST , [ XTIX ;] PUSH D MOV M,B ;CLEAR I;BUFFER BASE ADDRESS CHTBSZ = 18 ;BUFFER SIZE CHTBIP = 20 ;BUFFER INPUT POINTER CHTBOP = 22 ;BUFFER OUTPUT POINTER ; ; DR SIZE LDAX D ;GET THE SIZE OF THE INPUT BUFFER INX D ;BUMP FOR NEXT TIME ; .IFN FAST , [ XTIX ;SWAP ORIGINAL IX AND SP: MOV M,B ;CLEAR INITIALIZATION COMPLETE FLAG INX H MOV M,B ;SET COUNT OF ZERO FOR INPUT SEMAPHORE CALL ..SPH ;GENERATE IZATION CODE ; ..SPH: INX H ;GENERATE REMAINDER OF SEMAPHORE COUNT MOV M,B INX H MOV D,H ;SAVE SEMAPHORE POINTER MOV E,NNELS PUSH H ;SAVE IT MOV A,L ;SET COMPARE LIMIT FOR SUPPORTED CHANNELS DCR A STA SERIAL+1 DAD H ;X24 DAD H DAD H NPUT BUFFER OFFSET POINTERS INX H MOV M,B INX H MOV M,B INX H MOV M,B INX H DCR C ;LOOP FOR ALL CHANNELS JRNZ ATA AREA: ; SERCHN::.WORD 2 ;NUMBER OF SERIAL CHANNELS SUPPORTED SERBSZ:: ;SERIAL BUFFER SIZES .BYTE 64,16,8,8,8,8,8,8,8,8ERIAL BYTE POINTER ;] PUSH D ;SAVE OTHER REGISTERS PUSH B PUSH H MOV L,A ;REQUEST PACKET FOR SERIAL INPUT BUFFER MVI NPUT SEMAPHORE MOV M,B ;CLEAR INPUT CHARACTER INX H MVI M,1 ;SET COUNT OF ONE FOR MX SEMAPHORE CALL ..SPH ;GENERATE OUTPL MOV M,E ;GENERATE POINTER TWICE INX H MOV M,D INX H MOV M,E INX H MOV M,D INX H RET ;DONE ; NITLEN = .-SE MOV D,H MOV E,L DAD H DAD D CALL ALLOC# ;ALLOCATE PACKET FOR SERIAL TABLE SHLD SERBAS ;SAVE SERIAL TABLE BASE ADDRES..ILP POP D ;REMOVE BUFFER SIZE TABLE POINTER FROM THE STACK ; .IFN FAST , [ POP X ;RESTORE INDEX REGISTER X ;] CALL S,8,8,8,8,8,8 ; .IFN FAST , [ SERAST::.BYTE 000H,001H,010H,011H,012H,013H,014H,015H .BYTE 016H,017H,020H,021H,022H,023H,030H,0 PUSH H ;SAVE SIZE WE ARE REQUESTING CALL ALLOC# ;GO ALLOCATE BUFFER POP B ;GET THE SIZE XCHG ;ADDRESS OF BUFFER TO UT SEMAPHORE MVI M,020H ;SET BAUD RATE FLAG TO INHIBIT INPUT INX H ; .IFN FAST , [ MOV A,0(X) ;GET SERIAL ASSIGNMENT BYRNIT ;INITIALIZATION CODE LENGTH ; ; GENERAL SERIAL PORT HANDLER: ; ; UPON ENTRY, THE REGISTERS ARE ASSUMED TO BE SET AS FOLS POP B ;RESTORE NUMBER OF CHANNELS TO C ;(NOTE: B = 0) .IFN FAST , [ PUSH X ;SAVE INDEX REGISTER X LXI X,SERAST ;PERINA# ;DO ANY PHYSICAL INITIALIZATION ; .IFN FAST , [ CALL SERINB# CALL SERINC# CALL SERIND# ;] LXI D,SERPOL ;LINK H,031H ; SERTBL::.WORD SERDRA#,SERDRB#,SERDRC#,SERDRD# ;] SERBAS: .WORD 0 ;BASE ADDRESS OF CHANNEL TABLE ; .LOC .PROG.# ;DE POP H ;POINT TO CHANNEL TABLE AGAIN MOV M,E ;STORE BUFFER ADDRESS INX H MOV M,D INX H MOV M,C ;STORE BUFFER SIZE , LOWS: ; ; B = SYSTEM SERIAL CHANNEL NUMBER (0-15) ; C = OUTPUT CHARACTER, BAUD RATE CODE, OR MODEM CONTROLS ; D = DEFAULT BA, NO CHARACTERS AVAILABLE RM ;IS NEGATIVE, PROCESSES WAITING FOR CHARS. ; MOV C,CHTNIC(X) ;GET NEXT INPUT CHARACTER ORI DCR A ;FUNCTION NUMBER=2? JRZ SEROUT ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=3? JZ SERSBR ;IF SO, CONTINUE DCR A ;FUN SIZE? CMP E JRNZ ..NOT ;NO, USE AS IT IS MOV E,D ;YES, SET THE POINTER BACK TO ZERO ..NOT: MOV CHTBOP(X),E ;SAVE THE UP ; MOV L,B ;MAKE CHANNEL NUMBER 16 BITS MVI H,0 DAD H ;MULTIPLY BY 24 DAD H DAD H MOV B,H MOV C,L DAD H DAD BUSH B ;SAVE CHANNEL NUMBER CALL WAIT# ;WAIT FOR SERIAL INPUT POP B ;RESTORE CHANNEL NUMBER ; DI ;DISABLE INTERRUPTS FOR UD RATE CODE FOR INITIALIZATION ; E = DRIVER FUNCTION CODE (0-6 ONLY, AT THIS POINT) ; COMDRV:: ;ALSO FUNCTIONS AS COMMUNICA 0FFH ;SET SWITCH TO TRUE RET ;DONE ; ; THIS ROUTINE WILL POLL ALL SERIAL PORTS EACH TIME WE RUN ; THROUGH THE POLL LIST CTION NUMBER=4? JZ SERRBR ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=5? JZ SERSMC ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=6DATED OUTPUT POINTER DAD D ;POINT TO THE NEXT OUTPUT CHARACTER MOV A,M ;GET THE LOOK AHEAD BYTE MOV CHTNIC(X),A ;SAVE IT  LBCD SERBAS ;COMPUTE CHANNEL TABLE POINTER DAD B POP B ;RESTORE BC PUSH H ;SAVE DATA TABLE POINTER POP X ;MOVE IT INTBUFFER MANIPULATION MVI D,0 ;COMPUTE ADDRESS OF NEXT OUTPUT BYTE MOV E,CHTBOP(X) MOV L,CHTBBA(X) MOV H,CHTBBA+1(X) PUSTIONS DRIVER ; ; MVI D,5 ;DEFAULT TO 300 BAUD .BYTE 16H ;MVI D, COMBR:: .BYTE 5 ; 5 (=300 BAUD) ; SERIAL::MVI A,0 ;SET WI; SERPOL: ;SERIAL POLL ROUTINE .WORD 0 ;PREDECESSOR LINK POINTER .WORD 0 ;SUCCESSOR LINK POINTER ; SERPR: CALL SERPRA? JZ SERRMC ;IF SO, CONTINUE RET ;ELSE, DONE ; ; SERIAL PORT STATUS FUNCTION ; SERST: CALL SERPR ;POLL ANY POLLED INPFOR FUTURE USE EI ;ENABLE INTERRUPTS AGAIN ; MOV A,C ;PUT RESULT CHARACTER IN A RET ;DONE ; ; SERIAL OUTPUT CHARACTERO INDEX REGISTER X ; BIT 7,CHTICF(X) ;CHECK INITIALIZATION FLAG CZ NITCHN ;NOT INITIALIZED - DO IT NOW ; MOV A,E ;GET FH H ;(SAVE HL FOR FUTURE USE) DAD D MOV C,M ;GET THE NEXT CHARACTER OUT OF THE INPUT BUFFER POP H ;RESTORE HL TO POINT TO TH NUMBER OF CHANNELS MINUS ONE ; SUB B MVI A,0 ;PRESET STATUS RETURN OF ZERO RM ;RETURN IF CHANNEL NUMBER IS TOO BIG ;# ;CALL INDIVIDUAL POLL ROUTINES ; .IFN FAST , [ CALL SERPRB# CALL SERPRC# CALL SERPRD# ;] RET ;DONE - RETURN ; ;UT DEVICES MOV A,CHTISC(X) ;TEST FOR ZERO COUNT ORA A MVI A,0 ;PRESET RETURN CODE OF ZERO (NONE AVAILABLE) RZ ;IS ZERO ROUTINE ; SEROUT: PUSH B ;SAVE REGISTERS PUSH D PUSH X ;POINT TO DATA AREA POP H LXI D,8 ;POINT TO OUTPUT DATA STRUUNCTION NUMBER ORA A ;FUNCTION NUMBER=0? JRZ SERST ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=1? JRZ SERIN ;IF SO, CONTINUETHE START OF THE BUFFER INR E ;BUMP THE POINTER TO THE NEXT OUTPUT BYTE MOV A,CHTBSZ(X) ;IS THE POINTER EQUAL TO THE BUFFER PUSH X ;SAVE X ON THE STACK CALL ..SDR ;CALL THE SERIAL DRIVER POP X ;RESTORE X RET ; ..SDR: PUSH B ;SAVE BC ON STACK SERIAL INPUT CHARACTER ROUTINE ; SERIN: PUSH X ;GET POINTER TO DATA STRUCTURE POP H INX H ;POINT TO INPUT SEMAPHORE P- CTURE DAD D CALL WAIT# ;WAIT FOR CHANNEL TO BE AVAILABLE POP D POP B JMP DISPAT ;DISPATCH TO PROPER DRIVER ; ; THIS UTE ADDRESS TO STORE NEW CHARACTER MVI D,0 MOV L,CHTBBA(X) MOV H,CHTBBA+1(X) DAD D MOV M,C ;STORE THE CHARACTER IN THEF SO, PUT SEMAPHORE COUNT INTO A BIT 7,A ;ARE PROCESSES WAITING ON THIS SEMAPHORE? JRNZ ..NCC ;YES, DO NOT DISTURB IT XRA ANNEL AS RELATIVE CHANNEL LXI H,SERDRA# ;POINT TO FIRST (AND ONLY) SERIAL DRIVER ;] .IFN FAST , [ MOV A,CHTSAT(X) ;COMPADDRESS VALID? ORA E JRZ ..XIT ;NO, IGNORE THE INPUT CHARACTER PUSH D ;COPY DATA STRUCTURE ADDRESS INTO X POP X INX D  ;GET LAST BAUD RATE CODE RET ;DONE ; NITCHN: MVI CHTICF(X),0FFH ;SET CHANNEL INITIALIZED SWITCH MOV A,E ;DOING SET BAUIS THE COMMON ROUTINE FOR PROCESSING INPUT CHARACTERS. ; IT MUST BE RUN INTERRUPT DISABLED. UPON ENTRY, THE ; REGISTERS ARE A BUFFER MOV A,CHTBOP(X) ;IS THIS ALSO THE NEXT CHARACTER OUT? CMP E JRNZ ..INA ;NO, GO BUMP THE INPUT POINTER MOV CHTNIA ;NO, FLUSH THE BUFFER STAX D MOV A,CHTBOP(X) MOV CHTBIP(X),A ; ..NCC: XCHG ;PUT SEMAPHORE POINTER INTO HL MOV A,CHTUTE DRIVER CODE RRC RRC RRC ANI 006H ;(THIS LIMITS US TO 4 DRIVERS) MOV L,A ;FORM INTO 16 BIT TABLE OFFSET MVI H,0 ;POINT DE TO INPUT SEMAPHORE ; BIT 5,CHTLBR(X) ;INHIBIT INPUT FLAG SET? JRNZ ..XIT ;IF SO, DONE BIT 7,CHTLBR(X) ;SIGN BD RATE ANYWAY? CPI 3 RZ ;YES, NO NEED TO DO THIS MESS PUSH B ;NO, SAVE REGISTERS PUSH D MOV C,D ;GET DEFAULT BAUD RATSSUMED TO CONTAIN: ; ; A = INPUT CHARACTER ; HL = POINTS TO THE FOLLOWING DATA IN MEMORY: ; OFFSET 0 = THE CHANNEL NUMBER C(X),C ;YES, SAVE AS THE NEXT INPUT CHARACTER ..INA: INR E ;BUMP INPUT POINTER TO THE NEXT BYTE MOV A,E ;PUT UPDATED POINTERBSZ(X) ;GET SERIAL BUFFER SIZE CMP M ;IS THE BUFFER FULL? JRZ ..XIT ;YES, IGNORE THIS CHARACTER MOV B,A ;NO, SAVE THE BUF MOV A,E ;PUT FUNCTION CODE INTO A LXI D,SERTBL ;TABLE BASE ADDRESS DAD D ;POINT TO DRIVER ADDRESS MOV E,M ;GET THE DRIVEIT ON BAUD RATE CODE? JRZ ..NCC ;IF NOT, CONTINUE RES 7,C ;ELSE, STRIP SIGN BIT ON CHARACTER CALL SLVRES# ;CHECK FOR SLAVEE CODE MVI E,3 ;DISPATCH WITH SET BAUD RATE FUNCTION CODE CALL SERSBR POP D ;RESTORE REGISTERS POP B RET ;RETURN TO C; OFFSET 1-2 = THE ADDRESS OF THE CHANNEL DATA STRUCTURE ; SERISC:: PUSH X ;SAVE INDEX REGISTER X MOV C,A ;SAVE INPUT CHA INTO A CMP B ;IS IT EQUAL TO THE BUFFER SIZE? JRNZ ..STA ;NO, USE IT AS IT IS XRA A ;YES, SET IT BACK TO ZERO ..STA: MOVFER SIZE FOR FUTURE USE PUSH B ;SAVE BC CALL SIGNAL# ;SIGNAL CHARACTER AS READY POP B ;RESTORE BC MOV E,CHTBIP(X) ;COMPR ADDRESS INX H MOV D,M XCHG MOV E,A ;SAVE FUNCTION CODE MOV A,CHTSAT(X) ;GET THE CHANNEL ASSIGNMENT VALUE ANI 0FH  RESET LDA ATNCHR# ;GET ATTENTION CHARACTER SUB C ;CHARACTER=ATTENTION CHARACTER? JRNZ ..NCC ;IF NOT, CONTINUE LDAX D ;IALLER ; SERSBR: MOV CHTLBR(X),C ;SAVE BAUD RATE CODE ; SERSMC: SERRMC: DISPAT: .IFE FAST , [ MOV D,B ;SET SYSTEM CHRACTER MOV B,M ;GET CHANNEL NUMBER INX H MOV E,M ;COPY DATA STRUCTURE ADDRESS INTO DE INX H MOV D,M MOV A,D ;IS THE  CHTBIP(X),A ;SAVE THE NEW INPUT POINTER ; ..XIT: POP X ;RESTORE INDEX REGISTER X RET ;DONE ; SERRBR: MOV A,CHTLBR(X) .  MOV D,A ;SAVE RELATIVE CHANNEL NUMBER ;] MOV A,E ;FUNCTION CODE BACK TO A PCHL ;GO TO THE DRIVER ; .XSYM .END  0FH { V(<f8x<s`#%Y_n`y\e4U$E$ SERDRBe4U$E$8@SERDRDT8@SERINAe4U$(pSERINC@ @" `B" `)z2H]Y0[V pT#83kF6k@#n F ۮ6o&OG.# ;LOCATE IN PROGRAM AREA ; NETIN%::XRA A ;DISABLE PROM/CLEAR OVERRUN/REQUEST OUT UPSTAT MVI A,IVEC ;INITIALIZE SLAVE I; ; AUTHORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 02/28/82 ; .IDEe4U$H˸LNKPOLdDT8HSERPRAe4U%$(xSERPRCe4U%$HX WAIT4e$U8ʠATNCHR4tuNb3#8-덪pgF /- 4f o 4 #8ʅӘ#9B6HX >$uͳ %h"I)Ixr\-X̳ 'NTERRUPT VECTOR LXI H,E80ISR CALL INTENA# RET ;DONE ; NETDR%::XCHG ;MESSAGE BUFFER ADDRESS TO HL-REG MOV E,C ;SAVE FNT SNDE80 ;MODULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; UPDATA = 8EH ;SLAVE PROCESSOR DATA PORT UPSTAT = .= kG*=eZ*׀Y~CNf 3@KuY7Kf 3\s8?b is OӸydZ+"YUNCTION NUMBER MVI D,5 ;SET RETRY COUNTER RETRY: MOV A,C ;GET FUNCTION NUMBER DCR A ;FUNCTION NUMBER=1? JRZ SLVRCV ;IF SO8FH ;SLAVE PROCESSOR STATUS/CTRL PORT ; PROMON = 0 ;PROM ON INTBIT = 1 ;INTERRUPT BIT OVRRUN = 2 ;OVERRUN REQEST = 3 ;.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM SLAVE NETWORK DRIVER (MuSYS NET/80+EXP/80)" .SBTTL "COPYRIGHT (C) 1981, 1982, SOFTWARa딞FecPTj\!6,nqPeYHY@WtuO%JGb@ t t [@n@@WNF녒?-Ѱ, CONTINUE DCR A ;FUNCTION NUMBER=2? JRZ SLVSND ;IF SO, CONTINUE RET ;ELSE, DONE ; SLVRCV: CALL WTRDY ;WAIT FOR MASTER TPS#`=I%9XSU晀2SERCHNe4U$%5SERASTe4U%D$SERNITƀd4E%hpCOMBRǀe4U$SERISC REQUEST ; ICOD = 8CH ;9519 DATA PORT ICOC = 8DH ;9519 COMMAND/STATUS PORT IVEC = 0 ;INTERRUPT VECTOR NUMBER ; .LOC .PRE 2000, INC. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, 1982, MuSYS CORP. /  PUSH H ;SAVE MESSAGE BUFFER ADDRESS INP B ;GET MESSAGE LENGTH MOV M,B ;STORE MESSAGE LENGTH IN BUFFER INX H DCR B ;DECP AUX STACK PUSH PSW ;SAVE AF-REG ; MVI A,AACK ;GET ASCII ACK OUT UPDATA ;OUTPUT ACK ; IN UPSTAT ;CLEAR INTERRUPT FLIP.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM SLAVE NETWORK DRIVER (MuSYS NET/80)" .SBTTL "COPYRIGHT (C) 1981, 1982, SOFTWARE 2000,RESTORE FUNCTION CODE XRA A ;CLEAR OVERRUN OUT UPSTAT JMPR RETRY ;TRY AGAIN ; ..ERR: ORI 0FFH ;ELSE, SET RETURN CODE=0FFREMENT MESSAGE LENGTH INIR ;RECEIVE MESSAGE JMPR SRCXIT ;CONTINUE ; SLVSND: CALL WTRDY ;WAIT FOR MASTER PUSH H ;SAVE MEӑN #`=I%9XSU   ȪH{M>jx4d!`)z(EK69] Yڂ#;Vo m2@AKWᆓ/FLOP RES INTBIT,A OUT UPSTAT ; MVI A,18H+IVEC ;CLEAR SPURIOUS INTERRUPTS OUT ICOC MVI A,78H+IVEC OUT ICOC ; PO INC. & MuSYS CORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, 1982, MuSYS CORP. ; ; AUH RET ;DONE ; WTRDY: MVI A,1`s%s |ihZ=hᦍxOuDFB@2Jr*r e*)FU2Jr\e$,$NP PSW ;SAVE AF-REG LSPD INTSP# ;RESTORE STACK POINTER JMP ISRXIT# ;CONTINUE ; .XSYM .END  A,78H+IVEC OUT ICOC ; POTHORS: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 02/21/82 ; .IDENT SNDN ;GET SLAVE PROCESSOR STATUS ANI 1a P@ Yd,4ʹ{-G]#,%9QMB2S-%MIa%Rp=1? JRZ SLVRCV ;IF SO, CONTINUE DCR A ;FUNCTION NUMBER=2? JRZ SLVSND ;IF SO, CONTINUE RET ;ELSE, DONE ; SLVRCV: CALL 1  B ;DECREMENT MESSAGE LENGTH INIR ;RECEIVE MESSAGE JMPR SRCXIT ;CONTINUE ; SLVSND: CALL WTRDY ;WAIT FOR MASTER PUSH H ;ALIZE INTERRUPT VECTOR LXI H,N82ISR CALL INTENA# RET ;DONE ; NETDR%::XCHG ;MESSAGE BUFFER ADDRESS TO HL-REG MOV E,C K OUT UPDATA ;OUTPUT ACK ; MVI A,18H+IVEC ;CLEAR ANY EXTRA INTERRUPTS OUT ICOC MVI A,78H+IVEC OUT ICOC ; JMP INTXDN82 ;MODULE ID ; .INSERT DREQUATE ;DRIVER SYMBOLIC EQUIVALENCES ; UPDATA = 1EH ;SLAVE PROCESSOR DATA PORT UPSTAT = 1FH ES EXHAUSTED, SET RETURN CODE=0FFH RET ;DONE ; WTRDY: MVI A,1`%s Պr00 0 dDTʈINTSPdE5D8INTXIT S0STAT = IOBASE+1 ;SERIAL 0 STATUS PORT S0MR12 = IOBASE+2 ;SERIAL 0 MODE REGISTER 1/2 PORT S0CMD = IOBASE+3 ;SERIAL 0 COMMAN: RONALD E. RAIKES ; MICHAEL D. BUSCH ; ; FOR MuSYS CORP.: WILLIAM A. SCHULTZ ; ; VERSION: 11/25/81 ; .IDENT SPIE80 L 1 DATA AREA ADDRESS ; PPOCHR: .BYTE 0 ;PARALLEL PORT OUTPUT CHARACTER PPCHAN: .BYTE 0 ;PARALLEL PORT CHANNEL NUMBER PPADDRD = 27H ;COMMAND REGISTER COMMAND ; RDA = 1 ;RECEIVED DATA AVAILABLE BIT TBE = 0 ;TRANSMIT BUFFER EMPTY BIT DSR = 7 ;CLED REGISTER PORT S1DATA = IOBASE+4 ;SERIAL 1 DATA PORT S1STAT = IOBASE+5 ;SERIAL 1 STATUS PORT S1MR12 = IOBASE+6 ;SERIAL 1 MOD;MODULE ID ; .INSERT DREQUATE ;O/S SYMBOLIC EQUIVALENCES ; TRUE = 0 ;DEFINE LOGICAL EQUATES FALSE = # TRUE ; INTMOD = TR: .WORD 0 ;PARALLEL PORT DATA AREA ADDRESS ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; SERIN%:: ;HARDWARE INITIALIZATION XRAR TO SEND BIT ; .LOC .DATA.# ;LOCATE IN DATA AREA ; S0BAUD: .BYTE 0 ;SERIAL 0 BAUD RATE CODE S0OCHR: .BYTE 0 ;SERIAL 0 OUE REGISTER 1/2 PORT S1CMD = IOBASE+7 ;SERIAL 1 COMMAND REGISTER PORT ; PPCTL = IOBASE+8 ;PARALLEL CONTROL PORT PPSTAT = IOBAUE ;TRUE IF INTERRUPT MODE VICE POLLED ; .IFE INTMOD , [ IVEC0 = 1 ;SERIAL 0 INTERRUPT VECTOR NUMBER (0-7) IVEC1 = 2 ;SEA A ;CLEAR 'PRIME' TO PARALLEL PORT OUT PPCTL RET ;DONE - RETURN TO CALLER ; BRFNC: MOV A,D ;GET CHANNEL NUMBER ANI 00F.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - NET/80-EXP/80 SERIAL/PARALLEL I/O DRIVER" .SBTTL "COPYRIGHT (C) 1981, SOFTWARE 2000TPUT CHARACTER S0CHAN: .BYTE 0 ;SERIAL 0 CHANNEL NUMBER S0ADDR: .WORD 0 ;SERIAL 0 DATA AREA ADDRESS ; S1BAUD: .BYTE 0 ;SERIASE+8 ;PARALLEL STATUS PORT PPDATA = IOBASE+11 ;PARALLEL OUTPUT DATA PORT + STROBE ; MR1 = 4EH ;MODE REGISTER 1 COMMAND ;3 H ;IS IT ZERO? JRZ SETBR0 ;YES, DO CHANNEL ZERO DCR A ;IS IT ONE? JRZ SETBR1 ;YES, DO CHANNEL ONE RET ;NO, SOME SORT OFION 2 - OUTPUT CHARACTER DCR A JRZ BRFNC ;JUMP IF FUNCTION 3 - SET BAUD RATE DCR A DCR A JRZ SMCFNC ;JUMP IF FUNCTION  ORI MR2 ;SET MODE REGISTER 2 VALUE OUTP A INR C ;GO BACK TO THE COMMAND PORT MVI A,XRCMD ;SET COMMAND PORT VALUE OUTP A S0OPOL: ;SERIAL 0 OUTPUT POLL ROUTINE .WORD 0 ;PREDECESSOR LINK POINTER .WORD 0 ;SUCCESSOR LINK POINTER ; S0OPR: IN S0ORT CALL SETBR ;DO COMMON PROCESSING IN S1DATA ;GET ANY STRAY CHARACTER INPUT ; .IFE INTMOD , [ MVI A,IVEC1 ;SET INTER MVI C,S1STAT ;POINT TO SECOND CHANNEL STATUS PORT LXI H,S1CHAN ;POINT TO SECOND CHANNEL DATA AREA JMPR SERBS ;POLL SECO ERROR HERE ; SETBR0: MOV A,B ;SAVE DATA FOR CHANNEL ZERO STA S0CHAN MOV A,C STA S0BAUD SIXD S0ADDR MVI A,S0CMD ;P5 - SET MODEM CONTROLS DCR A JRZ RMCFNC ;JUMP IF FUNCTION 6 - READ MODEM CONTROLS RET ;RETURN - UNRECOGNIZED FUNCTION ;  RET ;DONE ; GETBTV: MOV A,C ;GET REQUESTED BAUD RATE CODE ANI 0FH MOV E,A ;INDEX INTO BAUD TABLE MVI D,0 LXI H,BRTSTAT ;GET SERIAL 0 STATUS BIT TBE,A ;TRANSMITTER AVAILABLE? RZ ;NO, RETURN LXI H,S0BAUD ;YES, CTS HANDSHAKING REQUESTED?RUPT VECTOR LOCATIONS LXI H,S1ISR CALL INTENA# ;] RET ;DONE - RETURN TO CALLER ; SETBR: PUSH PSW ;SAVE I/O PORT ADDRND CHANNEL AND RETURN ; SERAS: MVI C,S0STAT ;POINT TO STATUS PORT LXI H,S0CHAN ;POINT TO DATA AREA ; SERBS: INP A ;GETOINT TO CHANNEL ZERO COMMAND PORT CALL SETBR ;DO COMMON SETUP IN S0DATA ;GET ANY STRAY CHARACTER INPUT ; .IFE INTMOD , [  RMCFNC: XRA A ;CLEAR ACCUMULATOR RET ;RETURN - NOT PRESENTLY SUPPORTED ; SMCFNC: RET ;RETURN - NOT PRESENTLY SUPPORTEBL DAD D MOV L,M ;GET BAUD TABLE VALUE RET ;DONE - RETURN TO CALLER ; BRTBL: .BYTE 0,1,2,3,4,6,7,9,10,11,12,12,13,13,14 BIT 6,M JRZ ..NCTS ;NO, GO OUTPUT CHARACTER BIT DSR,A ;YES, CLEAR TO SEND? RZ ;NO, RETURN ; ..NCTS: LDA S0OCHR ;GET ESS CALL GETBTV ;CONVERT BAUD RATE CODE TO VALUE POP PSW ;SET I/O PORT ADDRESS MOV C,A INP B ;RESYNC USART MR1/MR2 POINT SERIAL 0 STATUS BIT RDA,A ;RECEIVE DATA AVAILABLE? RZ ;IF NOT, RETURN TO CALLER DCR C ;ELSE, INPUT CHRACTER INP A DI MVI A,IVEC0 ;SET INTERRUPT VECTOR LOCATIONS LXI H,S0ISR CALL INTENA# ;] RET ;DONE - RETURN TO CALLER ; SETBR1: MOD ; OUTFNC: MOV A,D ;GET CHANNEL NUMBER ANI 00FH JRZ SERAO ;JUMP IF OUTPUT TO CHANNEL ZERO DCR A JRZ SERBO ;JUMP IF ,15 ; SERDR%:: ;SERIAL DRIVER - GLOBAL ENTRY POINT ;THE FUNCTION CODE IS IN A DCR A DCR A JRZ OUTFNC ;JUMP IF FUNCTSERIAL 0 OUTPUT CHARACTER OUT S0DATA ;OUTPUT CHARACTER LXI H,S0OPOL ;GET SERIAL 0 OUT POLL ROUTINE CALL UNLINK# ;UNLINK PER DCR C ;GO DOWN TO ACTUAL MODE REGISTER PORT MVI A,MR1 ;SET MODE REGISTER 1 VALUE OUTP A MOV A,L ;GET BAUD RATE CODE  ;DISABLE INTERRUPTS CALL SERISC# ;STORE CHARACTER IN BUFFER AREA EI ;ENABLE INTERRUPTS AGAIN RET ;RETURN TO CALLER ;]V A,B ;SAVE DATA FOR CHANNEL ONE STA S1CHAN MOV A,C STA S1BAUD SIXD S1ADDR MVI A,S1CMD ;POINT TO CHANNEL ONE COMMAND POUTPUT TO CHANNEL ONE RET ;RETURN IF UNRECOGNIZED CHANNEL NUMBER ; .IFN INTMOD , [ SERPR%::CALL SERAS ;POLL FIRST CHANNEL4 OLL ROUTINE LHLD S0ADDR ;GET SERIAL 0 OUT SEMAPHORE ; OPRCOM: ;OUTPUT POLL ROUTINE - COMMON PROCESSING LXI D,8 ;BUMP TO AREA POINTER MOV A,C ;STORE IN TEMPORARY BUFFER STA PPOCHR LXI D,PPOPOL ;LINK POLL ROUTINE CALL LNKPOL# JMPR PPOPR ;T 1 OUT POLL ROUTINE CALL LNKPOL# ;CREATE POLL ROUTINE JMPR S1OPR ;EXECUTE POLL ROUTINE ; PPOPOL: ;PARALLEL PORT OUTPUT PPOINT TO BAUD RATE CONSTANT BIT 6,M ;CTS HAND SHAKE REQUESTED? JRZ ..NCTS ;NO, JUMP BIT DSR,A ;YES, CLEAR TO SEND? RZ ;LATE CALL - GO TO INTXIT PUSH H INP A ;IS A CHARACTER READY NOW? BIT RDA,A RZ ;NO, IGNORE THE INTERRUPT DCR C ;YES, GOUTPUT MX SEMAPHORE DAD D JMP SIGNAL# ;SIGNAL PROCESS AS READY ; SERAO: LXI H,S0OCHR ;GET SERIAL 0 OUTPUT CHARACTER MOVRY POLLING ONCE ; .IFE INTMOD , [ S0ISR: SSPD INTSP# ;SAVE STACK POINTER LXI SP,INTSTK# ;SET UP AUX STACK POINTER PUSH OLL ROUTINE .WORD 0 ;PREDECESSOR LINK POINTER .WORD 0 ;SUCCESSOR LINK POINTER ; PPOPR: IN PPSTAT ;IS PREVIOUS OUTPUT ACKNONO, RETURN ; ..NCTS: LDA S1OCHR ;GET SERIAL 1 OUTPUT CHARACTER OUT S1DATA ;OUTPUT CHARACTER LXI H,S1OPOL ;GET SERIAL 1 OUO TO DATA PORT INP A ;READ THE CHARACTER XCHG ;DATA POINTER TO HL JMP SERISC# ;GO TO GLOBAL INPUT PROCESSING ;] ; .XSY M,C ;SAVE SERIAL 0 OUTPUT CHARACTER LXI D,S0OPOL ;GET SERIAL 0 OUT POLL ROUTINE CALL LNKPOL# ;CREATE POLL ROUTINE JMPR SPSW ;SAVE REGISTERS PUSH B PUSH D MVI C,S0STAT ;SET UP FOR CHANNEL ZERO LXI D,S0CHAN JMPR ISRCOM ;GO TO COMMON ROUTINWLEDGED? ANI 080H RZ ;NO, EXIT LDA PPOCHR ;YES, SEND THE NEW CHARACTER OUT PPDATA LXI H,PPOPOL ;UNLINK POLL ROUTINE T POLL ROUTINE CALL UNLINK# ;UNLINK POLL ROUTINE LHLD S1ADDR ;GET SERIAL 1 OUT SEMAPHORE JMPR OPRCOM ;GO TO COMMON ROUTINEM .END PORT INP A ;READ THE CHARACTER XCHG ;DATA POINTER TO HL JMP SERISC# ;GO TO GLOBAL INPUT PROCESSING ;] ; .XSY0OPR ;EXECUTE POLL ROUTINE ; S1OPOL: ;SERIAL 1 OUTPUT POLL ROUTINE .WORD 0 ;PREDECESSOR LINK POINTER .WORD 0 ;SUCCESSOR E ; S1ISR: SSPD INTSP# ;SAVE STACK POINTER LXI SP,INTSTK# ;SET UP AUX STACK POINTER PUSH PSW ;SAVE REGISTERS PUSH B P CALL UNLINK# LHLD PPADDR ;SIGNAL READY TO CONTINUE JMPR OPRCOM ;GO TO COMMON ROUTINE ; PARAO:: SHLD PPADDR ;SAVE DATA  ; SERBO: LXI H,S1OCHR ;GET SERIAL 1 OUTPUT CHARACTER MOV M,C ;SAVE SERIAL 1 OUTPUT CHARACTER LXI D,S1OPOL ;GET SERIALLINK POINTER ; S1OPR: IN S1STAT ;GET SERIAL 1 STATUS BIT TBE,A ;TRANSMITTER AVAILABLE? RZ ;IF NOT, DONE LXI H,S1BAUD ;USH D MVI C,S1STAT ;SET UP FOR CHANNEL ONE LXI D,S1CHAN ; ISRCOM: PUSH H ;SAVE REMAINING REGISTERS LXI H,INTXIT# ;SIMU5 INSERT DREQUATE ;O/S SYMBOLIC EQUIVALENCES ; IOBASE = 80H ;SERIAL/PARALLEL I/O PORT BASE ; S0DATA = IOBASE+0 ;SERIAL 0 DATARATE CODE TO VALUE POP PSW ;SET I/O PORT ADDRESS MOV C,A INP B ;RESYNC USART MR1/MR2 POINTER DCR C ;GO DOWN TO ACTUAL MO `aJ" pm 70b=XPr#iΐi Պ!B8!,OB)ʈ1i()2)ʊjUD: .BYTE 0 ;SERIAL 0 BAUD RATE CODE S0OCHR: .BYTE 0 ;SERIAL 0 OUTPUT CHARACTER S0CHAN: .BYTE 0 ;SERIAL 0 CHANNEL NUMBER S0AD PORT S0STAT = IOBASE+1 ;SERIAL 0 STATUS PORT S0MR12 = IOBASE+2 ;SERIAL 0 MODE REGISTER 1/2 PORT S0CMD = IOBASE+3 ;SERIAL 0 C.PAGE 100 .TITLE "MuDOS OPERATING SYSTEM - NET/80 SERIAL I/O DRIVER" .SBTTL "COPYRIGHT (C) 1981, SOFTWARE 2000, INC. & MuSYS CDE REGISTER PORT MVI A,MR1 ;SET MODE REGISTER 1 VALUE OUTP A MOV A,L ;GET BAUD RATE CODE ORI MR2 ;SET MODE REGISTER 2 VAPA)ʋ *8DR: .WORD 0 ;SERIAL 0 DATA AREA ADDRESS ; .LOC .PROG.# ;LOCATE IN PROGRAM AREA ; BRFNC: MOV A,D ;GET CHANNEL NUMBER ANI 0QN #`=I%9XSU2SERIN@e4U$E$ PARAO-W Ә(EIe#,`0 Q@hCGYOMMAND REGISTER PORT ; MR1 = 4EH ;MODE REGISTER 1 COMMAND ;8 DATA/1 STOP BITS, ASYNC 16X RATE MR2 = 0B0H ;MODE REGISTERORP." ; ; COPYRIGHT (C) 1981, SOFTWARE 2000, INC. ; ; PORTIONS COPYRIGHT (C) 1981, MuSYS CORP. ; ; AUTHORS: RONALD E. RAIKLUE OUTP A INR C ;GO BACK TO THE COMMAND PORT MVI A,XRCMD ;SET COMMAND PORT VALUE OUTP A RET ;DONE ; GETBTV: MOV A,0FH ;IS IT ZERO? RNZ ;NO, SOME SORT OF ERROR HERE ; MOV A,B ;SAVE DATA FOR CHANNEL ZERO STA S0CHAN MOV A,C STA S0BAU$2n@ͨ !,LzjĞ GiX;O yd\X! s$`8$ p `*x`FXg`0 iݦij`fsR? JZ INTXIT# ;NO, MUST BE AN INTERRUPT RES BXC,M ;YES, CLEAR FLAG EI ;ENABLE INTERRUPTS AGAIN RET ;RETURN TO CALLER ********************************************************************** ; ; INSTRUCTIONS: ; ; 1. WHILE THIS PATCH WAS ORIGIN EXIT ; ..NCTS: LXI H,S1FLAG ;IS A CHARACTER READY TO SEND? BIT RDY,M JRZ ..XIT ;NO, EXIT RES RDY,M ;YES, CLEAR THE FLAPOINT TO BAUD RATE CODE BIT 7,M ;IS THIS A CONSOLE PORT? JRZ ..POP ;NO, SKIP FORCED INPUT LDA ATNCHR# ;YES, SEND ATTENTIOCj%Y * VE =@ WON`x="q[w0D8y;N9j[`Y;] ; .XSYM .END MUST BE AN INTERRUPT RES BXC,M ;YES, CLEAR FLAG EI ;ENABLE INTERRUPTS AGAIN RET ;RETURN TO CALLER ATED FOR WORDSTAR 3.0, IT SHOULD ; ALSO WORK WITH 2.2X, AND MAY BE REVISED TO WORK FOR EARLIER ; VERSIONS OF WORDSTAR.G ; .IFE MODEM , [ LXI H,S1LINK ;IS THIS LINK ACTIVE? BIT 0,M JRZ ..NACT ;NO, DO NOT ACTUALLY SEND THIS CHARACTER ;] N? CPI 0FFH JRZ ..NATA ;NO, GO SEND SPECIAL CODE CALL ..S1IN ;YES, GO SEND THE ATTENTION CHARACTER MVI A,AETX ;FOLLOWED 8 0i΃hH Պrl;l(pH6 HF4;NtcP@^CLjGe1eFY|PYPeX`@ f ; 2. USE 'DDT.COM' OR SOME OTHER DEBUGGER TO APPLY THE .HEX FILE ; FROM THIS PROGRAM TO WORDSTAR AFTER (REPEAT: AFTER) W LDA S1OCHR ;GET SERIAL 1 OUTPUT CHARACTER OUT SIO1D ;OUTPUT CHARACTER ..NACT: LHLD S1ADDR ;POINT TO OUTPUT SEMAPHORE LXI ; THIS IS A PATCH TO WORDSTAR VERSION 3.0 TO SPEED UP ; RESPONSE UNDER TurboDOS. ; ; IT IS WRITTEN FOR DIGITAL RESEARCH'S 'MABY CONTROL-C CALL ..S1IN ..POP: POP PSW ;RESTORE STATUS ;] ..ACT: BIT TBE,A ;TRANSMITTER AVAILABLE? JRZ ..XIT ;NO, EXIT 72 -\dNu cR^cdF6L>4lV|i`6Y\P#`YPeeZu`!V mpYbYj&2PS3@5%9QMB3:S `=I%9XSU2SERIN@e4U$E$ pK@ p @j5ڳـ!"!@CcDB @  ORDSTAR ; HAS BEEN INSTALLED. THE ASSOCIATED PROGRAM 'SAVE.HEX' MAY ; BE USED TO ASSIST IN CREATING THE FINAL OUTPUT D,8 DAD D CALL SIGNAL# ;SIGNAL PROCESS AS READY ..XIT: LXI H,S1FLAG ;POINT TO FLAG BYTE BIT BXC,M ;BEGIN XMIT. CHARACTEC.COM' ASSEMBLER. ; ; COPYRIGHT (C) 1982, MuSYS CORP. ; ; VERSION: FEBRUARY 21, 1982 ; ; AUTHOR: WILLIAM A. SCHULTZ ; ; LXI H,S1BAUD ;YES, CTS HANDSHAKING REQUESTED? BIT CTS,M JRZ ..NCTS ;NO, JUMP BIT 3,A ;YES, IS IT CLEAR? JRZ ..XIT ;NO,S&9MI%M3SU#:@9M%92p= FILE. ; ;********************************************************************** ; MACLIB Z80 ;USE Z80 OP CODES ; FALSE EF ; ORG PGBMEM ;HAD BETTER NOT ORG BACK OVER PREVIOUS STUFF!! ; IF SPOOL ; ORG CSWTCH DB 0 ;FORCE DRIVER TO BE LISTF PRINTER SWITCH HAVBSY EQU 0718H ;ADDRESS OF BUSY ROUTINE SWITCH ; COUNT EQU 32 ;DIVISOR FOR CONSOLE STATUS ROUTINE ; I:0302BA00C3E0029C :0E02E000AF21ED0235C036200E0BC305002005 :0207170000FFE1 :0000000000 QU 0 ;DEFINE LOGICAL EQUATES TRUE EQU NOT FALSE ; STAT EQU TRUE ;TRUE IF CONSOLE STATUS TRAP CTLS EQU FALSE ;TRUE IF ENAB DEVICE ; ORG HAVBSY DB 0FFH ;INDICATE BUSY TEST IS ACTIVE ; ENDIF ; END G CSWTCH DB 0 ;FORCE DRIVER TO BE LISTF STAT ; ORG UCNSTA ;PATCH JUMP TO SUBROUTINE JMP CONSTA ; ENDIF ; ORG MORPAT ;ALL PATCHES GO TO 'MORPAT' ; IF SLE/DISABLE CONTROL-S SPOOL EQU TRUE ;TRUE IF PRINTER OUTPUT VIA SPOOLER ; INISUB EQU 02A4H ;ADDRESS OF SUBROUTINE JUMP AT ITAT ; CONSTA: XRA A ;CLEAR ACCUMULATOR (NOT READY) LXI H,COUNTR ;TEST IF TIME TO DO IT DCR M RNZ ;RETURN IF NOT MVINIT. TIME UNISUB EQU 02A7H ;ADDRESS OF SUBROUTINE JUMP AT TERM. TIME UCNSTA EQU 02BAH ;ADDRESS OF ALTERNATE CONSOLE STATUS J M,COUNT ;SET DIVIDE COUNTER BACK TO INITIAL VALUE MVI C,11 ;GET REAL STATUS JMP 5 ; COUNTR DB COUNT ;COUNTER ; ENDIUMP MORPAT EQU 02E0H ;ADDRESS OF PATCH AREA PGBMEM EQU 035CH ;FIRST BYTE BEYOND THE PATCH AREA CSWTCH EQU 0717H ;ADDRESS O> ? @ A B C D E F G H I J K L