1
0
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:
Lars Brinkhoff
2018-06-12 21:31:42 +02:00
parent 826f167135
commit 0d5c8c25ea
4 changed files with 253 additions and 1 deletions

247
src/kldcp/fedump.10 Executable file
View 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