1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-04 23:54:37 +00:00

Reconstructed source files from assembler listing.

This commit is contained in:
Lars Brinkhoff
2018-08-24 14:38:04 +02:00
parent 5229099e21
commit 9799809810
8 changed files with 6564 additions and 9979 deletions

2559
src/kshack/cmds.m80 Normal file

File diff suppressed because it is too large Load Diff

500
src/kshack/condef.m80 Normal file
View File

@@ -0,0 +1,500 @@
;*******8080 CONSOLE FOR DIGITAL EQUIPMENT CORP. KS10*******
.SBTTL *CONSOLE ERROR CODES DEFINED*
;LISTING CONTROLS
.NLIST BEX
.LIST MD,MC,MEB
;SYMBOL ASSIGNMENTS
RAMST = 8192. ;FIRST "RAM" MEMORY ADDRESS
KPAINI = 1700. ;VALUE FOR .44 SEC BETWEEN WORD31 CHECKS
KATIMX = 35. ;NUMBER OF TIME IN A ROW KA HAS TO BE THE SAME
;KATIMX .EQ. 14. IS 6 SECONDS, .EQ.35. IS 15 SEC
RUNFP = ^O300 ;I/O REG CONTAING CPU "RUN FLOP"
TTYSW = ^O300 ;I/O REG FOR TTY FRONT PANEL SWITCHES
SMSTS = ^O301 ;I/O REG FOR KS10 STATUS BITS
BOOTSW = ^O301 ;I/O REG FOR HARDWARE "BOOT" SWITCH
CARRIER = ^O302 ;I/O REG FOR READING KLINIK CARRIER
SMPAR = ^O100 ;I/O REG FOR ENABLING KS10 PARITY DETECT
RESET = ^O100 ;I/O REG FOR ISSUEING KS10 BUS RESET
REFERR = ^O101 ;I/O REG FOR READING MOS MEM REFRESH ERR FLAG
LIGHTS = ^O101 ;I/O REG FOR WRITING THE PANEL LIGHTS
DTR = ^O101 ;I/O REG FOR WRITING THE DATA TERMINAL READY
R.BUSY = ^O102 ;I/O REG FOR READING "MEM BUSY" OR "I/O BUSY"
R.RESET = ^O102 ;I/O REG FOR READY IF RESET WENT TRUE(VIA AC LO)
CRMCTL = ^O204 ;I/O REG FOR ACCESSING CRAM
DIAG = ^O205 ;I/O REG FOR DIAG FUNCTION BITS
CLKCTL = ^O206 ;I/O REG FOR SETTING KS10 CLK CTL BITS
BUSCTL = ^O210 ;I/O REG FOR KS10 BUS COMM.
CPUCTL = ^O212 ;I/O REG FOR KS10 "RUN,EXECUTE,CONTINUE"
CTYCTL = ^O201 ;I/O REG FOR UART CONTROL/STATUS
CTYDAT = ^O200 ;I/O REG FOR UART DATA BUFFER
REMCTL = ^O203 ;REMOTE UART CONTROL REGISTER
REMDAT = ^O202 ;REMOTE UART DATA REGISTER
DTARB = ^O114 ;I/O REG FOR DATA CYCLE OF BUS ARB..
BUSARB = ^O115 ;I/O REG FOR BUS ARBITRATION SIGNALS
INT2KS = ^O116 ;I/O REG FOR INTERRUPTING KS-10
D2835 = ^O0 ;R DATA BITS 28-35
D2027 = ^O1 ;R DATA BITS 20-27
D1219 = ^O2 ;R DATA BITS 12-19
D0411 = ^O3 ;R DATA BITS 04-11
D0003 = ^O103 ;R DATA BITS 0-3
A2835 = ^O103
A2027 = ^O105
A1219 = ^O107
A0411 = ^O111
A0003 = ^O113
W2835 = ^O102
W2027 = ^O104
W1219 = ^O106
W0411 = ^O110
W0003 = ^O112
.SBTTL****NUMERICAL VALUE ASSIGNMENTS
BPI16 = ^O2000 ;"DENSITY/SLAVE" DEFAULT FOR 1600 BPI TAPES
BPI8 = ^O1000 ;"DENSITY/SLAVE" DEFAULT FOR 800 BPI TAPES
EOLCH = ^O377 ;END-OF-LINE CODE
ARBRESP = ^O20 ;BIT FOR "BUS REQ"
DATACK = 01 ;BIT FOR "DATA ACKNOWLEDGE"
NONXMEM = ^O100 ;BIT FOR "NON-EXISTANT MEMORY"
TRPDEF = ^O20 ;BIT SAYS DEFAULT TRAP ENABLE ON
DEFLTE = ^O174 ;BITS SAY DEFAULT: CACHE ENABLE, 1MSEC CLK ENABL
;ALL PARITY ON
BIT15 = ^O100000 ;THIS IS BIT15(IF U COUNT RIGHT TO LEFT)
BT.BIT = 1 ;BIT SAYS DOING BOOTSTRAP FROM DISK
MT.BIT = 2 ;BIT SAYS DOING BOOTSTRAP FROM MAGTAPE
.MODE0 = 1 ;FLAG SAYS KLINIK MODE 0
.MODE1 = 2 ;FLAG SAYS KLINIK MODE 1
.MODE2 = 4 ;FLAG SAYS KLINIK MODE 2
.MODE3 = ^O10 ;FLAG SAYS KLINIK MODE 3
.MODE4 = ^O20 ;FLAG SAYS KLINIK MODE 4 (MANUFACTURING MODE)
CARRLOSS = ^O3 ;INTERRUPT CODE FOR "KLINIK CARRIER LOSS"
KL.ACTIVE = ^O2 ;INTERRUPT CODE FOR WHEN KLINIK BECOMES ACTIVE
STMSK = ^O373 ;MASK FOR THE STATE LIGHT
STBIT = ^O4 ;STATE BIT
.IN = ^O333 ;THE "IN" INSTRUCTION
.OUT = ^O323 ;THE "OUT" INSTRUCTION
.RET = ^O311 ;THE "RET" INSTRUCTION
.SBTTL****ASCII CHARACTER VALUE ASSIGNMENTS
Q.OUT = 00 ;NULL CHAR..STANDS FOR "QUICK.OUT"
SYNC = 01 ;SYNC CHAR FOR APT MESSAGES
CRCHR = ^O15 ;CARRIAGE RETURN
LFCHR = ^O12 ;LINE FEED
COMMA = ^O54 ;ASCII FOR COMMA
CNBCK = ^O34 ;CONTROL-BACKSLASH
BELL = ^O7 ;A BELL FOR WHEN HOST SYSTEMS GIVE ME GRIEF
STAR = ^O52 ;A STAR *
QUO = ^O42 ;DOUBLE QUOTES "
LBSIGN = ^O43 ;POUND SIGN #
RPAREN = ^O51 ;RIGHT PAREN )
ALT = ^O33 ;ALT MODE
CNTLZ = ^O32 ;CONTROL-Z
CNTLY = ^O31 ;CONTROL-Y ENDS MODE 4
CNTLU = ^O25 ;CONTROL-U
CNTLS = ^O23 ;CONTROL-S
CNTLQ = ^O21 ;CONTROL-Q
CNTLO = ^O17 ;CONTROL-O
CNTLC = ^O3 ;CONTROL-C
RBOUT = ^O177 ;RUB-OUT
CCHR = ^O103 ;"C"
DCHR = ^O104 ;"D"
TAB = ^O11 ;HORIZONTAL TAB
SPACE = ^O40 ;SPACE
SLASH = ^O57 ;SLASH "/"
BSLASH = ^O134 ;BACKSLASH "\"
DOLLAH = ^O44 ;DOLLAR SIGN "$"
PERCNT = ^O45 ;"%"
QUES = ^O77 ;"?"
ARROW = ^O76 ;"^"
UCHR = ^O125 ;"U"
OCHR = ^O117 ;"O"
UPARR = ^O136 ;"^"
ONE = ^O01 ;"1"
TWO = ^O02 ;"2"
THREE = ^O03 ;"3"
FOUR = ^O04 ;"4"
FIVE = ^O05 ;"5"
SIX = ^O06 ;"6"
SEVEN = ^O07 ;"7"
EIGHT = ^O70 ;"8" THE ASCII NUMBER
NINE = ^O71 ;"9" THE ASCII NUMBER
TEN = ^O12 ;"10"
;NUMERICAL ASSIGNMENTS TO GENERATE THE OFFSETS USED IN COMPUTING
;DEVICE ADDRESSES FROM ANY RH BASE ADDRESS
.RADIX 8
P.00 = 0
P.02 = 2
P.04 = 4
P.06 = 6
P.10 = 10
P.12 = 12
P.14 = 14
P.16 = 16
P.20 = 20
P.22 = 22
P.24 = 24
P.26 = 26
P.30 = 30
P.32 = 32
P.34 = 34
P.36 = 36
P.40 = 40
P.42 = 42
P.44 = 44
P.46 = 46
D776 = 776
D772 = 772
.RADIX 10
;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY
; 7=REWIND
; 11=DRIVE CLEAR
; 25=ERASE
; 27=WRITE TAPE MARK
SKP.TAPE=^O31 ; 31=SPACE FORWARD(SKIP A FILE)
; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE)
; 51=WRITE CHECK FORWARD
; 57=WRITE CHECK REVERSE
; 61=WRITE FORWARD
READ.TAPE=^O71 ; 71=READ FORWARD(GO!)
; 77=READ REVERSE(GO!)
;DEFAULT VALUES FOR CHECKSUM COUNTS, SO THAT ASSEMBLIES WITH 3 PROMS WILL WORK
CHKSM0 = 0
CHKSM1 = 0
CHKSM2 = 0
CHKSM3 = 0
.SBTTL****MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES
;PCHAR---
; PRINTS A SINGLE CHARACTER, WHICH IT FINDS IN THE TRAILING BYTE
; CLOBBERS ACCUM
.MACRO PCHAR XCHR
RST 1 ;GO PRINT CHAR IN TRAILING BYTE
.BYTE XCHR ;CHAR TO PRINT
.ENDM
;KCHAR---
; PRINT A SINGLE CHARACTER ON THE KLINIK LINE ONLY. CHAR TO BE PRINTED PASS
; AS A TRAILING ARG
.MACRO KCHAR XCHR
CALL KCHR ;GO PRINT THE CHARACTER
.BYTE XCHR
.ENDM
;PLINE---
; PRINTS A LINE OF CHARACTERS, POINTER PASSED AS TRAILING ARG
; AND END OF LINE SIGNALED BY A "0" BYTE
.MACRO PLINE XMS
RST 3 ;PRINT LINE OF CHARS
.ADDR XMS ;BUFF TO PRINT
.ENDM
;KLINE---
; PRINTS A LINE OF CHARACTERS, POINTER PASSED AS TRAILING ARG
; AND END OF LINE SIGNALED BY A "0" BYTE
.MACRO KLINE XMS
CALL KLINE ;PRINT LINE OF CHARS
.ADDR XMS ;BUFF TO PRINT
.ENDM
;INTOFF---
; EXECUTES THE OLD "INTERNAL MODE OFF" SUBROUTINE.., BUT BY USING THE
; RESTART INSTRUCTION CALL, WE SAVE 30.+ BYTES OVER "CALL INTOFF"
.MACRO INTOFF
RST 6 ;GO EXIT FROM INTERNAL MODE
.ENDM
;INTON---
; EXECUTES THE OLD "INTERNAL MODE ON" SUBROUTINE.., BUT BY USING THE
; RESTART INSTRUCTION CALL, WE SAVE 30.+ BYTES OVER "CALL INTON"
.MACRO INTON
RST 2 ;GO SET INTERNAL MODE
.ENDM
;CLINE---
; PRINTS A LINE OF CHARACTERS, POINTER PASSED IN (H,L),
; AND END OF LINE SIGNALED BY A "0" BYTE
.MACRO CLINE XMS
LXI H,XMS ;PASS POINTER TO THE CHARACTERS
CALL CLINE ;PRINT LINE OF CHARS
.ENDM
;PCRLF---
; PRINTS CARRIAGE RETURN-LINE FEED
; LEAVES ALL REGISTERS IN TACT
.MACRO PCRLF
CRLF ;GO PRINT CARRIAGE RETURN LINE FEED
.ENDM
;SSCLK---
; ISSUES A SINGLE KS10 CLOCK..CLOBBERS THE ACCUMULATOR
.MACRO SSCLK
MVI A,02 ;BIT TO SET "SINGLE CLK" TO KS10
OUT CLKCTL ;ISSUE THE SINGLE CLOCK
.ENDM
;PTAB---
; PRINTS A TAB
; CLOBBERS ACCUM
.MACRO PTAB
PCHAR TAB ;GO PRINT A TAB
.ENDM
;PSPACE---
; PRINTS A " " SPACE
; CLOBBERS ACCUM
.MACRO PSPACE
PCHAR SPACE ;GO PRINT A SPACE
.ENDM
;PSLSH---
; PRINTS A "/" SLASH
; CLOBBERS ACCUM
.MACRO PSLASH
PCHAR SLASH ;GO PRINT A SLASH
.ENDM
;ENDCMD---MACRO TO DO THE RIGHT STUFF
; AT THE END OF A COMMAND..COMMON CODE FOR FINISHING ALL INSTRS
.MACRO ENDCMD
RET ;RETURN TO CALLER
.ENDM
;BUSRESP--- MACRO TO READ I/O REG 301Q
; IN ORDER TO CHECK ANY OF THE BITS WHICH
; ARE READABLE IN THAT REGISTER.. THE BIT
; OR BITS TO BE CHECKED IS PASSED AS A
; TRAILING ARGUEMENT "DB" TO A RST INSTR.
; ;THE EXECUTION OF THE RESTART ACCOUNTS
; FOR THE 2 "NOP" TIME REQUIRED FOR THE
; BUS ARBITRATOR TO GRANT THE BUS. THIS
; MACRO RETURNS MAINLINE WITH THE Z-BIT SET
; IF THE REG 301 DOES !NOT! MATCH THE TRAILING
; ARG THAT WAS PASSED AND WITH THE Z-BIT CLEAR
; IF THERE IS A "TRUE" IN ANY OF THE BIT POSITIONS
; PASSED...
.MACRO BUSRESP XXX
CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE
.BYTE XXX ;BITS TO BE CHECKED
.ENDM
.MACRO D ARG,ARG1,NUL,ARG2,ARG3
.NLIST
.RADIX 8
.BYTE ARG3 & 377
Q.1 = <<ARG3/400> & 1> ! <<ARG2*2> & 376>
Q.2 = <<ARG2/200> & 3> ! <<ARG1*4> & 374>
Q.3 = <<ARG1/100> & 7> ! <<ARG*10> & 370>
Q.4 = <ARG/40> & 17
.BYTE Q.1
.BYTE Q.2
.BYTE Q.3
.BYTE Q.4
.RADIX 10
.LIST
.ENDM
.MACRO LI. ARG2,ARG3
.RADIX 8
ARG = 0
ARG1 = 0
NUL = 0
Q.1 = <<ARG3/400> & 1> ! <<ARG2*2> & 376>
Q.2 = <<ARG2/200> & 3> ! <<ARG1*4> & 374> ! <2*4>
.BYTE Q.1
.BYTE ARG3 & 377
.BYTE Q.2
.RADIX 10
.ENDM
.MACRO EI. ARG2,ARG3
.RADIX 8
ARG = 0
ARG1 = 0
NUL = 0
Q.1 = <<ARG3/400> & 1> ! <<ARG2*2> & 376>
Q.2 = <<ARG2/200> & 3> ! <<ARG1*4> & 374> ! <4*4>
.BYTE Q.1
.BYTE ARG3 & 377
.BYTE Q.2
.RADIX 10
.ENDM
.MACRO DI. ARG2,ARG3
.RADIX 8
ARG = 0
ARG1 = 0
NUL = 0
.BYTE ARG3 & 377
Q.1 = <<ARG3/400> & 1> ! <<ARG2*2> & 376>
Q.2 = <<ARG2/200> & 3> ! <<ARG1*4> & 374>
.BYTE Q.1
.BYTE Q.2
.RADIX 10
.ENDM
.MACRO DI.INDIRECT ARG3
.RADIX 8
.ADDR ARG3
.BYTE ^O200
.RADIX 10
.ENDM
.MACRO TWAIT ARG3
.RADIX 8
.ADDR ARG3
.BYTE <14*4>
.RADIX 10
.ENDM
.MACRO WAIT ARG3
.RADIX 8
.ADDR ARG3
.BYTE <6*4>
.RADIX 10
.ENDM
.MACRO ERRTST ARG3
.RADIX 8
.ADDR ARG3
.BYTE <10*4>
.RADIX 10
.ENDM
.MACRO UBA. ARG2,ARG3
.RADIX 8
ARG = 0
ARG1 = 0
NUL = 0
.BYTE ARG3 & 377
Q.1 = <<ARG3/400> & 1> ! <<ARG2*2> & 376>
Q.2 = <<ARG2/200> & 3> ! <<ARG1*4> & 374> ! <16*4>
.BYTE Q.1
.BYTE Q.2
.RADIX 10
.ENDM
.MACRO ENDLST
.RADIX 8
.BYTE 0
.BYTE 0
.BYTE <12*4>
.RADIX 10
.ENDM
.MACRO MOV5B
RST 4
.BYTE 0
.ENDM
.MACRO CRLF
RST 4
.BYTE 2
.ENDM
.MACRO ARG16
RST 4
.BYTE 4
.ENDM
.MACRO RUN..
RST 4
.BYTE 6
.ENDM
.MACRO ARG36
RST 4
.BYTE 8
.ENDM
.MACRO CLRRM FOO
RST 4
.BYTE 10.
.ADDR FOO+5
.ENDM
.MACRO EXAM FOO
.RADIX 8
CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS
.ADDR FOO ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG
.RADIX 10
.ENDM
.MACRO DEPOS FOO
.RADIX 8
ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE
CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR
.ADDR FOO ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG
.RADIX 10
.ENDM
.MACRO RD.REG FOO
IN FOO ;READ AN I/O REG
CMA ;AND ALWAYS COMPLEMENT
.ENDM
.MACRO SETZM FOO
CLRRM DMDAT
DEPOS FOO
.ENDM
.MACRO TSTRDY FOO
.RADIX 8
IN FOO ;READ DESIRED UART STATUS
ANI 01 ;CHECK IF SET; ZBIT=0 IF READY; ZBIT=1 IF NOT YET READY
.RADIX 10
.ENDM
.MACRO LONG.DELAY ARG
LXI H,200. * ARG ;SET UP THE TIMING COUNT IN H,L REG
CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT)
.ENDM
;MACRO TO SAVE SPACE ON OPERATIONS THAT WANT TO CLEAR
;A LOCATION IN THE RAM.. ELIMINATES EVERY XRA/STA PAIR, AND
;INSERTS INSTEAD AN RST/BYTE PAIR.. AT BEST, AN XRA AND AN STA
;ARE ELIMINATED. AT WORST, A 3 BYTE STA IS REPLACED WITH
;A 2 BYTE RST/BYTE.
.MACRO CLRB XX
.NLIST
OFFSET= XX - ^O20000
.IF LE, ^O400-OFFSET
.IFF
RST 5
.BYTE OFFSET
.IFT
.ERROR OFFSET,;BYTE OUT OF RANGE ON CLRB MACRO
.ENDC
.LIST
.ENDM
CHKSM0=-^O60023
CHKSM1=-^O33145
CHKSM2=-^O17724
CHKSM3=-^O173452

