/FLOPPY OS/8 SYSTEM HANDLER (OMTI 20-D) / /USE WITH OMTI 20-D CONTROLLER AND /5 1/4" FLOPPY DRIVE. / /TWO DEVICE NAMES ARE USED. /SYS USES LOGICAL UNIT 2 OF THE OMTI CONTROLLER. /DX1 USES LOGICAL UNIT 3 OF THE OMTI CONTROLLER. / /LAST EDIT 20-JUN-83 18:00 / /CHANGE "DEVCOD" TO PROPER DEVICE CODE AS NECESSARY. /(DEFAULT IS 70) / /COMPUTER EXTENSION SYSTEMS, INC. (C) 1983 / / ASSEMBLY DEFINITIONS, ETC. / DEVICE IOT DEFINITIONS. IFNDEF DEVCODE /USES 670X BY DEFAULT DSEI= DEVCODE^10+6000 /INTERRUPT ENABLE DSSF= DEVCODE^10+6001 /SKIP ON DONE FLAG DSCD= DEVCODE^10+6002 /CLEAR DONE FLAG DSHI= DEVCODE^10+6003 /LOAD HIGH-ORDER COMMAND ADDRESS DSGO= DEVCODE^10+6004 /LOAD LOW-ORDER COMMAND AND GO DSRS= DEVCODE^10+6005 /READ STATUS DSDI= DEVCODE^10+6006 /DISABLE INTERRUPTS DSIP= DEVCODE^10+6007 /(DIAGNOSTIC) INITIAL PROGRAM LOAD (BOOTSTRAP) / OTHER DEFINITIONS. NL3777= CLA CLL CMA RAR /LOAD AC WITH 3777 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 VERSION="A&77 /VERSION NUMBER FOR RESORC / COMMAND TABLE DEFINITIONS. / WORD 1: POSITIVE LENGTH OF ENTIRE TABLE IN WORDS. / WORD 2: COMMAND TYPE (0000 FOR DISK READ/WRITE). / WORD 3: COMMAND (0010:READ, 0012:WRITE). / WORD 4: DRIVE CODE (2:FLOPPY #1, 3:FLOPPY #2). / WORD 5: CONTROL WORD (0:USE DEFAULTS;SEE BREAKDOWN.). / WORD 6: HIGH-ORDER SIX BITS OF DISK ADDRESS / WORD 7: MIDDLE SIX BITS OF DISK ADDRESS. / WORD 8: LOW-ORDER SIX BITS OF DISK ADDRESS. / WORD 9: SECTOR COUNT (1-40 FOR OS/8; 640 MAXIMUM). / WORD 10: BANK AND FIELD (BANK:0000, FIELD:0-7 FOR OS/8). / WORD 11: HIGH-ORDER SIX BITS OF MEMORY ADDRESS. / WORD 12: LOW-ORDER SIX BITS OF MEMORY ADDRESS. / ALL SIX-BIT ORIENTED WORDS IGNORE THE HIGH TWO BITS OF THE BYTE. / ALL WORDS IGNORE THE HIGH-ORDER 4 BITS AND ARE SENT AS A BYTE TO THE / CONTROLLER. / CONTROL WORD BREAKDOWN. / BITS[0-3]: IGNORED. / BIT [4]: 0:DEFAULT CONTROLLER TO 0 0 0 0 1 0 0 0 X 0 1 X / EQUIVALENT PATTERN WITHIN THIS WORD. / 1:READ OTHER BITS FOR NON-DEFAULT PATTERN. / BIT [5]: 0:NO "FAST HANDSHAKE" MODE DURING BUFFERED TRANSFERS. / 1:USE "FAST HANDSHAKE" MODE DURING BUFFERED TRANSFERS. / BIT [6]: 0:USE LOGICAL DISK ADDRESSING. / 1:USE PHYSICAL DISK ADDRESSING. / BIT [7]: 0:ENABLE RETRIES. / 1:DISABLE RETRIES. / BIT [8]: 0:DISABLE ERROR CORRECTION ON FLOPPIES. / 1:ENABLE ERROR CORRECTION ON FLOPPIES. / N. B. REVERSE IS TRUE FOR WINCHESTERS;DOES NOT APPLY TO DIRECT / READS. / BIT [9]: 0:DISABLE WRITING OF DELETED DATA MARKS. / 1:ENABLE WRITING OF DELETED DATA MARKS ON FLOPPIES ONLY. / BIT [10]: 0:ENABLE BUFFERED TRANSFER. / 1:DISABLE BUFFERED TRANSFER. / BIT [11]: 0:DISABLE HALF-SECTOR READ ON FINAL SECTOR / 1:ENABLE HALF-SECTOR READ ON FINAL SECTOR. / BUILD HEADER, ETC. *0 /THAT'S WHERE BUILD WANTS IT! -2 /TWO HANDLERS IN THIS GROUP DEVICE DXDS /GROUP NAME DEVICE SYS /PERMANENT NAME 4600 /DCB WORD SYSENT&177+2000 /ENTRY POINT WORD 0 /BUILD WANTS IT THIS WAY -1200 /DEVICE LENGTH FOR ZEROING SYS: DEVICE DXDS /GROUP NAME DEVICE DX1 /PERMANENT NAME 4600 /DCB WORD SYSENT&177+1000 /ENTRY POINT WORD ZBLOCK 2 /BUILD WANTS IT THIS WAY BSTART-BEND /BOOTSTRAP LENGTH / THE BOOTSTRAP CODE FOLLOWS WHEN BINARY OUTPUT RESUMES. / MANUAL BOOTSTRAP FOR FLOPPY DISK SYSTEM. HERE, NOPUNCH /FOOL THE ASSEMBLER *0 /WHERE IT LOADS MANBUT, *22 /GET TO TOGGLE-IN REGION CAF /POWER CLEAR IS GOOD ENOUGH DSIP /DO (DIAGNOSTIC) BOOTSTRAP COMMAND OVERLAY,JMP . /WAIT FOR OVERLAY *HERE /RESTORE ORIGIN HERE, ENPUNCH /RESTORE BINARY OUTPUT RELOC MANBUT /WHERE THIS CODE COMES IN BSTART, DSSF /FLAG UP? JMP BSTART /NO, WAIT FOR IT DSCD /YES, CLEAR THE FLAG ISZ BSTART /WAIT FOR IT JMP .-1 /TO SETTLE DSRS /GET STATUS SZA /SKIP IF OK HLT /ELSE BARF! BFROM1, BSTART-1 /WHERE FIELD ONE CODE IS NOW BFROM2, BSTART+200-1 /WHERE FIELD ZERO CODE IS NOW CLA /CLEAN UP IN CASE OF EAE BLOOP, TAD I BFROM1 /GET A FIELD ONE WORD CDF 10 /GOTO FIELD ONE DCA I BDONE /STORE IT CDF 00 /BACK TO FIELD ZERO TAD I BFROM2 /GET A FIELD ZERO WORD DCA I BDONE /STORE IT ISZ BDONE /DONE ALL YET? JMP BLOOP /NO, GO BACK FOR MORE JMP I B7605 /YES, GO START IT UP OVERLAY,JMP BSTART /OVERLAYS WAITING MACHINE HERE IFNZRO 25-. JMP BLOOP /EXTERNAL BOOTSTRAP STARTS HERE BDONE, CLA+400 /COUNTER AND POINTER B7605, 7605 /WHERE TO RESTART OS/8 BEND= . /END OF BOOTSTRAP OVERLAY CODE RELOC /RESTORE REAL ORIGIN PAGE /ACTUAL HANDLER CODE HERE RELOC 7600 /WHERE IT EXECUTES ZBLOCK 7 /BUILD WANTS IT THIS WAY SYSENT, VERSION /SYSTEM HANDLER ENTRY POINT CLA CLL /CLEAN UP AND INDICATE SYS TAD SYSENT /GET CALLING ADDRESS DCA DX1 /STICK INTO OTHER ENTRY JMP SYSCOMMON /CONTINUE THERE DX1, VERSION /DRIVE ONE ENTRY POINT CLA STL /CLEAN UP AND INDICATE DRIVE ONE SYSCOM, RAL /0=SYS, 1= DRIVE ONE TAD L2 /2=SYS, 3= DRIVE ONE DCA DRVUNT /STASH DRIVE UNIT DSHI /LOAD HIGH-ORDER COMMAND ADDRESS RDF /GET CALLING FIELD TAD LCIF /MAKE INTO CIF RETURN FIELD INSTRUCTION DCA SYSRETURN /STORE FOR EXIT LATER NL4000 /SET READ/WRITE MASK AND I DX1 /GET READ/WRITE BIT CLL IAC RTL /4 IF READING, 5 IF WRITING RAL /10 IF READING, 12 IF WRITING DCA RWCOM /STASH COMMAND TAD I DX1 AND L3700 /JUST SECTOR BITS SNA /SKIP IF NOT MAXIMUM NL4000 /ELSE USE 20 SECTORS VALUE BSW /%100 DCA SCTCNT /STASH SECTOR COUNT TAD I DX1 /GET FUNCTION WORD AGAIN AND L70 /JUST FIELD BITS CLL RTR /MOVE DOWN RAR /TO BITS[9-11] DCA TRFLD /STASH TRANSFER FIELD (BANK IS 0000) ISZ DX1 /BUMP TO TRANSFER ADDRESS TAD I DX1 /GET TRANSFER ADDRESS BSW /PUT HIGH-ORDER INTO BITS[6-11] DCA TRADRHI /STASH HIGH-ORDER TRANSFER ADDRESS TAD I DX1 /GET TRANSFER ADDRESS AGAIN DCA TRADRLO /STASH LOW-ORDER TRANSFER ADDRESS ISZ DX1 /BUMP TO RECORD NUMBER CLL TAD I DX1 /GET RECORD NUMBER RAL BSW /PUT HIGH-ORDER INTO BITS[6-11] DCA SECTMD /STASH MIDDLE SECTOR ADDRESS CLL TAD I DX1 /GET RECORD NUMBER RAL DCA SECTLO /STASH LOW-ORDER SECTOR ADDRESS ISZ DX1 /BUMP TO ERROR RETURN CLA CLL CML RTR /AC=2000 7014 /AC=0002 IF RUN ON SBC CIA /NEGATE IT TAD L2 SZA CLA /ARE WE ON SBC JMP MDC /NO 6201 /CDF 0 TAD L2 /TO ADJUST ADD FOR SBC TAD COMPTR 6206 /PANEL REQUEST JMP ERR /ERROR RETURN CLA CLL /NORM RETURN JMP GOOD MDC, TAD COMPTR /POINT TO COMMAND TABLE DSGO /LOAD LOW-ORDER COMMAND ADDRESS AND GO DSSF /FLAG UP? JMP .-1 /NO, WAIT FOR IT DSCD /YES, CLEAR THE FLAG LCIF, 6203 /CDIF CONSTANT L100, 100 /CONSTANT 0100 L177, 177 /CONSTANT 0177 L2, 2 /CONSTANT 0002 L70, 70 /CONSTANT 0070 DSRS /GET RETURNED STATUS SZA CLA /SKIP IF ALL IS OK ERR, NL4000 /ELSE SET FATAL ERROR VALUE SMA /SKIP IF ERROR GOOD, ISZ DX1 /ELSE BUMP RETURN ADDRESS SYSRETU,.-. /WILL BE CIF CDF RETURN INSTRUCTION JMP I DX1 /RETURN TO CALLER / COMMAND TABLE. TABLE, COMMEND-TABLE /LENGTH OF WHOLE TABLE INCLUDING THIS WORD COMTYPE,0 /COMMAND TYPE RWCOM, .-. /0010 IF READING, 0012 IF WRITING DRVUNT, .-. /0002 IF SYS, 0003 IF FLOPPY DRIVE 1 DCONTRL,0202 SECTHI, 0 /HIGH-ORDER DISK ADDRESS SECTMD, .-. /MIDDLE DISK ADDRESS (SIX BITS) SECTLO, .-. /LOW-ORDER DISK ADDRESS (SIX BITS) SCTCNT, .-. /SECTOR COUNTER (1-40) TRFLD, .-. /BANK (0000) AND TRANSFER FIELD (0-7) TRADRHI,.-. /HIGH-ORDER TRANSFER ADDRESS (SIX BITS) TRADRLO,.-. /LOW-ORDER TRANSFER ADDRESS (SIX BITS) COMMEND=. /END OF COMMAND TABLE COMPTR, TABLE /COMMAND TABLE POINTER L3700,3700 RELOC /TURN OFF RELOCATION $ /THAT'S ALL FOLK!