/ DSDFMT - PROGRAM TO SET MEDIA DENSITY ON RX02 MODE CONTROLLERS / DSDFMT.PA 17-AUG-79 FRED ZEISE / DSDFMT PRINTS "DSD FLOPPY DISK MEDIA DENSITY FORMATTER V1.1" / ASKS "ENTER DRIVE # (0 OR 1):" / "ENTER DENSITY (S OR D):" / STARTS OVER AGAIN WHEN FORMAT (SET MEDIA DENSITY) IS COMPLETE / IF UNSUCCESSFUL TYPES "ERROR DURING SET MEDIA DENSITY / "PLEASE REFORMAT DISK " / TYPE CTRL C TO EXIT TO OS/8 / TYPE CTRL R TO RESTART AND ASK DRIVE # AGAIN *20 / PAGE ZERO GLOBAL DEFS COMAND, 0 / LAST COMMAND TO FLOPPY STORED HERE ICHAR, 0 / INPUT CHAR FROM KEYBOARD B77, 77 M37, -37 B100, 100 B237, 237 B15, 15 B12, 12 B177, 177 B200, 200 MESAGE= JMS I . TYPX / MESSAGE OUTPUT ROUTINE / FLOPPY DISK IOT'S DEV=6750 / STANDARD FLOPPY IOT LCD= DEV+1 / LOAD COMMAND REGISTER XDR= DEV+2 / TRANSFER DATA REGISTER STRF= DEV+3 / SKIP ON TRANSFER REQUEST AND CLEAR FLAG SERF= DEV+4 / SKIP ON ERROR FLAG AND CLEAR FLAG. SDNF= DEV+5 / SKIP ON DONE FLAG AND CLEAR DONE INIT= DEV+7 / INITIALIZE CONTROLLER AND DRIVES. *200 START, MESAGE; HELLO / "DSD FLOPPY DISK MEDIA DENSITY FORMATTER" RESTRT, CAF / CLEAR ALL FLAGS AND INIT FLOPPY SYSTEM MESAGE; DRIVNO / "ENTER DRIVE # (0 OR 1):" TAD (10; DCA COMAND / INIT COMMAND TO SET MEDIA DENSITY. JMS DISPAT / DISPATCH FOR DRVZRO OR DRVONE "0; DRVZRO / DISPATCH ADDRESS LIST "1; DRVONE "C-100; OS8DIS / RETURN TO OS/8 0 JMP RESTRT / ELSE GO BACK AND ASK DRIVE AGAIN DRVZRO, MESAGE; DRIVE0 / "DRIVE 0 SELECTED!! REMOVE SYSTEM DISK!." JMP DENDET / GOTO DENSITY DETERMINATION DRVONE, MESAGE; DRIVE1 / "DRIVE 1 SELECTED" TAD (20; TAD COMAND; DCA COMAND DENDET, JMS CHKDEN / DETERMINE CURRENT DENSITY OF SELECTED DRIVE TAD (SINGL-DUBBLE / GET PTR TO "SINGLE DENSITY" TAD (DUBBLE / GET PTR TO "DOUBLE DENSITY" DCA .+2 MESAGE; DUBBLE / PRINT ACTUAL DRIVE DENSITY DENSEL, MESAGE; DENSTY / "ENTER DENSITY (S OR D):" JMS DISPAT / GET DENSITY SELECTION. "S; SINGLE "D; DOUBLE "C-100; OS8DIS "R-100; RESTRT 0 JMP DENSEL / ASK AGAIN IF NOT RECOGNIZED SINGLE, MESAGE; SINGL / "SINGLE DENSITY SELECTED" JMP GO DOUBLE, MESAGE; DUBBLE / "DOUBLE DENSITY SELECTED" TAD (400; TAD COMAND; DCA COMAND GO, MESAGE; TSELCT SERF; NOP / CLEAR ERROR FLAG TAD COMAND; LCD / LOAD THE COMMAND STRF; JMP .-1 / WAIT FOR VERIFICATION TAD (111; XDR / LOAD VERIFICATION. SDNF; JMP .-1 / WAIT TILL FINISHED SERF; JMP FMTFIN / TYPE "MEDIA DENSITY SUCCESSFULLY SET" MESAGE; TERROR / "ERROR DURING SET MEDIA DENSITY__" MESAGE; TREFOR / "--PLEASE REFORMAT DISKETTE__" JMP RESTRT FMTFIN, MESAGE; TMEDOK / JMP RESTRT / ASK FOR ANOTHER DISK / CHKDEN - DETERMINES DENSITY OF DISKETTE IN SPECIFIED DRIVE. / JMS CHKDEN / RETURNS TO OS/8 IF NOT IN RX02 MODE. / SINGLE DENSITY RETURN / DOUBLE DENSITY RETURN CHKDEN, 0 CLA STL RTL; TAD COMAND / MAKE "READ STATUS COMMAND" SDNF; JMP .-1 / WAIT FOR INIT FINISHED LCD SDNF; JMP .-1 / WAIT FOR STATUS READY XDR; AND B200 / CHECK FOR DRIVE READY SZA CLA; JMP .+4 / IF NOT TYPE MESAGE; TDVNTR / "DRIVE NOT READY" JMP RESTRT / AND ASK "ENTER DRIVE " XDR; AND (10 / CHECK "RX02 MODE" SZA CLA; JMP .+4 MESAGE; TNTRX02 / "CONTROLLER NOT IN RX02 MODE - EXIT." JMP START / SAFER TO RESTART AND WAIT FOR CTRLC XDR; AND (40 / CHECK DENSITY BIT SZA CLA; ISZ CHKDEN / DO SKIP RETURN IF DOUBLE DENSITY JMP I CHKDEN / DISPATCH - DISPATCH TO ADDRESS FOLLOWING CHAR IF CHAR MATCH / JMS DISPATCH / CHAR1; ADDRESS1 / CHAR2; ADDRESS2 / 0 / TERMINATOR DISPAT, 0 / DISPATCH ROUTINE JMS XREAD / GET A CHAR FROM KEYBOARD DISPTL, TAD I DISPAT / GET CHAR FROM TABLE ISZ DISPAT / POINT TO POINTER SNA; JMP I DISPAT / RETURN FOLLOWING TABLE END. CIA; TAD ICHAR / IS CHAR = DISPATCH CHAR SNA CLA; JMP DISFND ISZ DISPAT; JMP DISPTL DISFND, TAD I DISPAT; DCA DISPAT / GET ACTUAL DISPATCH ADDRESS JMP I DISPAT / GO TO IT OS8DIS, CAF / SET FLOPPY DONE FLAG. JMP I .+1; 7605 / RETURN TO OS/8 PAGE / TYPX - PRINT A MESSAGE POINTED TO FOLLOWING CALL. / MESAGE; POINTER TO TEXT; RETURNS - AC = 0 / 2 CHARACTERS HAVE SPECIAL MEANING 00=TERMINATOR AND 37 = CRLF TYPX, 0 CLA CLL TAD I TYPX; DCA TYPNT; ISZ TYPX / GET TEXT POINTER TYPX1, TAD I TYPNT / GET HIGH BYTE CHAR BSW; JMS TYPY TAD I TYPNT; JMS TYPY / GET LOW BYTE CHAR ISZ TYPNT; JMP TYPX1 TYPNT, 0 / TYPY - SUBROUTINE CALLED TO DO 6 BIT CHAR UNPACK BY TYPX / 1) TESTS FOR TERMINATOR AND EXITS TYPX WHEN FOUND / 2) TESTS FOR (37) AND PRINTS CRLF WHEN FOUND / 3) CONVERTS OTHERS TO 8 BIT ASCII AND OUTPUTS TYPY, 0 AND B77; SNA; JMP I TYPX / EXIT IF 0 CHAR FOUND TAD M37; SZA; JMP .+3 / TYPE CRLF AND RETURN JMS PCRLF; JMP I TYPY SPA; TAD B100 / ADD 100 TO A-Z TAD B237 / CONVERT BACK FROM OFFSET JMS TLSX JMP I TYPY PCRLF, 0 / PRINT CARRIAGE RETURN LINE FEED CLA CLL TAD B15; JMS TLSX TAD B12; JMS TLSX JMP I PCRLF TLSX, 0 / PRINT THE CHARACTER IN THE AC AND CLEAR AC TLS TSF; JMP .-1 CLA JMP I TLSX XREAD, 0 / RETURN WITH NEXT CHAR TYPED IN THE ICHAR. KSF; JMP .-1 KRB AND B177; TAD B200 / SET PARITY BIT ALWAYS DCA ICHAR TAD ICHAR; JMS TLSX JMS PCRLF JMP I XREAD HELLO, TEXT "_DSD FLOPPY DISK MEDIA DENSITY FORMATTER V1_" *.-1 / BACK UP OVER TERMINATOR TEXT " CTRL C RETURNS TO OS/8_" *.-1 TEXT " CTRL R RESTARTS DSDFMT__" DRIVNO, TEXT "__ENTER DRIVE # (0 OR 1):" DRIVE0, TEXT "_DRIVE 0 SELECTED ! REMOVE SYSTEM DISK !_" DRIVE1, TEXT "_DRIVE 1 SELECTED " TDVNTR, TEXT " DRIVE NOT READY_" DENSTY, TEXT "__ENTER DENSITY (S OR D):" DUBBLE, TEXT " DOUBLE DENSITY" SINGL, TEXT " SINGLE DENSITY" TSELCT, TEXT " SELECTED_" TNTRX02, TEXT "_CONTROLLER NOT IN RX02 MODE EXIT_" TERROR, TEXT "__ERROR DURING SET MEDIA DENSITY_" TREFOR, TEXT "_ - PLEASE REFORMAT DISK_" TMEDOK, TEXT "_SET MEDIA DENSITY COMPLETED_" $ $ $ $ $ $ $ $ $