100
src/kshack/dr.m80 Normal file
View File

@@ -0,0 +1,100 @@
.SBTTL ****DISK TRANSFER CHANNEL COMMAND LIST****
DSKSEQ:
;A MINOR NOTE: 40000 WEIGHT BIT IS "VALID"
; : 100000 WEIGHT BIT IS "36-BIT XFR"
UBA. 763,001 ;ADDRESS OF UBA IS FIRST ELEMENT OF THE LIST
DI. 140,001 ;VALID & "36 BIT XFR" FOR PAGE 1 (1000-1777)
LI. D776,P.10 ;GET DRIVE STATUS & CONTROL REG, SO CAN SET UNIT
DI.INDIRECT UNITNM ;NOW SET THE UNIT NUMBER
EI. D776,P.12 ;ADDRESS OF DRIVE STATUS
TWAIT 400 ;CHECK THAT THE DRIVE IS PRESENT
WAIT 200 ;CHECK & WAIT FOR READY
LI. D776,P.10 ;ADDR OF DRIVE STATUS REG
DI. 0,40 ;ISSUE CONTROLLER CLR
DI.INDIRECT UNITNM ;SET TO UNIT #
LI. D776,P.00 ;ADDR OF CONTROLLER STATUS REG
DI. 0,11 ;ISSUE DRIVE CLEAR
DI. 0,21 ;SET "READ-IN-PRESET"
LI. D776,P.12 ;GET TO THE DRIVE STATUS REGISTER
WAIT 200 ;WAIT FOR IT TO BE READY
TWAIT 100 ;NOW CHECK THAT "PRE-SET" HAS SET VOLUME VALID
LI. D776,P.06 ;ADDR TRACK/SECTOR REG
DI.INDIRECT BLKNUM ;EMPTY FOR NOW
LI. D776,P.34 ;ADDR OF CYLINDER REG
DI.INDIRECT BLKADR ;EMPTY FOR NOW
QXFR: LI. D776,P.02 ;ADD OF WORD COUNT REG
DI. 176,000 ;512 WORDS IS 1024 18-BIT BYTES(A PAGE)
LI. D776,P.04 ;ADDR OF UNIBUS ADDRESS REG
DI. 4,000 ;SET SM10 MEM ADDR TO 1000
LI. D776,P.00 ;BACK TO STATUS REG
DI. 0,71 ;ISSUE READ
EI. D776,P.00 ;NOW READ TO CHECK FOR ERRORS IN XFER
WAIT 200 ;CHECK FOR READY BIT TRUE..
EI. D776,P.12 ;CHECK DRIVE STATUS REG ITSELF
ERRTST 40000 ;TEST "ERR" BIT
;IF IT WAS OK, THEN CHECK THE CONTROLLER FOR ERRORS
EI. D776,P.00 ;EXAMINE CONTROLLER
ERRTST 060000 ;DRIVE RDY, NOW SEE IF ENCOUNTERED ERRORS
ENDLST ;END OF CHANNEL COMMAND LIST
.SBTTL TAPE TRANSFER CHANNEL COMMAND LIST
;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY
; 7=REWIND
; 11=DRIVE CLEAR
; 25=ERASE
; 27=WRITE TAPE MARK
; 31=SPACE FORWARD(SKIP A FILE)
; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE)
; 51=WRITE CHECK FORWARD
; 57=WRITE CHECK REVERSE
; 61=WRITE FORWARD
; 71=READ FORWARD(GO!)
; 77=READ REVERSE(GO!)
MTASEQ: UBA. 763,001 ;ADDRESS OF UBA PAGING RAM
DI. 40,001 ;SET VALID IN PAGE 1
LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER
DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR
DI.INDIRECT TAPEUNIT ;SET TAPE UNIT #
LI. D772,P.32 ;SLAVE SELECT/FORMAT/DENSITY REG
DI.INDIRECT DEN.SLV ;SET SLAVE, FORMAT, DENSITY(TEMP:DENS=1600,F=0,S=0)
EI. D772,P.12 ;READ THE DRIVE STATUS, TO MAKE SURE IT EXISTS
TWAIT 400 ;CHECK THE "DRIVE PRESENT" BIT
WAIT 200 ;IF WAS PRESENT, WAIT FOR IT TO BE READY
LI. D772,P.06 ;FRAME COUNT REGISTER
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER
DI. 0,7 ;ISSUE "REWIND" TO TAPE
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY
WAIT 200 ;WAIT FOR REWIND TO COMPLETE
QTXFR: LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG
DI. 4,000 ;SET KS10 START ADDRESS TO 1000
LI. D772,P.02 ;SET ADDRESS TO WORD COUNT REGISTER
DI. 176,000 ;1 PAGE OF 512 WORDS IS 1024 18-BIT BYTES
LI. D772,P.06 ;FRAME COUNT REGISTER
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER
DI.INDIRECT SKP.GO ;ISSUE "XFER CMD"(31=SKIP .OR. 71=RD-IN)
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY
WAIT 200 ;WAIT FOR FILE READ TO COMPLETE
EI. D772,P.14 ;LOOK AT THE DRIVE ERROR REGISTER
RETRY.: ERRTST 070300 ;ERRORS WORTH RETRYING??
FRMERR: ERRTST 103400 ;SEE IF THIS WAS A CORRECTABLE TYPE ERROR
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR ERRORS
ERRTST 40000 ;GET ANY DRIVE ERRORS??
LI. D772,P.00 ;NOW ADDRESS TO CONTROLLER STATUS
ERRTST 60000 ;CHECK FOR ERRORS THERE.
ENDLST ;END OF CHANNEL COMMAND LIST
;QUICK LITTLE ROUTINE TO RESET THE MAGTAPE AFTER IT SUFFERS AN
;IGNORABLE ERROR
MTARST: LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER
DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR
DI.INDIRECT TAPEUNIT ;FIX UNIT NUMBER
LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG
DI. 4,000 ;SET KS10 START ADDRESS TO 1000
LI. D772,P.06 ;FRAME COUNT REGISTER
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
ENDLST ;QUICK OUT

