mirror of
https://github.com/PDP-10/its.git
synced 2026-02-06 08:34:38 +00:00
FEDUMP - KL10 front end dumper.
This commit is contained in:
247
src/kldcp/fedump.10
Executable file
247
src/kldcp/fedump.10
Executable file
@@ -0,0 +1,247 @@
|
||||
TITLE FEDUMP - KL10 FRONT END DUMPER
|
||||
|
||||
;THIS PROGRAM RUNS STANDALONE ON THE KL10 WITH CACHE AND PAGING TURNED OFF
|
||||
|
||||
.MLLIT==1
|
||||
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
T=6
|
||||
TT=7
|
||||
I=10
|
||||
J=11
|
||||
Q=12
|
||||
R=13
|
||||
P=17
|
||||
|
||||
DDT=774000
|
||||
|
||||
LOC 1000
|
||||
|
||||
LPDL==40
|
||||
PDL: -LPDL,,.
|
||||
BLOCK LPDL
|
||||
|
||||
ICWA=20
|
||||
|
||||
DIRADR: BLOCK 3 ;CYL, SURF, SECT OF DIR
|
||||
DIRWD: 0 ;WORD INDEX OF NEXT FROB IN DIR
|
||||
DIRLEN: 0 ;TOTAL NUMBER OF WORDS IN DIR
|
||||
|
||||
.INSRT SYSTEM;RH10 >
|
||||
|
||||
;USUAL RHGET AND RHSET ROUTINES
|
||||
;STUFF IN TT
|
||||
|
||||
RHGET: TLZA TT,%HRLOD
|
||||
RHSET: TLO TT,%HRLOD
|
||||
DATAO DSK,TT
|
||||
MOVEI TT,10
|
||||
SOJG TT,.
|
||||
DATAI DSK,TT
|
||||
TLNE TT,%HDERR
|
||||
JRST 4,.
|
||||
ANDI TT,177777
|
||||
POPJ P,
|
||||
|
||||
;READ DISK UNIT 0.
|
||||
;A HAS ADDRESS TO READ INTO
|
||||
;B HAS WORD COUNT
|
||||
;C HAS CYLINDER
|
||||
;D HAS SURFACE
|
||||
;E HAS SECTOR
|
||||
;CLOBBERS ARGS
|
||||
|
||||
RDISK: IRPS CM,,CLR RDP ACK
|
||||
MOVEI TT,%HM!CM ;%HRDCL=0
|
||||
PUSHJ P,RHSET
|
||||
TERMIN
|
||||
|
||||
RDISK0: JUMPE B,RDISK9
|
||||
MOVE TT,C
|
||||
HRLI TT,%HRCYL
|
||||
PUSHJ P,RHSET
|
||||
MOVE TT,D
|
||||
LSH TT,8
|
||||
IOR TT,E
|
||||
HRLI TT,%HRADR
|
||||
PUSHJ P,RHSET
|
||||
MOVEI T,-1(A)
|
||||
CAIGE B,20000
|
||||
JRST [ MOVN TT,B
|
||||
JRST .+2 ]
|
||||
MOVNI TT,20000
|
||||
ADD B,TT
|
||||
SUB A,TT
|
||||
LSH TT,4
|
||||
HRL T,TT
|
||||
MOVEM T,ICWA
|
||||
ASH TT,-4-7 ;- # SECTORS
|
||||
MOVNS TT
|
||||
ADD E,TT ;ADVANCE THE DISK ADDR
|
||||
IDIVI E,NSECS
|
||||
EXCH E,T ;# SURFACES
|
||||
ADD T,D
|
||||
IDIVI T,NHEDS
|
||||
MOVE D,TT
|
||||
ADD C,T ;# CYLINDERS
|
||||
|
||||
SETZM ICWA+1
|
||||
MOVSI TT,%HRCTL
|
||||
HRRI TT,%HMRED
|
||||
MOVEI T,ICWA
|
||||
DPB T,[$HCICWA TT]
|
||||
PUSHJ P,RHSET
|
||||
CONSZ DSK,%HIBSY
|
||||
JRST .-1
|
||||
MOVSI TT,%HRSTS
|
||||
PUSHJ P,RHGET
|
||||
TRNE TT,%HSERR
|
||||
JRST 4,. ;DISK ERROR
|
||||
JRST RDISK0 ;TRANSFER NEXT HUNK
|
||||
|
||||
RDISK9: POPJ P,
|
||||
|
||||
;WRITE TAPE UNIT 0
|
||||
;A HAS ADDRESS TO WRITE FROM
|
||||
;B HAS WORD COUNT
|
||||
;WRITES A BUNCH OF 1024 WORD RECORDS FOLLOWED BY EOF
|
||||
;CLOBBERS ITS ARGS
|
||||
|
||||
MAGCOM==0_15.+1_14.+2_6.+1_13.
|
||||
|
||||
MWRITE==MAGCOM+4000
|
||||
MWREOF==MAGCOM+5000
|
||||
MNOOP==MAGCOM+0000
|
||||
MTC==340
|
||||
MTS==344
|
||||
JOBDON==100
|
||||
|
||||
WRTAPE: JUMPLE B,WRTAP9
|
||||
MOVEI TT,-1(A)
|
||||
CAIGE B,2000
|
||||
JRST [ MOVN T,B ;LAST RECORD IS SHORT
|
||||
JRST .+2 ]
|
||||
MOVNI T,2000
|
||||
ADD B,T ;ADVANCE WORD COUNT AND ADDRESS
|
||||
SUB A,T
|
||||
LSH T,4
|
||||
HRL TT,T
|
||||
MOVEM TT,ICWA
|
||||
SETZM ICWA+1
|
||||
DATAO MTS,[ICWA]
|
||||
CONO MTC,MWRITE
|
||||
CONSO MTS,JOBDON
|
||||
JRST .-1
|
||||
JRST WRTAPE
|
||||
|
||||
WRTAP9: SETZM ICWA
|
||||
CONO MTC,MWREOF
|
||||
CONSO MTS,JOBDON
|
||||
JRST .-1
|
||||
CONO MTC,MNOOP
|
||||
POPJ P,
|
||||
|
||||
GO: MOVE P,PDL
|
||||
MOVEI A,BUF ;READ IN HOM BLOCK
|
||||
MOVEI B,200
|
||||
MOVEI C,0 ;WHICH IS PHYSICAL BLOCK 1
|
||||
MOVEI D,0
|
||||
MOVEI E,1
|
||||
PUSHJ P,RDISK
|
||||
HLRZ T,HOMDRC ;SET UP DIR ADDR
|
||||
MOVEM T,DIRADR+0
|
||||
LDB T,[101000,,HOMDRA]
|
||||
MOVEM T,DIRADR+1
|
||||
LDB T,[001000,,HOMDRA]
|
||||
MOVEM T,DIRADR+2
|
||||
HLRZ T,HOMDRL
|
||||
LSH T,7 ;NUMBER OF WORDS IN DIR
|
||||
MOVEM T,DIRLEN
|
||||
SETZM DIRWD
|
||||
|
||||
;PROCESS NEXT FILE
|
||||
LOOP: MOVEI A,BUF ;READ IN THE DIR
|
||||
MOVE B,DIRLEN
|
||||
MOVE C,DIRADR+0
|
||||
MOVE D,DIRADR+1
|
||||
MOVE E,DIRADR+2
|
||||
PUSHJ P,RDISK
|
||||
MOVE T,DIRWD
|
||||
CAML T,DIRLEN
|
||||
JRST DONE
|
||||
MOVSI T,BUF(T) ;BLT DIR ENTRY DOWN TO BASE OF BUF
|
||||
HRRI T,BUF
|
||||
BLT T,BUF+7
|
||||
|
||||
SKIPN T,DIRNAM ;IF FILE NAME IS ZERO
|
||||
JRST NXTFIL ;SKIP THIS FILE
|
||||
CAME T,[-2,,-2] ;OR VARIOUS OTHER FILLERS
|
||||
CAMN T,[177776,,177776]
|
||||
JRST NXTFIL
|
||||
|
||||
HLRZ C,DIRPBN ;SET UP ADDRESS OF THIS FILE
|
||||
LDB D,[101000,,DIRPBN]
|
||||
LDB E,[001000,,DIRPBN]
|
||||
MOVEI A,BUF+10
|
||||
HLRZ B,DIRWRT
|
||||
LSH B,16.
|
||||
HRRZ T,DIRWRT
|
||||
ADDI B,1(T)
|
||||
LSH B,-1 ;# -10 WORDS
|
||||
MOVEM B,FILLEN'
|
||||
PUSHJ P,RDISK ;READ IN THE FILE
|
||||
MOVEI A,BUF
|
||||
MOVE B,FILLEN
|
||||
ADDI B,10 ;WRITE OUT DIR ENTRY CONCAT FILE
|
||||
PUSHJ P,WRTAPE
|
||||
|
||||
NXTFIL: MOVEI T,10
|
||||
ADDM T,DIRWD
|
||||
JRST LOOP
|
||||
|
||||
DONE: SETZM ICWA ;PUT 2 EOFS AT END OF TAPE
|
||||
CONO MTC,MWREOF
|
||||
CONSO MTS,JOBDON
|
||||
JRST .-1
|
||||
CONO MTC,MNOOP
|
||||
JRST DDT ;WHOLE DIR DONE
|
||||
|
||||
PAT:
|
||||
PATCH: BLOCK 100
|
||||
|
||||
CONSTANTS
|
||||
VARIABLES
|
||||
|
||||
;I/O BUFFER IS REST OF CORE
|
||||
BUF:
|
||||
|
||||
;FORMAT OF HOME BLOCK
|
||||
|
||||
HOMIXC==BUF+64 ;RH CYLINDER OF INDEX FILE
|
||||
HOMIXA==BUF+65 ;LH SURFACE AND SECTOR OF INDEX FILE
|
||||
HOMIXL==BUF+65 ;RH NUMBER OF CONSECUTIVE BLOCKS IN INDEX FILE
|
||||
HOMDRC==BUF+66 ;LH CYLINDER OF DIRECTORY FILE
|
||||
HOMDRA==BUF+66 ;RH SURFACE AND SECTOR OF DIRECTORY FILE
|
||||
HOMDRL==BUF+67 ;LH NUMBER OF CONSECUTIVE BLOCKS OF DIR
|
||||
;OTHER STUFF TOO, WHO CARES
|
||||
|
||||
;FORMAT OF DIRECTORY BLOCK
|
||||
;EACH BLOCK CONTAINS 16 8-WORD BLOCKS WHICH WHEN BLT'ED
|
||||
;DOWN TO THE FRONT OF THE BUF LOOK LIKE THIS
|
||||
|
||||
DIRNAM==BUF+0 ;FILE NAME, 2 WORDS OF PDP11 SQUOZE
|
||||
DIREXT==BUF+1 ;LH EXTENSION, 1 WORD OF PDP11 SQUOZE
|
||||
DIRDAT==BUF+1 ;RH SMITHSONIAN DATE
|
||||
DIRPBN==BUF+2 ;PHYS BLOCK NUMBER, BYTE(18)CYL(10)SURF(8)SECT
|
||||
DIRALC==BUF+3 ;WORDS ALLOC LH MOST SIGNIFICANT 16 BITS, RH LEAST
|
||||
DIRWRT==BUF+4 ;WORDS WRITTEN SAME FORMAT AS DIRALC
|
||||
DIRLOD==BUF+5 ;LH 11 LOAD ADR, RH 11 START ADDR
|
||||
DIRSTS==BUF+6 ;LH "FILE TYPE & STATUS", RH CHECKSUM
|
||||
DIR7==BUF+7 ;RESERVED MUST BE ZERO
|
||||
|
||||
END GO
|
||||
|
||||
Reference in New Issue
Block a user