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:
2559
src/kshack/cmds.m80
Normal file
2559
src/kshack/cmds.m80
Normal file
File diff suppressed because it is too large
Load Diff
500
src/kshack/condef.m80
Normal file
500
src/kshack/condef.m80
Normal 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
100
src/kshack/dr.m80
Normal 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
1768
src/kshack/hcore.m80
Normal file
File diff suppressed because it is too large
Load Diff
9979
src/kshack/kns10.4_2
9979
src/kshack/kns10.4_2
File diff suppressed because it is too large
Load Diff
42
src/kshack/msg.m80
Normal file
42
src/kshack/msg.m80
Normal 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
123
src/kshack/store.m80
Normal 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
1472
src/kshack/subrtn.m80
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user