1768
src/kshack/hcore.m80 Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

42
src/kshack/msg.m80 Normal file
View File

@@ -0,0 +1,42 @@
.IIF NDF,NOROOM INIER: .ASCIZ /?BUS\/ ;BUS POLLUTED ON POWER UP
BV: .ASCIZ /?BFO/ ;INPUT BUFFER OVERFLOW
CMDNG: .ASCII /?IL/ ;ILLEGAL INSTRUCTION
.BYTE ^O15,^O12,0 ;CR-LF
TTM: .ASCIZ /?UI\/ ;UNKNOWN INTERRRUPT
EBHED: .ASCIZ /BUS 0-35\/ ;MESSAGE HEADER FOR "EB" CMD
KSPRMT: .ASCII /KS10>/ ;PROMPT MESSAGE
.BYTE ^O377,0
MSG10: .ASCIZ % CYC\SENT/% ;CYCLE TYPE FOR "DB" COMMAND
DRCVD: .ASCIZ %\RCVD/% ;DATA RECEIVED ON BUS(DB CMD)
ECVER: .ASCIZ %?A/B\% ;A & B COPIES OF CRAM BITS DID NOT MATCH
PCMSG: .ASCIZ %PC/% ;OBVIOUS
HLTMS: .ASCIZ .%HLTD/. ;MESSAGE "HALTED/XXXXXX" WHERE XXXXXX IS DATA
EXMS: .ASCIZ /?DNF\/ ;"DID NOT FINISH"-INSTR
BTFAIL: .ASCIZ /?BT / ;DEVICE ERROR OR TIMEOUT DURING BOOT OPERATION
BTMSG1: .ASCIZ /BT SW/ ;MESSAGE SAYS BOOTING, USING BOOT SW
SMERR: .ASCIZ /?DNC\/ ;"DID NOT COMPLETE"-THE HALT
OFFMSG: .ASCIZ /OFF\/ ;MESSAGE SAYS SIGNAL IS "OFF"
PARMSG: .ASCIZ /?PAR ERR / ;REPORT CLOCK FREEZE DUE TO PAR ERR
MOSMSG: .ASCIZ /?MRE\/ ;MEMORY REFRESH ERROR
ERRMSG: .ASCIZ /?BC / ;TA-DA....BOOT CHECK
RN.: .ASCIZ /?RUNNING\/ ;TRYING TO DO A CMD THAT MAY SCREW UP
NOA: .ASCIZ /?NDA\/ ;RECEIVED NO DATA ACKNOWLEDGE ON MEM REQUEST
NXMMSG: .ASCIZ /?NXM\/ ;REFERRENCED NON EXISTANT MEMORY LOCATION
NBR: .ASCIZ /?NBR\/ ;CONSOLE WAS NOT GRANTED BUS ON A REQUEST
RAG: .ASCIZ /?RA/ ;CMD REQUIRES ARGUEMENT..U GOTTA TYPE SOMETHING
BB1: .ASCIZ /?BN/ ;TYPED A BAD NUMBER(I.E 9 OR X OR # ETC.)
Q.UBA: .ASCIZ />>UBA?/ ;QUERY FOR UNIBUS ADAPTER
Q.RH: .ASCIZ />>RHBASE?/ ;QUERY FOR RH11 TO USE
Q.UNIT: .ASCIZ />>UNIT?/ ;QUERY FOR UNIT TO USE
Q.TCU: .ASCIZ />>TCU?/ ;QUERY FOR TAPE CONTROLL UNIT
Q.DEN: .ASCIZ />>DENS?/ ;QUERY FOR TAPE DENSITY
Q.SLV: .ASCIZ />>SLV?/ ;QUERY FOR TAPE SLAVE
KAMSG: .ASCIZ /?KA\/ ;KEEP ALIVE FAILED
FRCMSG: .ASCIZ /?FRC\/ ;HAD A FORCED RELOAD
PWLEN: .ASCIZ /?PWL/ ;PASSWORD LENGTH ERROR
NOACCS: .ASCII /?NA/ ;NOT AVAILABLE (KLINIK LINE THAT IS)
.BYTE ^O15,^O12,0 ;CR-LF
QPW: .ASCII /PW:/ ;ASK FOR A PASSWORD MESSAGE
.BYTE ^O15,^O12,0 ;CR-LF
AUTOMS: .ASCIZ /BT AUTO/ ;BEGINNING AUTO BOOT SEQUENCE

123
src/kshack/store.m80 Normal file
View File

@@ -0,0 +1,123 @@
.SBTTL - SM10 DATA STORAGE PARAMETERS
;NOTE THAT ALL THESE LOCATIONS ARE RAM LOCATIONS
;AND MAY BE USED WITH THE
;ASSEMBLY OF SEPARATE MODULES OF CONSOLE CODE....
.= RAMST
T80DT: .BLKB 2
C80AD: .BLKB 2
CRMAD: .BLKB 2
BYTCNT: .BLKB 2
CRMFN: .BLKB 2
EMBUF: .BLKB 5
MEMAD: .BLKB 5
IOAD: .BLKB 5
ENEXT: .BLKB 2
DNEXT: .BLKB 2
CHRBUF: .BLKB 5
BUSAD: .BLKB 5
DMDAT: .BLKB 5
RAMX1: .BLKB 6
RAMX2: .BLKB 6
ER.LOC: .BLKB 3 ;PLACE TO EXECUTE 8080 "IN'S" AND "OUT'S"
TMPBF2: .BLKB 5
TMPB2: .BLKB 5
BLKNUM: .BLKB 5
BLKADR: .BLKB 5
EXM1: .BLKB 1
NOPNT: .BLKB 1
BT.TYPE: .BLKB 1
P8.TMP: .BLKB 1
ERADDR: .BLKB 1
KLNKSW: .BLKB 1
KPWPNT: .BLKB 2
KPWCNT: .BLKB 1
WATCHC: .BLKB 1
CMDS..: .BLKB 1
UNITNM: .BLKB 5
TAPEUNIT: .BLKB 5
SKP.GO: .BLKB 5
BRKON: .BLKB 1
BRKDT: .BLKB 2
ERRCD: .BLKB 2
USRMD: .BLKB 1
RPEND: .BLKB 1
RPCNTR: .BLKB 1
BFCNT: .BLKB 1
STPPD: .BLKB 1
EIFLAG: .BLKB 1
DIFLAG: .BLKB 1
RNFLG: .BLKB 1
CHKPAR: .BLKB 1
CHKREF: .BLKB 1
ECSAV: .BLKB 2
RM100: .BLKB 8
BTMSK: .BLKB 1
BTNUM: .BLKB 1
EOL: .BLKB 1
AM.AI: .BLKB 2
RPBUFS: .BLKB 2
RPLST: .BLKB 2
RPTON: .BLKB 1
CHRCNT: .BLKB 1
BUF.: .BLKB 2
HLSAVE: .BLKB 2
CMD..: .BLKB 2
.ARG1: .BLKB 2
CMCNT: .BLKB 2
FIRST: .BLKB 2
CHKHLT: .BLKB 2
OCTSV: .BLKB 2
SHRTAD: .BLKB 5
RHBASE: .BLKB 5
CSLMODE: .BLKB 1
KACNTR: .BLKB 1
MMFLG: .BLKB 1
MAILFG: .BLKB 1
VERCNT: .BLKB 1
UBANUM: .BLKB 1
GOCODE: .BLKB 1
SECRET: .BLKB 1
DIECNT: .BLKB 1
CNTLQ.ON: .BLKB 1
APTANS: .BLKB 1
PASSWORD: .BLKB 7
KPWBUF: .BLKB 6
PWRTRY: .BLKB 1
KLLINE.ON: .BLKB 1
E.CNT: .BLKB 1
CRMBF: .BLKB ^D16
CRMTM: .BLKB ^D16
KATIM1: .BLKB 2
.IIF DF,SCECOD,SCEADR: .BLKB 2 ;LAST FAILING ADDRESS
MODDIS: .BLKB 2
NOREND: .BLKB 2
ENVPNT: .BLKB 2
PARBT: .BLKB 1
TRAPEN: .BLKB 1
MTAUBA: .BLKB 1
DSKUBA: .BLKB 1
STATE: .BLKB 1
LSTMSG: .BLKB 1
DEN.SLV: .BLKB 5
MTBASE: .BLKB 5
DSBASE: .BLKB 5
RPINI: .BLKB ^D25
RPTBFI: .BLKB ^D50
BUFBG: .BLKB ^D90
BUFEN: .BLKB 1
E.BUF: .BLKB 2
E.BEG: .BLKB ^O140
ENVMNO: .BLKB 1
ENVCHK: .BLKB 1
ENVBUF: .BLKB 70 ;EB IS LONGEST COMMAND WITH 67. CHARS
SYSIN: .BLKB 2
SYSOUT: .BLKB 2
SYSBUF: .BLKB ^O200
SYSEND: .BLKB 1 ;AND EMPTY BYTE TO HOLD END OF LIST
.IF DF,SCECOD
SC.OFF: .BLKB 1 ;RECOVERY ON OR OFF FLAG
RHSAVE: .BLKB 40. ;BUFFER FOR SAVING RH STUFF
.ENDC
FREE:
.END ;END STATEMENT

1472
src/kshack/subrtn.m80 Normal file

File diff suppressed because it is too large Load Diff