File DF.TK

Directory of image this file is from
This file as a plain text file

/LAST EDIT:  2-JANUARI-75, ELC
/DF32 BLOCK DRIVER
/
/NAME:  "D^100+"F&3777	DF
/LENGTH: ONE PAGE
/FUNCTION:TO HANDLE DF32 TRANSFERS.
/	THE DF32 TRANFER VECTOR RESEMBLES
/	THAT OF OS8.
/CONCEPT: WITH THIS MODULE BLOCK TRANSFER FROM
/	OR TO THE DF32 CAN BE DONE IN BOTH FORE-
/	GROUND AND BACKGROUND.
/	 WHEN 0 BLOCKS ARE SPECIFIED FOR TRANSFER
/	THIS MODULE WILL DO A FULL 20 (4K)
/ERRORS: WHEN TRYING TO READ OR WRITE OUTSIDE THE
/	DISK RANGE, THE ERROR RETURN IS TAKEN.
/	WHEN TIMING,PARITY OR WRITE LOCK ERRORS
/	EXIST, THIS MODULE WILL REPEAT THE REQUEST
/	3 TIMES, AND IF THE ERROR PERSIST,
/	THE ERROR RETURN IS ALSO TAKEN.
/USE:
/	CDF FIELD OF DFV
/	TAD (POINTER TO DFV
/AGAIN,	JMS MONITOR
/	   CALL
/	   "D^100+"F&3777	/DT
/	JMP AGAIN	/BUSY: TRY AGAIN
/	DCA SLOT	/RETURNS WITH SLOT IN AC
/	.
/	.
/	.
/	JMS MONITOR	/WAIT FOR COMPLETION OR ERROR
/	   WAIT
/SLOT,	   0
/	SZA CLA		/ERROR ?
/	JMP ERROR	/Y
/	.
/	.
/FORMAT 
/DFV,	RLL LLL FFF 000	/);FIELD;UNUSED
/	BUFFEROCK#

