(FILECREATED " 4-DEC-83 15:23:14" {PHYLUM}<LISPCORE>SOURCES>BDISKDLION.;5 8125 changes to: (FNS \DL.ACTONVMEMPAGE \DL.DISKOP \DL.XFERDISK INITDLIONDISK \DL.DISKINIT) (VARS BDISKDLIONCOMS) previous date: " 4-DEC-83 14:56:58" {PHYLUM}<LISPCORE>SOURCES>BDISKDLION.;4) (* Copyright (c) 1983 by Xerox Corporation) (PRETTYCOMPRINT BDISKDLIONCOMS) (RPAQQ BDISKDLIONCOMS [(VARS DDFNS) (FNS \DL.DISKINIT \DL.ACTONVMEMFILE \DL.ACTONVMEMPAGE \DL.DISKSEEK \DL.XFERDISK \DL.DISKOP \D2V \V2HDSEC \V2CYL) (FNS INITDLIONDISK) (DECLARE: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) LLFAULT) (GLOBALVARS SEC/HD SEC/CYL \DISKTYPE \TRIDENTFLG)) (DECLARE: DONTEVAL@LOAD DOCOPY (P (INITDLIONDISK]) (RPAQQ DDFNS (\DL.DISKINIT \DL.ACTONVMEMFILE \DL.ACTONVMEMPAGE \DL.DISKSEEK \DL.XFERDISK \DL.DISKOP \D2V \V2HDSEC \V2CYL)) (DEFINEQ (\DL.DISKINIT [LAMBDA NIL (* scp " 4-DEC-83 12:27") (COND (NIL (SETQQ \DISKTYPE \T80) (SETQ SEC/HD 30) (SETQ SEC/CYL 150)) (\TRIDENTFLG (SETQQ \DISKTYPE \T300) (SETQ SEC/HD 30) (SETQ SEC/CYL 570)) ((NEQ 0 (LOGAND 32 (\DEVICE.INPUT 3))) (SETQQ \DISKTYPE \SA4000) (SETQ SEC/HD 28) (SETQ SEC/CYL 224)) ((NEQ 0 (LOGAND 64 (\DEVICE.INPUT 6))) (SETQQ \DISKTYPE \QUANTUM) (SETQ SEC/HD 16) (SETQ SEC/CYL 128)) (T (SETQQ \DISKTYPE \SA1000) (SETQ SEC/HD 16) (SETQ SEC/CYL 64]) (\DL.ACTONVMEMFILE [LAMBDA (FILEPAGE BUFFER NPAGES WRITEFLAG) (* bvm: " 4-APR-83 12:58") (DECLARE (GLOBALVARS \FPTOVP)) (FRPTQ NPAGES (\DL.ACTONVMEMPAGE (COND (\FPTOVP (* New way, page is in boot file) (* Pilot page is zero-based, vmem page is one-base) (SUB1 FILEPAGE)) (T (* Old way, page is in sysout after initial core image) (IPLUS 3069 FILEPAGE))) BUFFER WRITEFLAG) (* the simple IPLUS here is actually converting from sysout file page number into a raw disk address. Obviously, this will have to change, since it assumes, e.g., no bad pages in this region of the disk) (SETQ BUFFER (\ADDBASE BUFFER WORDSPERPAGE)) (add FILEPAGE 1]) (\DL.ACTONVMEMPAGE [LAMBDA (FILEPAGE BUFFER WRITEFLAG) (* scp " 1-DEC-83 12:47") (PROG ((LINKBASE (\ADDBASE \IOCBPAGE 127)) (I 42) ERROR) LP [COND ((OR (IGREATERP (\GETBASE LINKBASE 3) FILEPAGE) (EQ 0 (\GETBASE LINKBASE 3))) (SETQ ERROR (\DL.XFERDISK (IPLUS (\D2V (\GETBASE LINKBASE 1) (\GETBASE LINKBASE 2)) (IDIFFERENCE FILEPAGE (\GETBASE LINKBASE 0))) BUFFER WRITEFLAG)) (IF ERROR THEN (\MP.ERROR 30) ELSE (RETURN] (SETQ LINKBASE (\ADDBASE LINKBASE 3)) (COND ((EQ 0 I) (RAID) (RETURN))) (SETQ I (SUB1 I)) (GO LP]) (\DL.DISKSEEK [LAMBDA (CYL) (* bvm: "31-MAR-83 22:47") (PROG [SEEKBITS (DISP (IDIFFERENCE CYL (\GETBASE \IOCBPAGE 9] (COND ((ZEROP DISP) (RETURN 0))) (SETQ SEEKBITS 1056) (COND ((IGREATERP 0 DISP) (SETQ DISP (IMINUS DISP))) (T (SETQ SEEKBITS 1120))) (\PUTBASE \IOCBPAGE 87 (LOGOR SEEKBITS 128)) (\PUTBASE \IOCBPAGE 89 SEEKBITS) (\PUTBASE \IOCBPAGE 81 (ADD1 (LOGXOR DISP 65535))) (\PUTBASE \IOCBPAGE 9 CYL) (RETURN (\DL.DISKOP 338]) (\DL.XFERDISK [LAMBDA (DA BUFFER WRITEFLG) (* scp " 4-DEC-83 14:55") (PROG ((RETRYCNT 20) (HDSEC (\V2HDSEC DA)) STATUS) LP [COND (\TRIDENTFLG (\PUTBASE \IOCBPAGE 18 (\V2CYL DA)) (\PUTBASE \IOCBPAGE 1 HDSEC) (\PUTBASE \IOCBPAGE 7 1) (\PUTBASE \IOCBPAGE 19 (LOGOR 3072 (LRSH HDSEC 8))) (\PUTBASE \IOCBPAGE 4 (\LOLOC BUFFER)) (\PUTBASE \IOCBPAGE 5 (\HILOC BUFFER)) (* COPY HEADER) (\PUTBASE \IOCBPAGE 10 (\GETBASE \IOCBPAGE 0)) (\PUTBASE \IOCBPAGE 11 (\GETBASE \IOCBPAGE 1)) (* SET UP LABELPARAM FOR VRR) (\PUTBASE \IOCBPAGE 24 10) (\PUTBASE \IOCBPAGE 26 140) (* READ/WRITE SETUP) (\PUTBASE \IOCBPAGE 28 (COND (WRITEFLG 13) (T 14))) (\PUTBASE \IOCBPAGE 29 (COND (WRITEFLG 11396) (T 11332))) [\PUTBASE \IOCBPAGE 30 (COND (WRITEFLG (LOGOR (\GETBASE \IOCBPAGE 30) 1)) (T (LOGAND (\GETBASE \IOCBPAGE 30) 65534] (\PUTBASE \IOCBPAGE 31 (COND (WRITEFLG 512) (T 1536))) (\DEVICE.OUTPUT 3072 13) (until (ZEROP (LOGAND (\GETBASE \IOCBPAGE 8) 32768))) (SETQ STATUS (\GETBASE \IOCBPAGE 8)) (IF (ZEROP (LOGAND STATUS 16384)) THEN NIL ELSE (RETURN))) (T (\DL.DISKSEEK (\V2CYL DA)) (\PUTBASE \IOCBPAGE 10 HDSEC) (\PUTBASE \IOCBPAGE 64 1) (\PUTBASE \IOCBPAGE 75 (COND (WRITEFLG 1083) (T 1072))) (\PUTBASE \IOCBPAGE 77 (SUB1 (fetch (POINTER PAGE#) of BUFFER))) (\PUTBASE \IOCBPAGE 78 (COND (WRITEFLG 28) (T 30))) (\PUTBASE \IOCBPAGE 79 (LOGOR (LOGAND (\GETBASE \IOCBPAGE 79) 2047) (LLSH (LOGAND HDSEC 65280) 3))) (\PUTBASE \IOCBPAGE 80 (LOGOR (LOGAND (\GETBASE \IOCBPAGE 80) 2047) (LLSH (LOGAND HDSEC 65280) 3))) (* DSKRD1=DISKOP) (SETQ STATUS (\DL.DISKOP 355] (COND ((ZEROP STATUS) (RETURN NIL))) (SETQ RETRYCNT (SUB1 RETRYCNT)) (COND ((ZEROP RETRYCNT) (RETURN STATUS)) (T (GO LP]) (\DL.DISKOP [LAMBDA (IOCB) (* scp " 4-DEC-83 15:22") (\PUTBASE \IOPAGE 1 IOCB) (\PUTBASE \IOCBPAGE 3 256) (\DEVICE.OUTPUT 32 3) (until (ZEROP (LOGAND (\GETBASE \IOCBPAGE 3) 256))) (LOGAND 63 (\GETBASE \IOCBPAGE 3]) (\D2V [LAMBDA (CYL HDSEC) (* lmm "13-DEC-82 17:40") (PROG ((HD (FOLDLO HDSEC 256)) (SEC (IMOD HDSEC 256))) (RETURN (IPLUS (ITIMES CYL SEC/CYL) (ITIMES HD SEC/HD) SEC]) (\V2HDSEC [LAMBDA (DA) (* scp " 8-MAR-83 02:20") (* returns the head and sector number, packed into one word, for the disk address DA) (PROG ((SEC (IMOD DA SEC/HD)) (HD (IQUOTIENT (IMOD DA SEC/CYL) SEC/HD))) (RETURN (LOGOR (LLSH HD 8) SEC]) (\V2CYL [LAMBDA (DA) (* scp " 8-MAR-83 02:22") (* returns the cylinder number of virtual disk address DA) (IQUOTIENT DA SEC/CYL]) ) (DEFINEQ (INITDLIONDISK [LAMBDA NIL (* scp " 4-DEC-83 14:51") (MAPC (QUOTE (\MAKENUMBER \SETGLOBALVAL.UFN \RPLPTR.UFN \HTFIND \SLOWIPLUS2 \SLOWIDIFFERENCE \SLOWLLSH1 \SLOWLLSH8 \SLOWLRSH1 \SLOWLRSH8 \SLOWLOGOR2 \SLOWLOGAND2 \SLOWLOGXOR2 \SLOWIGREATERP \SLOWIQUOTIENT \SLOWITIMES2 IMOD IREMAINDER \MP.ERROR)) (FUNCTION \LOCKFN)) (MAPC DDFNS (FUNCTION \LOCKFN)) (MAPC (QUOTE (\SMALLNEGSPACE \IOCBPAGE \MDSTypeTable \HTCOLL \HTMAIN \VMBASEDP SEC/HD SEC/CYL \DISKTYPE)) (FUNCTION \LOCKVAR]) ) (DECLARE: EVAL@COMPILE DONTCOPY (FILESLOAD (LOADCOMP) LLFAULT) (DECLARE: DOEVAL@COMPILE DONTCOPY (ADDTOVAR GLOBALVARS SEC/HD SEC/CYL \DISKTYPE \TRIDENTFLG) ) ) (DECLARE: DONTEVAL@LOAD DOCOPY (INITDLIONDISK) ) (PUTPROPS BDISKDLION COPYRIGHT ("Xerox Corporation" 1983)) (DECLARE: DONTCOPY (FILEMAP (NIL (903 7226 (\DL.DISKINIT 913 . 1498) (\DL.ACTONVMEMFILE 1500 . 2365) (\DL.ACTONVMEMPAGE 2367 . 3077) (\DL.DISKSEEK 3079 . 3682) (\DL.XFERDISK 3684 . 6001) (\DL.DISKOP 6003 . 6300) (\D2V 6302 . 6544) (\V2HDSEC 6546 . 6951) (\V2CYL 6953 . 7224)) (7227 7827 (INITDLIONDISK 7237 . 7825))))) STOP