/BECAUSE IT IS IM32 /NON-EXISTEND-DISK-FLAG WITHOUT INITIALIZE, WE /HAVE TO CHECK THE DISK-ADDRESS, SO WE MUST KNOW /THE NUMBER OF PLATTERS. THIS CAN BE DONE BY SPE- /CIFYING DF32=N AT INITIALIZING THE /MULTI8 SYSTEM PARAMETERS,?> /0 PLATTERS ??? MA# OF PAGES *200 /MODU777 /NAME DF 201 /LEN CDSK, DSK /DF32 EVENT # DFCOM /GIVES INTRPT AT DFCOM 0 / DFREAD=6703 /READ DFSE=6721 /SKIP ON ZERO ERROR DFCLR=6701 /CLEAR FLAGS DFRES=6714 /READ ERROR STATUS DFEXT=6715 /LOAD EXT. ADDR. REGISTERS WC=7752 /W.C. REGISTER CA=7753 /C.A. REGISTER /START AFTER A "CALL" DF, DCA DFV /SAVE DF32-XFER-VECTOR TAD I DFV /GET FIRST WORD RAL CLL /R/W BIT TO LINK AND DF7600 /MASK W.C. DCA DFWC /SAVE +W.C. RTL /IF READ AC=0, IF WRITE AC=2 TAD (6703 /MAKE RIGHT IOT DCA DFINS /PUT INTO ROUTINE DFDO TAD I DFV /GET FIELD AND C70 DCA DFFLD /SAVE IT ISZ DFV CLA CMA /GET C.A.-1 TAD I DFV DCA DFCA /SAVE IT ISZ DFV
TAD I DFV /COMPUTE DSK.EXT.ADDR. DCA DFBLK /SAVE OS8-BLOCK TAD DFBLK RTL AND C3700 TAD DFFLD /OR FIELD BITS DCA DFFLD /SAVE IT TAD DFBLK /COMPUTE DSK L.O. ADDR. AND C17 /MASK OFF H.O. CLL RTR RTR RAR DCA DFADD /AND SAVE CDTOIF TAD MYCDF /WE CANNOT USE CDTOIF AT INTRPT LEVEL DCA DFXFLD CYSTEM ROUTINE IN MONFLD A SLOT JMS ALARM /MONITOR RETURN CONTAVE SLOT /NOW CHECK IF THE TRANSFER LEADS TO NON-EXISTEND-DISK TAD DFWC /DISK END ADDRES (IN PAGES)= CLL RTL /(DFWC/400+DFBLK)*2 RTL RAL TAD DFBLK RAL /PAGE NUMBER IN AC TAD (-MAXPAG /CHECK SMA CLA TAD (-3 /SET TALLY FORMS DFDO /INITIATE XFER COMPLETION WAIT DFR, TAD (HRDERR /Y:SIGNAL HARD ERROR TO USER JMS MONITOR HALT+L SIGNAL CLEAR RELEASE DFSLOT, 0
DFDO, .-. /INITIALIZE XFER DCA DFSTAT /CLEAR STATUS CDF MONFLD //HERE ARE THE DMA-REGISTERS TAD DFWC //SET W.C. CIA // DCA I (WC // TAD DFCA //SET C.A. DCA I (CA // TAD DFFLD //LOAD DSK-EXT-REG. DFEXT // DF7600, 7600 //CLA TAD DFADD //LOAD DISK ADDRESS AND.. DFINS, 0 //READ OR WRITE JMP I DFDO // /INTRPT HANDLING DFCOM, DFSE ///ERROR ? JMP DFR2 ////Y DFXIT, DFCLR ///N: CLEAR FLAG TAD CDSK /// DFXFLD, NOP ///CDF OWNFLD CIF MONFLD /// JMS I ZSOFINT /// DFSTAT, 0 DFR2, ISZ DFTRY ///TRY ENOUGH ? JMP DFR3 ///NO AC0001 ///SET ERROR STATUS DCA DFSTAT ///TO STATUS WORD JMP DFXIT ///EXIT DFR3, JMS DFDO ///TRY AGAIN CIF CDF MONFLD /// JMP I ZFSTEXT ///EXIT DFFLD, 0 /FIELD+EXT DSK-ADDR DFADD, 0 /LOW ORDER ADDRESS DFTRY, 0 /NUMBER OF TRY'S DFWC, 0 /+ W.C. DFBLK, 0 /OS8 BLOCK # DFCA, 0 /CURRENT ADDRECTOR PAGE $$$$$$$$$/****** MULTI8 CARDREADER EMULATOR TASK /CREATED 7/13/76, CW /TWOPAGE EMULATOR FOR CARDREADER. ONE PAGE CODE, ONE PAGE /BUFFER. EMULATES THE FOLLOWING IOT'S: /6672 READ ONE CARD AND SKIP. IF CARDREADER NOT READY, / DON'T SKIP. ONE CARD IS READ INTO INTERNAL BUFFER. / /6671 SKIP WHEN BUFFER IS EMTIED, DON'T SKIP IF MORE CHAR / IN BUFFER. / /6631 SKIP IF DATA FLAG. PATCHED WITH A SKP. / /6632 ONE CHARACTER FROM THE BUFFER GOES INTO UAC. /
*200 "C^100+"R&3777 /TASK NAME IS CR 401 /TWO PAGES, ONE CONNECT. CCRD, CRD /THE CARDREADER EVENT CRINT /INTERRUPT ENTRY POINT CRBUF, CRBBEG /BEGIN OF BUFFER 0 CR, CDF MONFLD /THERE ARE THE INTERRESTING THINGS SNA /DID HE QUIT ? JMP CRCLR /YES, RELEASE DEVICE TAD C3 /(UPC DCA CRUPC TAD CRUPC IAC JMS DEFER /GET HIS FIELDS AND C70 /INSTRUCTION FIELD TAD C6201 /MAKE A CDF DCA CRCDF ACM1 TAD I CRUPC /ADDRESS OF USERS INSTRUCTION DCA CRPNT TAD CRUPPOINTER TO UAC TAD CRUT INSTRUCTION TAD (-66DER ? JMP CRLEES /YES671 SNA /SKIP IF DONE ? JMP CRDONE TAD (6671-6632 SNA /READ COLLUM ? JMP CRDAT TAD (6632-6631 SZA CLA /SKIP IF DATA READY? JMP CRRET /NEE NIKS DOEN JMS GELIJK /POINTERS GELIJK? SKP /NEE JM TAD CRPNT DCA CRTPNT -4 JMS CRCDF-1 DCA IRUKTIE CRSRET, CDF MONFM SKIP CRRET, CLA CLL JMS MONITOR RETURN CRLEES, AC0001 /ENABLE INTERRUPTS 6635 6672 /SELECT CARDREADER JMP CRRET /NOT READY, RETURN CLA CLL DCA CRDOFL /CLEAR SOFTWARE DONE TAD CRBUF DCA CRADRI /INITIALISE INPUT POINTER TAD CRADRI DCA CRADRO /INITIALISE OUTPUT POINTER JMP CRSRET /NO, SKIP CRDAT, AC0001 TAD CRADRO AND C177 TAD CRBUF DCA CRADRO /BUMP WITH WRAP-AROUND FOR SAFETY CDTOIF //TO FIELD OF BUFFER TAD I CRADRO //GET NEXT CHAR CDF MONFLD DCA I CRUAC /DROP IN USERS AC JMS GELIJK /POINTERS GELIJK? JMP CRRET /NEE NIKS AAN DE HAND TAD CRINT JMS CRCDF-1 DCA I CRTPNT /HERSTEL INSTRUKTIE JMP CRRET CRDONE, JMS GELIJK JMP CRRET TAD CRDOFL SZA CLA /ECHT KLAAR? JMP CRSRET /JA JMP CRRET /NEE CRCLR, JMS MONITOR EXIT SWPOUT /INTERRUPT ROUTINES: CRINT, 6631 /DATA FALG UP ? JMP CREND /MUST BE END OF CARD AC0001 TAD CRADRI AND C177 TAD CRBUF DCA CRADRI /BUMP WITH WRAP AROUND COLLUM ALFA, CLEARS FLAAR IN BUFFER INTEXT, CDTEXT /INTERRUPT EXIT CR ? JMP INTEXT /GHOST INTERRUPT 6674 /CLEAR DONE FLAG CLA CMA DCA CRDOFL JMP INTEXT GELIJK, 0 TAD CRADRO CIA TAD CRADRI SNA CLA ISZ GELIJK JMP I GELIJK 0 /SUBROUTINE CRCDF, CDF JMP I C, 0 CRTPNT, 0 CRUAC, 0RADRO, 0 PAGE CRBB/******* MULTI8 PATTERN TASK ******* /MODULE TO GENERATE SOME "IDLE LOOP PATTERNS" / *200 "P^100+"T&3777 200 /1 PAGE ,NO CONNECTS 0 PA, CDF MONFLD AC0001 DCA I (A AC4000 DCA I (B TAD C37 DCA I (C TAD C7600 DCA I (D PAT0, CDF MONFLD CLA CLL PAT1, TAD I (A /ROTATE RIGHT CLL RAR SZL AC4000 DCA I (A PAT2, TAD I (B /ROTATE LEFT CLL RAL SZL AC0001 DCA I (B PAT3, TAD I (C /5 LAMPS IN A ROW RIGHT AND (377 SNA CLA STL TAD I (C RAR DCA I (C PAT4, CLL /5 LAMPS IN A ROW LEFT TAD I (D AND (7760 SNA CLA STL TAD I (D RAL DCA I (D PAT5, ISZ CNT /PING PONG JMP PAT5X TAD (-14 DCA CNT TAD PAT5X CIA TAD PAT1 TAD PAT2 DCA PAT5X PAT5X, TAD I (A DCA I (E
PAT6, IFDEF TC08 <6761 /READ COMMAND REGISTER> IFNDEF TC08 <IFDEF TD8E <6776 /READ COMMAND REGISTER> IFNDEF TD8E <TAD I (A /IF NO TAPES: TAD I (B /TWO LAMPS ROTATING LEFT AND RIGHT>> DCA I (F PAT7, KRS /SHEYBOARD DCA I (G PAT8 TAD (-50 DCA CNT1 PAT8A, ISZ PAT8B PAT8AT9, CDTOIF JMS MONITOR STALL RELEASE/THIS MAY CAUSE SOME CHANGES IN THE PATTERN 1 JMP PAT0 CNT, -14 CNT1, -1 PNT, 0 XLIST 1;2;4;10;20;40;100;100;200;200;200;400;400;400;400 1000;1000;1000;1000;;2000 4000;4000;4001;20220;410 1004;2002;4002; <A=COREND&7600+177 > B1 F=E-1 G=F-1 H=G-1 IFZERO COREND-H&4000 <NOROOM,XERROR> PAGE $$$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search