5654 lines
166 KiB
Text
5654 lines
166 KiB
Text
;DAKAM
|
|
|
|
|
|
MCNVER==0
|
|
DECVER==2
|
|
|
|
|
|
XLIST
|
|
DEFINE NAME (MCNVER,DECVER)<
|
|
|
|
TITLE DAKAM PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (13) MCNVER,DECVER
|
|
>
|
|
LIST
|
|
LALL
|
|
|
|
NAME \MCNVER,\DECVER
|
|
|
|
;(BYTE, BLOCK TRANSFER, JFFO AND OTHER BASIC MISCELLANEOUS INSTRUCTIONS)
|
|
|
|
;COPYRIGHT 1975,1977
|
|
;DIGITAL EQUIPMENT CORPORATION
|
|
;MARLBORO, MASS. 01752
|
|
|
|
;JOHN R. KIRCHOFF
|
|
|
|
LOC 137
|
|
MCNVER,,DECVER
|
|
|
|
NOSYM
|
|
SUBTTL DIAGNOSTIC PARAMETERS
|
|
|
|
;OPERATOR DEFINITIONS
|
|
|
|
OPDEF ER1 [1B8]
|
|
OPDEF ER2 [2B8]
|
|
OPDEF ER3 [3B8]
|
|
OPDEF ER4 [4B8]
|
|
OPDEF ER5 [5B8]
|
|
OPDEF ER6 [6B8]
|
|
OPDEF ER7 [7B8]
|
|
OPDEF ER10 [10B8]
|
|
OPDEF ER11 [11B8]
|
|
OPDEF ER12 [12B8]
|
|
OPDEF ER13 [13B8]
|
|
|
|
LUUO1=ERRMES
|
|
LUUO2=ERRMES
|
|
LUUO3=ERRMES
|
|
LUUO4=ERRMES
|
|
LUUO5=ERRMES
|
|
LUUO6=ERRMES
|
|
LUUO7=ERRMES
|
|
LUUO10=ERRMES
|
|
LUUO11=ERRMES
|
|
LUUO12=ERRMES
|
|
LUUO13=ERRMES
|
|
;SUBROUTINE ASSEMBLY DEFINITIONS
|
|
|
|
DEBUG=40
|
|
EXCASB=1
|
|
USRASB=1
|
|
KA10=1
|
|
PGMEND=1
|
|
ERDIAG=1
|
|
|
|
;SPECIAL FEATURE DEFINITIONS
|
|
|
|
SADR1=BEGIN
|
|
SADR2=BEGIN
|
|
SADR3=BEGIN
|
|
SADR4=BEGIN
|
|
SADR5=JRST BEGIN
|
|
SADR6=JRST BEGIN
|
|
SADR7=JRST BEGIN
|
|
SADR8=JRST BEGIN
|
|
SADR9=JRST BEGIN
|
|
SADR10=JRST BEGIN
|
|
SADR11=JRST BEGIN
|
|
|
|
;SPECIAL FEATURE PARAMETERS
|
|
|
|
PAREA0=0
|
|
PAREA1=0
|
|
PAREA2=0
|
|
PAREA3=SIXBIT/DAKAM/
|
|
PAREA4=SIXBIT/TMP/
|
|
PAREA5=0
|
|
PAREA6=0
|
|
ITERAT==1000
|
|
|
|
;MACROS
|
|
|
|
DEFINE SAVEAC (A,B)<
|
|
MOVEI AC+2,. ;SAVE TEST PC
|
|
MOVEM AC+2,TESTPC
|
|
MOVEI AC+2,<AC+2>&17 ;INFORM ERROR ROUTINE WHICH
|
|
MOVEM AC+2,ERRLOP# ;AC IS USED FOR ITERATION>
|
|
;SPECIAL INSTRUCTIONS TO ASSEMBLER
|
|
|
|
IF1,<BYTBLK=14773> ;BYTBLK BEYOND AC RANGE FOR PASS 1
|
|
IF1,<BLTBLK=15000> ;BLTBLK BEYOND AC RANGE FOR PASS 1
|
|
|
|
;MACROS
|
|
|
|
DEFINE GMOV (X1,DATA),<
|
|
IFLE <X1-20>,<
|
|
MOVE X1,[DATA] ;PRELOAD X1 WITH DATA>
|
|
IFG <X1-20>,<
|
|
MOVE AC+1,[DATA]
|
|
MOVEM AC+1,X1 ;PRELOAD X1 WITH DATA>>
|
|
|
|
DEFINE GCAM (X1,DATA),<
|
|
SN=SN+1
|
|
IFG <X1-20>,<
|
|
MOVE AC-1,X1
|
|
CAME AC-1,[DATA] ;IS C(X1) = DATA
|
|
IFIDN <DEST>,<X1>,<
|
|
ER2 AC-1,SN ;DEST NOT LOADED CORRECTLY>
|
|
IFDIF <DEST>,<X1>,<
|
|
ER2 AC-1,SN ;C(X1) WAS CLOBBERED>>
|
|
IFLE <X1-20>,<
|
|
CAME X1,[DATA] ;IS C(X1) = DATA
|
|
IFIDN <DEST>,<X1>,<
|
|
ER2 X1,SN ;DEST NOT LOADED CORRECTLY>
|
|
IFDIF <DEST>,<X1>,<
|
|
ER2 X1,SN ;C(X1) WAS CLOBBERED>>>
|
|
DEFINE BLTM1 (A1,C1,S1,D1,SC)<
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 WORD BLOCK OF DATA
|
|
;WHERE SOURCE AND DESTINATION ARE DIFFERENT
|
|
;SOURCE DATA = SC
|
|
|
|
AC=C1
|
|
SAVEAC (1,1)
|
|
SN=A1
|
|
SRCE=S1 ;1ST LOC OF SOURCE = S1
|
|
DEST=D1 ;1ST LOC OF DESTINATION = D1
|
|
SIZ=1 ;BLOCK SIZE = 1 WORD
|
|
|
|
G'A1: MOVE AC,[SRCE,,DEST] ;LOAD BLT AC
|
|
GMOV (SRCE-1,<252525252525>)
|
|
GMOV (SRCE,<SC>)
|
|
GMOV (SRCE+1,<770077007700>)
|
|
GMOV (DEST-1,<070707070707>)
|
|
GMOV (DEST,<123456765432>)
|
|
GMOV (DEST+1,<552255225522>)
|
|
BLT AC,DEST+SIZ-1 ;*BLOCK TRANSFER
|
|
GCAM (SRCE-1,<252525252525>)
|
|
GCAM (SRCE,<SC>)
|
|
GCAM (SRCE+1,<770077007700>)
|
|
GCAM (DEST-1,<070707070707>)
|
|
GCAM (DEST,<SC>)
|
|
GCAM (DEST+1,<552255225522>)
|
|
JUMPL AC+2,G'A1 ;LOOP ON ERROR>
|
|
|
|
SUBTTL *PARAM* CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979
|
|
|
|
DEFINE S,<; *********************************************************************>
|
|
|
|
; **********************************************************************
|
|
;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
|
|
;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
|
|
;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
|
|
; **********************************************************************
|
|
|
|
ABORT== 400000 ;ABORT PROGRAM ON PASS COMPLETION
|
|
RSTART==200000 ;RESTART TEST, PRINT TOTALS
|
|
TOTALS==100000 ;PRINT TOTALS, CONTINUE
|
|
|
|
NOPNT== 040000 ;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
|
|
PNTLPT==020000 ;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
|
|
DING== 010000 ;RING BELL ON ERROR
|
|
|
|
LOOPER==004000 ;ENTER EXERCISE/CHECK LOOP ON ERROR
|
|
ERSTOP==002000 ;HALT ON TEST ERROR
|
|
PALERS==001000 ;PRINT ALL ERRORS
|
|
|
|
RELIAB==000400 ;RELIABILITY MODE
|
|
TXTINH==000200 ;INHIBIT ERROR TEXT
|
|
INHPAG==000100 ;INHIBIT PAGING
|
|
|
|
MODDVC==000040 ;MODIFY DEVICE CODE
|
|
INHCSH==000020 ;INHIBIT CACHE
|
|
OPRSEL==000010 ;OPERATOR SELECTION
|
|
|
|
CHAIN== 000004 ;CHAIN CONTROL SWITCH
|
|
|
|
KAHZ50==000002 ;KA10 50 HERTZ POWER
|
|
|
|
;SWITCH 17 RESERVED !!!
|
|
SUBTTL *PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979
|
|
|
|
; **********************************************************************
|
|
;*SPECIAL SUBPROGRAM LINKAGES
|
|
; **********************************************************************
|
|
|
|
FSELNK= 27772 ;FILE SELECT LINK
|
|
FRDLNK= 27773 ;FILE READ LINK
|
|
LDLNK= 27774 ;LOAD LINKAGE ADDRESS
|
|
DDTLNK= 27775 ;DDT LINKAGE ADDRESS
|
|
MODLNK= 27776 ;OPERATIONAL MODE CHECK LINKAGE ADDRESS
|
|
SUBLNK= 27777 ;SUBROUTINE LINKAGE ADDRESS
|
|
|
|
; **********************************************************************
|
|
;*SPECIAL SUBROUTINE FATAL HALTS
|
|
;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
|
|
; **********************************************************************
|
|
|
|
;ADDRESS TAG REASON
|
|
;---------------------
|
|
|
|
; 1010 NOEXEC ;PROGRAM NOT CODED FOR EXEC MODE OPERATION
|
|
; 1011 PLERR ;FATAL PUSH LIST POINTER ERROR
|
|
; 1012 PLERR1 ;INITIAL PUSH LIST POINTER ERROR
|
|
; 1013 MUOERR ;MUUO WITH LUUO HANDLER WIPED OUT
|
|
; 1014 DTEBER ;DTE20 INTERRUPT WITHOUT DOORBELL
|
|
; 1015 DTECER ;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
|
|
; 1016 CPIERR ;CPU INITIALIZATION ERROR
|
|
; 1017 EOPERR ;END OF PROGRAM ERROR
|
|
; 1020 LUOERR ;INTERRUPT WITH LUUO HANDLER WIPED OUT
|
|
|
|
; **********************************************************************
|
|
; **********************************************************************
|
|
;OPERATOR DEFINITIONS (NON-UUO'S)
|
|
; **********************************************************************
|
|
|
|
OPDEF GO [PUSHJ P,] ;SUBROUTINE CALL
|
|
OPDEF RTN [POPJ P,] ;SUBROUTINE RETURN
|
|
OPDEF PUT [PUSH P,] ;PUT DATA ON PUSH LIST
|
|
OPDEF GET [POP P,] ;GET DATA FROM PUSH LIST
|
|
OPDEF PJRST [JRST ] ;JRST TO ROUTINE THAT RTN'S
|
|
OPDEF HALT [JRST 4,] ;DEFINITION FOR DDT
|
|
OPDEF JRSTF [JRST 2,] ;DEFINITION FOR DDT
|
|
OPDEF JEN [JRST 12,] ;DEFINITION FOR DDT
|
|
|
|
; **********************************************************************
|
|
;SUBROUTINE INITIALIZATION CALL
|
|
; **********************************************************************
|
|
|
|
OPDEF PGMINT [JSP 0,SBINIT] ;SUBROUTINE INITIALIZATION
|
|
|
|
; **********************************************************************
|
|
;HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
|
|
; **********************************************************************
|
|
|
|
OPDEF FATAL [37B8!15B12!4] ;FATAL PROGRAMMING HALT
|
|
OPDEF ERRHLT [37B8!14B12!4] ;PROGRAM ERROR HALT
|
|
|
|
; **********************************************************************
|
|
;TERMINAL INPUT UUO'S
|
|
;ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
|
|
;CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
|
|
; **********************************************************************
|
|
|
|
OPDEF TTICHR [37B8!0B12!3] ;TTY, INPUT ANY CHARACTER
|
|
OPDEF TTIYES [37B8!1B12!3] ;TTY, NORMAL RETURN Y
|
|
OPDEF TTINO [37B8!2B12!3] ;TTY, NORMAL RETURN N
|
|
OPDEF TTIOCT [37B8!3B12!3] ;TTY, INPUT OCTAL WORD
|
|
OPDEF TTIDEC [37B8!4B12!3] ;TTY, INPUT DECIMAL WORD
|
|
OPDEF TTICNV [37B8!5B12!3] ;TTY, INPUT CONVERTABLE WORD
|
|
OPDEF TTLOOK [37B8!6B12!3] ;TTY, KEYBOARD CHECK
|
|
OPDEF TTALTM [37B8!7B12!3] ;TTY, ALT-MODE CHECK
|
|
OPDEF TTSIXB [37B8!10B12!3] ;TTY, INPUT SIXBIT WORD
|
|
OPDEF TTYINP [37B8!11B12!3] ;TTY, IMAGE MODE INPUT
|
|
OPDEF TTICLR [37B8!12B12!3] ;TTY, CLEAR INPUT
|
|
;TERMINAL OUTPUT UUO'S.
|
|
|
|
OPDEF PNTA [37B8!0B12!0] ;PRINT ASCII WORD
|
|
OPDEF PNTAF [37B8!0B12!1] ;PRINT ASCII WORD FORCED
|
|
OPDEF PNTAL [37B8!17B12!0] ;PRINT ASCIZ LINE
|
|
OPDEF PNTALF [37B8!17B12!1] ;PRINT ASCIZ LINE FORCED
|
|
OPDEF PSIXL [37B8!14B12!3] ;PRINT SIXBIT'Z LINE
|
|
OPDEF PSIXLF [37B8!15B12!3] ;PRINT SIXBIT'Z LINE FORCED
|
|
OPDEF PNTMSG [37B8!0B12!0] ;PRINT MESSAGE IMMEDIATE
|
|
OPDEF PNTMSF [37B8!1B12!0] ;PRINT MESSAGE IMMEDIATE FORCED
|
|
OPDEF PSIXM [37B8!2B12!0] ;PRINT SIXBIT'Z MSG IMMEDIATE
|
|
OPDEF PSIXMF [37B8!4B12!0] ;PRINT SIXBIT'Z MSG IMM FORCED
|
|
OPDEF PNTCI [37B8!0B12!0] ;PRINT CHARACTER IMMEDIATE
|
|
OPDEF PNTCIF [37B8!1B12!0] ;PRINT CHARACTER IMMEDIATE FORCED
|
|
OPDEF PNTCHR [37B8!12B12!0] ;PRINT CHARACTER
|
|
OPDEF PNTCHF [37B8!12B12!1] ;PRINT CHARACTER FORCED
|
|
OPDEF PNT1 [37B8!1B12!0] ;PRINT ONE OCTAL DIGIT
|
|
OPDEF PNT1F [37B8!1B12!1] ;PRINT 1 OCTAL DIGIT FORCED
|
|
OPDEF PNT2 [37B8!2B12!0] ;PRINT TWO OCTAL DIGITS
|
|
OPDEF PNT2F [37B8!2B12!1] ;PRINT 2 OCTAL DIGITS FORCED
|
|
OPDEF PNT3 [37B8!3B12!0] ;PRINT THREE OCTAL DIGITS
|
|
OPDEF PNT3F [37B8!3B12!1] ;PRINT THREE OCTAL DIGITS FORCED
|
|
OPDEF PNT4 [37B8!4B12!0] ;PRINT FOUR OCTAL DIGITS
|
|
OPDEF PNT4F [37B8!4B12!1] ;PRINT FOUR OCTAL DIGITS FORCED
|
|
OPDEF PNT5 [37B8!5B12!0] ;PRINT FIVE OCTAL DIGITS
|
|
OPDEF PNT5F [37B8!5B12!1] ;PRINT FIVE OCTAL DIGITS FORCED
|
|
OPDEF PNT6 [37B8!6B12!0] ;PRINT SIX OCTAL DIGITS
|
|
OPDEF PNT6F [37B8!6B12!1] ;PRINT SIX OCTAL DIGITS FORCED
|
|
OPDEF PNT7 [37B8!7B12!0] ;PRINT 7 OCTAL DIGITS
|
|
OPDEF PNT7F [37B8!7B12!1] ;PRINT 7 OCTAL DIGITS FORCED
|
|
OPDEF PNT11 [37B8!11B12!0] ;PRINT 11 OCTAL DIGITS
|
|
OPDEF PNT11F [37B8!11B12!1] ;PRINT 11 OCTAL DIGITS FORCED.
|
|
OPDEF PNTADR [37B8!10B12!0] ;PRINT PHYSICAL ADDRESS
|
|
OPDEF PNTADF [37B8!10B12!1] ;PRINT PHYSICAL ADDRESS FORCED
|
|
OPDEF PNTOCT [37B8!14B12!0] ;PRINT FULL WORD OCTAL
|
|
OPDEF PNTOTF [37B8!14B12!1] ;PRINT FULL WORD OCTAL FORCED
|
|
OPDEF PNTHW [37B8!13B12!0] ;PRINT OCTAL HALF WORDS, 6 SP 6
|
|
OPDEF PNTHWF [37B8!13B12!1] ;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
|
|
OPDEF PNTOCS [37B8!16B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S
|
|
OPDEF PNTOCF [37B8!17B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
|
|
OPDEF PNTDEC [37B8!15B12!0] ;PRINT DECIMAL, SUPRESS LEADING 0'S
|
|
OPDEF PNTDCF [37B8!15B12!1] ;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
|
|
OPDEF PNTDS [37B8!16B12!0] ;PRINT DECIMAL, SPACES FOR LD 0'S
|
|
OPDEF PNTDSF [37B8!16B12!1] ;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
|
|
OPDEF PNTNM [37B8!4B12!2] ;PRINT PROGRAM NAME
|
|
OPDEF PNTSIX [37B8!0B12!2] ;PRINT SIXBIT WORD
|
|
OPDEF PNTSXF [37B8!1B12!2] ;PRINT SIXBIT WORD FORCED
|
|
OPDEF DROPDV [37B8!5B12!2] ;CLOSE LOGICAL FILE, USER MODE
|
|
OPDEF PNTCW [37B8!2B12!2] ;PRINT DF10 CONTROL WORD
|
|
OPDEF PNTCWF [37B8!3B12!2] ;PRINT DF10 CONTROL WORD FORCED
|
|
OPDEF PCRL [37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
|
|
OPDEF PCRLF [37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
|
|
OPDEF PSP [37B8!0B12!40] ;PRINT SPACE
|
|
OPDEF PSPF [37B8!1B12!40] ;PRINT SPACE FORCED
|
|
OPDEF PCRL2 [37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
|
|
OPDEF PCRL2F [37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
|
|
OPDEF PBELL [37B8!1B12!7] ;PRINT TTY BELL
|
|
|
|
OPDEF PFORCE [37B8!1B12!26] ;PRINT FORCE, CONTROL O OVERRIDE
|
|
|
|
DEFINE PMSG (ARG),<
|
|
PSIXM [SIXBIT\ARG'_\]>
|
|
|
|
DEFINE PMSGF (ARG),<
|
|
PSIXMF [SIXBIT\ARG'_\]>
|
|
|
|
;SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
|
|
; CONSERVES CORE OVER ASCIZ
|
|
|
|
DEFINE SIXBTZ (ARG),< [SIXBIT\ARG'_\]>
|
|
|
|
;CONSOLE SWITCH INPUT UUO.
|
|
;READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
|
|
; USER MODE.
|
|
|
|
OPDEF SWITCH [37B8!10B12!2] ;INPUT CONSOLE SWITCHES
|
|
|
|
;CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
|
|
;EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
|
|
|
|
OPDEF CLOKOP [37B8!13B12!4] ;CLOCK OPERATION UUO - PDP-11 CLOCK
|
|
OPDEF MTROP [37B8!4B12!4] ;CLOCK OPERATION UUO - DK20 METER
|
|
|
|
;KL10 ONLY CACHE OPERATION UUO'S
|
|
|
|
OPDEF CINVAL [37B8!1B12!4] ;CACHE INVALIDATE
|
|
OPDEF CFLUSH [37B8!2B12!4] ;CACHE FLUSH
|
|
OPDEF CWRTBI [37B8!3B12!4] ;CACHE WRITE-BACK & INVALIDATE
|
|
;END OF PASS/PROGRAM UUOS
|
|
|
|
;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
|
|
;DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
|
|
|
|
OPDEF ENDUUO [37B8!12B12!4] ;UUO TO DISPLAY LIGHTS
|
|
OPDEF EOPUUO [37B8!16B12!4] ;END OF PROGRAM UUO
|
|
|
|
;MEMORY MANAGEMENT UUO'S
|
|
;UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
|
|
;ADDRESS CONVERSION, ETC...
|
|
|
|
OPDEF MAPMEM [37B8!0B12!4] ;MAP MEMORY
|
|
OPDEF MEMZRO [37B8!12B12!2] ;ZERO MEMORY
|
|
OPDEF MEMSEG [37B8!11B12!2] ;SETUP MEMORY SEGMENT
|
|
OPDEF MAPADR [37B8!13B12!2] ;VIRTUAL TO PHYSICAL ADR CONVERT
|
|
OPDEF MAPCNK [37B8!15B12!2] ;MAP MEMORY CHUNK
|
|
OPDEF MAPSET [37B8!14B12!2] ;SET KI10 EXEC PAGE MAP
|
|
OPDEF MAPPNT [37B8!17B12!2] ;PRINT MEMORY MAP
|
|
|
|
;DEVICE CODE MODIFICATION UUO
|
|
;ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
|
|
;IOT'S TO A DIFFERENT DEVICE CODE.
|
|
|
|
OPDEF MODPCU [37B8!7B12!2] ;MODIFY PERHIPERAL CODE, USER
|
|
OPDEF MODPCP [37B8!6B12!2] ;MODIFY PERHIPERAL CODE, PROGRAM
|
|
|
|
IFNDEF MODDVL,<MODDVL==BEGIN>
|
|
IFNDEF MODDVU,<MODDVU==BEGIN>
|
|
|
|
;"DIAMON" FILE SELECTION AND READ UUOS
|
|
|
|
OPDEF FSELECT [37B8!5B12!4] ;FILE SELECTION
|
|
OPDEF FREAD [37B8!6B12!4] ;FILE READ - ASCII DATA
|
|
OPDEF FRD36 [37B8!7B12!4] ;FILE READ - 36 BIT DATA
|
|
OPDEF FRD8 [37B8!10B12!4] ;FILE READ - 8 BIT DATA
|
|
|
|
;KI10 ONLY UUO FOR PRINTING MARGIN VALUES
|
|
|
|
OPDEF PNTMGN [37B8!16B12!2] ;PRINT MARGIN VALUE
|
|
|
|
XLIST
|
|
IFNDEF KLOLD,<LIST
|
|
SUBTTL ERROR HANDLING UUO DEFINITIONS, SEPT 18,1979
|
|
|
|
; **********************************************************************
|
|
;ERROR HANDLER PARAMETERS
|
|
; **********************************************************************
|
|
|
|
OPDEF ERUUO [36B8] ;ERROR CALL UUO
|
|
OPDEF ERLOOP [35B8] ;ERROR LOOP, CHECKS PC,REPT,REPT1,ERROR
|
|
OPDEF ERLP1 [35B8!1B12] ;ERROR LOOP IF PC'S MATCH
|
|
OPDEF ERLP2 [35B8!2B12] ;ERROR LOOP IF ANY ERROR
|
|
OPDEF REPTUO [34B8] ;REPEAT LOOP UUO
|
|
|
|
;THE ERROR HANDLER MACROS
|
|
|
|
;A MACRO TO REPORT AN ERROR AND LOOP
|
|
|
|
DEFINE ERROR (ADR,FORMAT,CORECT,ACTUAL,F,D,ERR)<
|
|
SALL
|
|
ERUUO FORMAT,[T,,[SIXBIT\F'_\]
|
|
CORECT,,ACTUAL
|
|
[SIXBIT\D'_\],,ERR]
|
|
XALL
|
|
ERLOOP ADR ;IF ERROR, LOOP TO ADR
|
|
>
|
|
|
|
;A MACRO TO REPORT AN ERROR AND NOT LOOP
|
|
|
|
DEFINE ERROR1 (FORMAT,CORECT,ACTUAL,F,D,ERR)<
|
|
SALL
|
|
ERUUO FORMAT,[T,,[SIXBIT\F'_\]
|
|
CORECT,,ACTUAL
|
|
[SIXBIT\D'_\],,ERR]
|
|
XALL>
|
|
|
|
>;END OF KLOLD CONDITIONAL
|
|
|
|
XLIST
|
|
IFDEF $PAPER,<LIST>
|
|
SUBTTL STANDARD PROGRAM ASSIGNMENTS
|
|
|
|
; **********************************************************************
|
|
;ACCUMULATORS
|
|
; **********************************************************************
|
|
|
|
P= 17 ;PUSHDOWN POINTER AC (IF PUSH LIST USED)
|
|
REPT== 15 ;ERROR HANDLER REPEAT AC
|
|
REPT1== 16 ; "
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD PC CONTROL FLAGS (SAVED ON PUSHJ, JSR, ETC..)
|
|
; **********************************************************************
|
|
|
|
AROV== 400000 ;ARITHMETIC OVERFLOW
|
|
CRY0== 200000 ;CARRY 0
|
|
CRY1== 100000 ;CARRY 1
|
|
FOV== 40000 ;FLOATING POINT OVERFLOW
|
|
BIS== 20000 ;BYTE INTERRUPT
|
|
USERF== 10000 ;USER MODE
|
|
EXIOT== 4000 ;USER PRIV I/O
|
|
FXU== 100 ;FLOATING POINT UNDERFLOW
|
|
DCK== 40 ;DIVIDE CHECK
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD ADDRESS ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
LUUO== 40 ;UUO STORAGE, UUO 1-37
|
|
LUUOI== 41 ;UUO SERVICE INSTRUCTION
|
|
|
|
; **********************************************************************
|
|
;JOB DATA AREA EXTERNALS (OLD DEFINITIONS)
|
|
; **********************************************************************
|
|
|
|
JOBUUO==40
|
|
JOB41== 41
|
|
JOBREL==44
|
|
JOBDDT==74
|
|
JOBSYM==116
|
|
JOBUSY==117
|
|
JOBSA== 120
|
|
JOBFF== 121
|
|
JOBREN==124
|
|
JOBAPR==125
|
|
JOBCNI==126
|
|
JOBTPC==127
|
|
JOBOPC==130
|
|
JOBVER==137
|
|
; **********************************************************************
|
|
;JOB DATA AREA EXTERNALS (NEW DEFINITIONS)
|
|
; **********************************************************************
|
|
|
|
.JBUUO==40
|
|
.JB41== 41
|
|
.JBREL==44
|
|
.JBDDT==74
|
|
.JBSYM==116
|
|
.JBUSY==117
|
|
.JBSA== 120
|
|
.JBFF== 121
|
|
.JBREN==124
|
|
.JBAPR==125
|
|
.JBCNI==126
|
|
.JBTPC==127
|
|
.JBOPC==130
|
|
.JBVER==137
|
|
|
|
; **********************************************************************
|
|
;USER MODE APR ASSIGNMENTS (FOR "APRENB" CALL)
|
|
; **********************************************************************
|
|
|
|
PDLOVU==200000 ;PUSHDOWN LIST OVERFLOW
|
|
MPVU== 20000 ;MEMORY PROTECTION VIOLATION
|
|
NXMU== 10000 ;NON-X-MEMORY
|
|
PARU== 4000 ;PARITY ERROR
|
|
CLKU== 1000 ;CLOCK
|
|
FOVU== 100 ;FLOATING OVERFLOW
|
|
AROVU== 10 ;ARITHMETIC OVERFLOW
|
|
|
|
; **********************************************************************
|
|
;USER MODE PRINT OUTPUT CHANNEL ASSIGNMENTS (FOR SUBROUTINE PACKAGE)
|
|
;THE USER SHOULD BE CAUTIONED NOT TO USE THESE CHANNELS WHEN
|
|
;USING THE SUBROUTINE PACKAGE AND CODING USER MODE PROGRAMS.
|
|
; **********************************************************************
|
|
|
|
$DEVCH==17 ;LOGICAL DEVICE CHANNEL
|
|
$DVCH1==16 ;LOGICAL DEV UPDATE INPUT CHANNEL
|
|
|
|
; **********************************************************************
|
|
;PDP-10 SPECIAL COMPATABILITY ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PAG== 010 ;PAGING I/O DEVICE CODE, KI/KL
|
|
|
|
CCA== 014 ;CACHE I/O DEVICE CODE, KL10
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD APR CONO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
IOCLR== 200000 ;CLEAR ALL I/O DEVICES
|
|
CLKDIS==4000 ;DISABLE CLOCK INTERRUPTS
|
|
CLKENB==2000 ;ENABLE CLOCK INTERRUPTS
|
|
CLKCLR==1000 ;CLEAR CLOCK FLAG
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD APR CONI ASSIGNMENTS, RIGHT HALF
|
|
; **********************************************************************
|
|
|
|
CLKENB==2000 ;CLOCK INTERRUPT ENABLED
|
|
CLK== 1000 ;CLOCK FLAG
|
|
ANXM== 10000 ;KA10, NON-X-MEMORY
|
|
INXM== 100 ;KI10
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD PI CONO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PWFCLR==400000 ;CLEAR POWER FAIL FLAG
|
|
PARCLR==200000 ;CLEAR PARITY ERROR FLAG
|
|
PARDIS==100000 ;DISABLE PARITY INTERRUPTS
|
|
PARENB==40000 ;ENABLE PARITY INTERRUPTS
|
|
PICLR== 10000 ;CLEAR PI SYSTEM
|
|
REQSET==4000 ;SET PROGRAM PI REQUEST
|
|
CHNON== 2000 ;TURN ON CHANNEL
|
|
CHNOFF==1000 ;TURN OFF CHANNEL
|
|
PIOFF== 400 ;TURN OFF PI SYSTEM
|
|
PION== 200 ;TURN ON PI SYSTEM
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD PI CONI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PION== 200 ;PI SYSTEM ON
|
|
|
|
; **********************************************************************
|
|
;PDP-10 STANDARD PI CHANNEL ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PICHN1==100 ;PI CHANNEL 1
|
|
PICHN2==40 ;PI CHANNEL 2
|
|
PICHN3==20 ;PI CHANNEL 3
|
|
PICHN4==10 ;PI CHANNEL 4
|
|
PICHN5==4 ;PI CHANNEL 5
|
|
PICHN6==2 ;PI CHANNEL 6
|
|
PICHN7==1 ;PI CHANNEL 7
|
|
PICHNA==177 ;ALL PI CHANNELS, 1 THRU 7
|
|
XLIST
|
|
IFDEF KA10,<
|
|
IFDEF $PAPER,<LIST>
|
|
; **********************************************************************
|
|
;KA10 APR CHANNEL ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
AAPRC1==1 ;APR INTERRUPT CHANNEL
|
|
|
|
; **********************************************************************
|
|
;KA10 APR CONO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
APDCLR==400000 ;CLEAR PUSHDOWN OVERFLOW
|
|
AABCLR==40000 ;CLEAR ADDRESS BREAK
|
|
AMPCLR==20000 ;CLEAR MEMORY PROTECTION
|
|
ANXCLR==10000 ;CLEAR NON-X-MEMORY
|
|
AFODIS==400 ;DISABLE FLOATING POINT OVERFLOW
|
|
AFOENB==200 ;ENABLE FLOATING POINT OVERFLOW
|
|
AFOCLR==100 ;CLEAR FLOATING POINT OVERFLOW
|
|
AOVDIS==40 ;DISABLE OVERFLOW
|
|
AOVENB==20 ;ENABLE OVERFLOW
|
|
AOVCLR==10 ;CLEAR OVERFLOW
|
|
|
|
; **********************************************************************
|
|
;KA10 APR CONI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
APDLOV==200000 ;PUSHDOWN OVERFLOW
|
|
AUSRIO==100000 ;USER I/O
|
|
AADRBK==40000 ;ADDRESS BREAK
|
|
AMPV== 20000 ;MEMORY PROTECTION VIOLATION
|
|
ANXM== 10000 ;NON-EXISTENT MEMORY
|
|
AFOENB==200 ;FLT PT INTERRUPT ENABLED
|
|
AFOV== 100 ;FLOATING POINT OVERFLOW
|
|
ATRPOS==40 ;TRAPS OFFSET
|
|
AOVENB==20 ;OVERFLOW INTERRUPT ENABLED
|
|
AOVFLO==10 ;ARITHMETIC OVERFLOW
|
|
|
|
; **********************************************************************
|
|
;KA10 PI CONI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
APWRFL==400000 ;POWER FAILURE
|
|
APARER==200000 ;PARITY ERROR
|
|
APAREN==100000 ;PARITY INTERRUPT ENABLED
|
|
|
|
> ;END CONDITIONAL ON KA10
|
|
XLIST
|
|
IFDEF KI10,<
|
|
IFDEF $PAPER,<LIST>
|
|
; **********************************************************************
|
|
;KI10 PC CONTROL FLAGS
|
|
; **********************************************************************
|
|
|
|
LIP== 2000 ;LAST INSTRUCTION PUBLIC
|
|
TN0== 400 ;TN=00, NO TRAP ;TN=01, ARITH TRAP
|
|
TN1== 200 ;TN=10, PDL OV ;TN=11, TRAP 3
|
|
|
|
; **********************************************************************
|
|
;KI10 SPECIAL EXEC MODE FLAGS
|
|
; **********************************************************************
|
|
|
|
UOLIP== 400000 ;UUO OLD L.I.P.
|
|
UOUSR== 4000 ;UUO OLD USER
|
|
|
|
; **********************************************************************
|
|
;KI10 APR CHANNEL ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
IAPRC1==1 ;APR CLOCK CHANNEL
|
|
IAPRE1==10 ;APR ERROR CHANNEL
|
|
|
|
; **********************************************************************
|
|
;KI10 APR CONO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
ITMSET==400000 ;SET TIME OUT TIMER
|
|
ITMDIS==100000 ;DISABLE TIME OUT
|
|
ITMENB==40000 ;ENABLE TIME OUT
|
|
IASRTC==20000 ;CLEAR AUTO RESTART
|
|
IASRTS==10000 ;SET AUTO RESTART
|
|
IIOPFC==200 ;CLEAR I/O PAGE FAIL
|
|
INXCLR==100 ;CLEAR NON-X-MEM
|
|
|
|
; **********************************************************************
|
|
;KI10 APR CONI ASSIGNMENTS, RIGHT HALF
|
|
; **********************************************************************
|
|
|
|
ITMOUT==400000 ;TIMER TIMED OUT
|
|
IPARER==200000 ;PARITY ERROR
|
|
IPAREN==100000 ;PARITY ENABLED
|
|
ITMOEN==40000 ;TIME OUT ENABLED
|
|
IPWRFL==20000 ;POWER FAIL
|
|
IASRTE==10000 ;AUTO RESTART ENABLED
|
|
IIOPFL==200 ;I/O PAGE FAIL
|
|
INXM== 100 ;NON-X-MEMORY
|
|
; **********************************************************************
|
|
;KI10 APR CONI ASSIGMENTS, LEFT HALF
|
|
; **********************************************************************
|
|
|
|
IMLAPD==200000 ;MEMORY OVERLAP DISABLED
|
|
IFMMAN==100000 ;FAST MEMORY MANUAL
|
|
IMIPGD==40000 ;MI PROGRAM DISABLE
|
|
ICNSLR==20000 ;CONSOLE READ ONLY
|
|
ICNSLL==10000 ;CONSOLE LOCKED
|
|
IP50HZ==4000 ;50 HZ POWER
|
|
IMGINM==2000 ;MANUAL MARGINS
|
|
IMAINT==1000 ;MAINTENANCE MODE
|
|
IPWRLO==400 ;POWER LOW
|
|
IMGNLO==200 ;MARGIN COMPARATOR LOW
|
|
SENSE1==40 ;SENSE SWITCHES 1
|
|
SENSE2==20 ; 2
|
|
SENSE3==10 ; 3
|
|
SENSE4==4 ; 4
|
|
SENSE5==2 ; 5
|
|
SENSE6==1 ; 6
|
|
|
|
; **********************************************************************
|
|
;KI10 APR DATAO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
IEVNPR==20000 ;WRITE EVEN PARITY
|
|
ISPDOF==10000 ;SPEED MARGINS OFF
|
|
ISPDON==4000 ;SPEED MARGINS ON
|
|
IMGNOF==2000 ;MARGINS OFF - LH
|
|
IMGNON==1000 ;MARGINS ON - LH
|
|
|
|
; **********************************************************************
|
|
;KI10 PI CONO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
IRQCLR==20000 ;CLEAR PROGRAM PI REQUEST
|
|
; **********************************************************************
|
|
;KI10 PI CONI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
IINSTF==400000 ;ADDRESS CONDITIONS, INST FETCH
|
|
IDATAF==200000 ; DATA FETCH
|
|
IWRITE==100000 ; WRITE
|
|
IADSTP==40000 ;ADDRESS STOP
|
|
IADBRK==20000 ;ADDRESS BREAK
|
|
IADEXC==10000 ;ADDRESS SWITCHES EXEC
|
|
IADUSR==4000 ; " " USER
|
|
IPRSTP==2000 ;PARITY STOP
|
|
INXSTP==1000 ;NON-X-MEM STOP
|
|
|
|
; **********************************************************************
|
|
;KI10 PAG CONI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
EXCMEM==400 ;EXEC MEMORY SPACE
|
|
AMCLRB==40 ;ASSOCIATIVE MEMORY CLEAR BIT
|
|
|
|
; **********************************************************************
|
|
;KI10 PAG DATAO ASSIGNMENTS, LEFT HALF
|
|
; **********************************************************************
|
|
|
|
LDUSRB==400000 ;LOAD USER BASE REGISTER
|
|
SMLUSR==40000 ;SMALL USER, 32K OR UNDER
|
|
USRCMP==20000 ;USER ADR COMPARE ENABLE
|
|
|
|
; **********************************************************************
|
|
;KI10 PAG DATAO ASSIGNMENTS, RIGHT HALF
|
|
; **********************************************************************
|
|
|
|
LDEXCB==400000 ;LOAD EXEC BASE REGISTER
|
|
TRPENB==20000 ;ENABLE TRAPS
|
|
|
|
; **********************************************************************
|
|
;KI10 PAG DATAI ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
SMLUSR==40000 ;SMALL USER
|
|
USRCMP==20000 ;USER ADR COMPARE ENABLED
|
|
TRPENB==20000 ;RH, TRAPS ENABLED
|
|
|
|
; **********************************************************************
|
|
;KI10 PTR DATAO ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
;ADDRESS CONDITIONS, ADDRESS BREAK ;AS ABOVE, PI CONI
|
|
;ADDRESS SWITCHES, 14-35
|
|
; **********************************************************************
|
|
;KI10 EXEC PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PGFTRP==420 ;PAGE FAULT TRAP
|
|
AROVTP==421 ;ARITHMETIC TRAP
|
|
PDOVTP==422 ;PUSHDOWN OVERFLOW TRAP
|
|
TRP3TP==423 ;TRAP 3 TRAP
|
|
|
|
; **********************************************************************
|
|
;KI10 USER PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
PGFTRP==420 ;PAGE FAULT TRAP
|
|
AROVTP==421 ;ARITHMETIC TRAP
|
|
PDOVTP==422 ;PUSHDOWN OVERFLOW TRAP
|
|
TRP3TP==423 ;TRAP 3 TRAP
|
|
|
|
MUUO== 424 ;MUUO STORAGE
|
|
MUUOPC==425 ;C(PC) OF MUUO STORAGE
|
|
|
|
EXCPFW==426 ;EXEC PAGE FAIL WORD
|
|
USRPFW==427 ;USER PAGE FAIL WORD
|
|
|
|
KNTRP== 430 ;KERNAL NO TRAP - NEW PC'S-
|
|
KTRP== 431 ;" TRAP
|
|
SNTRP== 432 ;SUPERVISOR NO TRAP
|
|
STRP== 433 ;" TRAP
|
|
CNTRP== 434 ;CONCEAL NO TRAP
|
|
CTRP== 435 ;" TRAP
|
|
PNTRP== 436 ;PUBLIC NO TRAP
|
|
PTRP== 437 ;" TRAP
|
|
|
|
> ;END CONDITIONAL ON KI10
|
|
XLIST
|
|
IFDEF KL10,<
|
|
IFNDEF KL10P0,<
|
|
IFDEF $PAPER,<LIST>
|
|
;KL10 CONO APR 000 ASSIGMENTS
|
|
; **********************************************************************
|
|
|
|
LIOCLR==200000 ;CLEAR ALL I/O DEVICES
|
|
LFLGEN==100000 ;ENABLE SELECTED FLAG
|
|
LFLGDS==40000 ;DISABLE SELECTED FLAG
|
|
LFLGCL==20000 ;CLEAR SELECTED FLAG
|
|
LFLGST==10000 ;SET SELECTED FLAG
|
|
LSBUSE==4000 ;SBUS ERROR FLAG
|
|
LNXMER==2000 ;NON-EXISTENT MEMORY FLAG
|
|
LPARER==1000 ;PARITY ERROR FLAG
|
|
LIOPFE==400 ;I/O PAGE FAIL FLAG
|
|
LPWRFL==100 ;POWER FAIL FLAG
|
|
LCASWD==20 ;CACHE SWEEP DONE FLAG
|
|
LAPRP7==7 ;APR PI CHANNEL 7
|
|
LAPRP6==6 ;APR PI CHANNEL 6
|
|
LAPRP5==5 ;APR PI CHANNEL 5
|
|
LAPRP4==4 ;APR PI CHANNEL 4
|
|
LAPRP3==3 ;APR PI CHANNEL 3
|
|
LAPRP2==2 ;APR PI CHANNEL 2
|
|
LAPRP1==1 ;APR PI CHANNEL 1
|
|
LESBER==104000 ;ENABLE SBUS ERRORS
|
|
LDSBER==044000 ;DISABLE SBUS ERRORS
|
|
LCSBER==024000 ;CLR SBUS ERRORS
|
|
LSSBER==014000 ;SET SBUS ERROR
|
|
LENXER==102000 ;ENABLE NON-EXISTENT MEMORY
|
|
LDNXER==042000 ;DISABLE NON-EXISTENT MEORY
|
|
LCNXER==022000 ;CLR NON-EXISTENT MEMORY
|
|
LSNXER==012000 ;SET NON-EXISTENT MEMORY
|
|
LEPAER==101000 ;ENABLE PARITY ERRORS
|
|
LDPAER==041000 ;DISABLE PARITY ERRORS
|
|
LCPAER==021000 ;CLR PARITY ERROR
|
|
LSPAER==011000 ;SET PARITY ERROR
|
|
LEIOPF==100400 ;ENABLE I/O PAGE FAILS
|
|
LDIOPF==040400 ;DISABLE I/O PAGE FAILS
|
|
LCIOPF==020400 ;CLR I/O PAGE FAIL
|
|
LSIOPF==010400 ;SET I/O PAGE FAIL
|
|
LEPWRF==100100 ;ENABLE POWER FAIL
|
|
LDPWRF==040100 ;DISABLE POWER FAIL
|
|
LCPWRF==020100 ;CLR POWER FAIL
|
|
LSPWRF==010100 ;SET POWER FAIL
|
|
LECASD==100020 ;ENABLE CACHE SWEEP DONE
|
|
LDCASD==040020 ;DISABLE CACHE SWEEP DONE
|
|
LCCASD==020020 ;CLR CACHE SWEEP DONE
|
|
LSCASD==010020 ;SET CACHE SWEEP DONE
|
|
LAPRAL==127520 ;CLR ALL ERROR FLAGS & ENABLE
|
|
; **********************************************************************
|
|
;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LSBSEN==4000 ;SBUS ERRORS ENABLED
|
|
LNXMEN==2000 ;NON-EXISTENT MEMORY ERRORS ENABLED
|
|
LPAREN==1000 ;PARITY ERRORS ENABLED
|
|
LIOPFE=400 ;I/O PAFE FAILURES ENABLED
|
|
LPWRFE==100 ;POWER FAILURES ENABLED
|
|
LCASDE==20 ;CACHE SWEEP DONE ENABLED
|
|
|
|
; **********************************************************************
|
|
;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
LCASWB==200000 ;CACHE SWEEP BUSY
|
|
LSBUSE==4000 ;SBUS ERROR FLAG
|
|
LNXMER==2000 ;NON-EXISTENT MEMORY FLAG
|
|
LPARER==1000 ;PARITY ERROR FLAG
|
|
LIOPFE==400 ;I/O PAGE FAIL FLAG
|
|
LPWRFL==100 ;POWER FAIL FLAG
|
|
LCASWD==20 ;CACHE SWEEP DONE FLAG
|
|
LAPRP7==7 ;APR PI CHANNEL 7
|
|
LAPRP6==6 ;APR PI CHANNEL 6
|
|
LAPRP5==5 ;APR PI CHANNEL 5
|
|
LAPRP4==4 ;APR PI CHANNEL 4
|
|
LAPRP3==3 ;APR PI CHANNEL 3
|
|
LAPRP2==2 ;APR PI CHANNEL 2
|
|
LAPRP1==1 ;APR PI CHANNEL 1
|
|
LINT==10 ;APR INTERRUPT
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH
|
|
LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH
|
|
LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE
|
|
LUSCMP==40 ;USER ADDRESS COMPARE
|
|
LEXCMP==0 ;EXEC ADDRESS COMPARE
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
;DATAO APR,ADDRESS SWITCHES=13-35
|
|
>
|
|
XLIST
|
|
IFDEF KL10P0,<
|
|
IFDEF $PAPER,<LIST>
|
|
;KL10 CONO APR 000 ASSIGMENTS
|
|
; **********************************************************************
|
|
LIOCLR==200000 ;CLEAR ALL I/O DEVICES
|
|
LFLGEN==100000 ;ENABLE SELECTED FLAG
|
|
LFLGDS==40000 ;DISABLE SELECTED FLAG
|
|
LFLGCL==20000 ;CLEAR SELECTED FLAG
|
|
LFLGST==10000 ;SET SELECTED FLAG
|
|
LSBUSE==4000 ;SBUS ERROR FLAG
|
|
LNXMER==2000 ;NON-EXISTENT MEMORY FLAG
|
|
LIOPFE==1000 ;I/O PAGE FAIL FLAG
|
|
LPARER==400 ;MB PARITY ERROR FLAG
|
|
LCADRP==200 ;CACHE ADDRESS PARITY ERROR FLAG
|
|
LSADRP==100 ;S-BUS ADDRESS PARITY ERROR FLAG
|
|
LPWRFL==40 ;POWER FAIL FLAG
|
|
LCASWD==20 ;CACHE SWEEP DONE FLAG
|
|
LAPRP7==7 ;APR PI CHANNEL 7
|
|
LAPRP6==6 ;APR PI CHANNEL 6
|
|
LAPRP5==5 ;APR PI CHANNEL 5
|
|
LAPRP4==4 ;APR PI CHANNEL 4
|
|
LAPRP3==3 ;APR PI CHANNEL 3
|
|
LAPRP2==2 ;APR PI CHANNEL 2
|
|
LAPRP1==1 ;APR PI CHANNEL 1
|
|
LESBER==104000 ;ENABLE SBUS ERRORS
|
|
LDSBER==044000 ;DISABLE SBUS ERRORS
|
|
LCSBER==024000 ;CLR SBUS ERRORS
|
|
LSSBER==014000 ;SET SBUS ERROR
|
|
LENXER==102000 ;ENABLE NON-EXISTENT MEMORY
|
|
LDNXER==042000 ;DISABLE NON-EXISTENT MEORY
|
|
LCNXER==022000 ;CLR NON-EXISTENT MEMORY
|
|
LSNXER==012000 ;SET NON-EXISTENT MEMORY
|
|
LEIOPF==101000 ;ENABLE I/O PAGE FAILS
|
|
LDIOPF==041000 ;DISABLE I/O PAGE FAILS
|
|
LCIOPF==021000 ;CLR I/O PAGE FAIL
|
|
LSIOPF==011000 ;SET I/O PAGE FAIL
|
|
LEPAER==100400 ;ENABLE PARITY ERRORS
|
|
LDPAER==040400 ;DISABLE PARITY ERRORS
|
|
LCPAER==020400 ;CLR PARITY ERROR
|
|
LSPAER==010400 ;SET PARITY ERROR
|
|
LECAER==100200 ;ENABLE CACHE ADR PARITY ERRORS
|
|
LDCAER==040200 ; " DISABLE
|
|
LCCAER==020200 ; " CLR
|
|
LSCAER==010200 ; " SET
|
|
LESAER==100100 ;ENABLE S-BUS ADR PARITY ERRORS
|
|
LDSAER==040100 ; " DISABLE
|
|
LCSAER==020100 ; " CLR
|
|
LSSAER==010100 ; " SET
|
|
LEPWRF==100040 ;ENABLE POWER FAIL
|
|
LDPWRF==040400 ;DISABLE POWER FAIL
|
|
LCPWRF==020040 ;CLR POWER FAIL
|
|
LSPWRF==010040 ;SET POWER FAIL
|
|
LECASD==100020 ;ENABLE CACHE SWEEP DONE
|
|
LDCASD==040020 ;DISABLE CACHE SWEEP DONE
|
|
LCCASD==020020 ;CLR CACHE SWEEP DONE
|
|
LSCASD==010020 ;SET CACHE SWEEP DONE
|
|
LAPRAL==127760 ;CLR ALL ERROR FLAGS & ENABLE
|
|
; **********************************************************************
|
|
;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LSBSEN==4000 ;SBUS ERRORS ENABLED
|
|
LNXMEN==2000 ;NON-EXISTENT MEMORY ERRORS ENABLED
|
|
LIOPFE==1000 ;I/O PAGE FAILURES ENABLED
|
|
LPAREN==400 ;PARITY ERRORS ENABLED
|
|
LCADEN==200 ;CACHE ADR PARITY ERRORS ENABLED
|
|
LSADEN==100 ;S-BUS ADR PARITY ERRORS ENABLED
|
|
LPWRFE==40 ;POWER FAILURES ENABLED
|
|
LCASDE==20 ;CACHE SWEEP DONE ENABLED
|
|
|
|
; **********************************************************************
|
|
;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
LCASWB==200000 ;CACHE SWEEP BUSY
|
|
LSBUSE==4000 ;SBUS ERROR FLAG
|
|
LNXMER==2000 ;NON-EXISTENT MEMORY FLAG
|
|
LIOPFE==1000 ;I/O PAGE FAIL FLAG
|
|
LPARER==400 ;PARITY ERROR FLAG
|
|
LCADRP==200 ;CACHE ADR PARITY ERROR FLAG
|
|
LSADRP==100 ;S-BUS ADR PARITY ERROR FLAG
|
|
LPWRFL==40 ;POWER FAIL FLAG
|
|
LCASWD==20 ;CACHE SWEEP DONE FLAG
|
|
LAPRP7==7 ;APR PI CHANNEL 7
|
|
LAPRP6==6 ;APR PI CHANNEL 6
|
|
LAPRP5==5 ;APR PI CHANNEL 5
|
|
LAPRP4==4 ;APR PI CHANNEL 4
|
|
LAPRP3==3 ;APR PI CHANNEL 3
|
|
LAPRP2==2 ;APR PI CHANNEL 2
|
|
LAPRP1==1 ;APR PI CHANNEL 1
|
|
LINT==10 ;APR INTERRUPT
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH
|
|
LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH
|
|
LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE
|
|
LUSCMP==40 ;USER ADDRESS COMPARE
|
|
LEXCMP==0 ;EXEC ADDRESS COMPARE
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
;DATAO APR,ADDRESS SWITCHES=13-35
|
|
>
|
|
XLIST
|
|
IFDEF $PAPER,<LIST>
|
|
; **********************************************************************
|
|
;KL10 DATAI APR 000 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LINSTF==400 ;ADDRESS BREAK REQUEST FOR INST. FETCH
|
|
LDATAF==200 ;ADDRESS BREAK REQUEST FOR DATA FETCH
|
|
LWRITE==100 ;ADDRESS BREAK REQUEST FOR DATA WRITE
|
|
LUSCMP==40 ;USER ADDRESS COMPARE
|
|
LEXCMP==0 ;EXEC ADDRESS COMPARE
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAI APR 000 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
;DATAI APR,ADDRESS SWITCHES=13-35
|
|
|
|
; **********************************************************************
|
|
;KL10 BLKO APR 000 ASSIGMENTS (IMMEDIATE MODE)
|
|
; **********************************************************************
|
|
|
|
;REFILL ALGORITHM BITS 18-20
|
|
;REFILL ALGORITHM ADDRESS 27-33
|
|
|
|
; **********************************************************************
|
|
;KL10 BLKI APR 000 ASSIGMENTS
|
|
; **********************************************************************
|
|
|
|
;MICRO-CODE OPTIONS = 0-8
|
|
;MICRO-CODE VERSION NUMBER = 9-17
|
|
;HARDWARE OPTIONS =18-23
|
|
;PROCESSOR SERIAL NUMBER = 24-35
|
|
; **********************************************************************
|
|
;KL10 CONO PI 004 ASSIGMENTS
|
|
; **********************************************************************
|
|
|
|
LEVNPA==400000 ;WRITE EVEN PARITY ADDRESS
|
|
LEVNPD==200000 ;WRITE EVEN PARITY DATA
|
|
LEVNCD==100000 ;WRITE EVEN CACHE DIRECTORY PARITY *P0
|
|
LRQCLR==20000 ;DROP INTERRUPT ON SELECTED CHANNEL
|
|
LPICLR==10000 ;CLEAR PI SYSTEM
|
|
LREQSE==4000 ;REQUEST INTERRUPT ON SELECTED CHANNEL
|
|
LCHNON=2000 ;TURN ON SELECTED CHANNEL
|
|
LCHNOF==1000 ;TURN OFF SELECTED CHANNEL
|
|
LPIOFF==400 ;TURN PI SYSTEM OFF
|
|
LPION==200 ;TURN PI SYSTEM ON
|
|
LPICH1==100 ;PI CHANNEL 1
|
|
LPICH2==40 ;PI CHANNEL 2
|
|
LPICH3==20 ;PI CHANNEL 3
|
|
LPICH4==10 ;PI CHANNEL 4
|
|
LPICH5==4 ;PI CHANNEL 5
|
|
LPICH6==2 ;PI CHANNEL 6
|
|
LPICH7==1 ;PI CHANNEL 7
|
|
LPICHA==177 ;ALL PI CHANNELS
|
|
|
|
; **********************************************************************
|
|
;KL10 CONI PI 004 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LPRCH1==100 ;PROGRAM REQUEST ON CHANNEL 1
|
|
LPRCH2==40 ;PROGRAM REQUEST ON CHANNEL 2
|
|
LPRCH3==20 ;PROGRAM REQUEST ON CHANNEL 3
|
|
LPRCH4==10 ;PROGRAM REQUEST ON CHANNEL 4
|
|
LPRCH5==4 ;PROGRAM REQUEST ON CHANNEL 5
|
|
LPRCH6==2 ;PROGRAM REQUEST ON CHANNEL 6
|
|
LPRCH7==1 ;PROGRAM REQUEST ON CHANNEL 7
|
|
; **********************************************************************
|
|
;KL10 CONI PI 004 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
LEVNPA==400000 ;WRITE EVEN PARITY ADDRESS
|
|
LEVNPD==200000 ;WRITE EVEN PARITY DATA
|
|
LEVNCD==100000 ;WRITE EVEN CACHE DIRECTORY PARITY *P0
|
|
LPIIP1==40000 ;PI IN PROGRESS ON CHANNEL 1
|
|
LPIIP2==20000 ;PI IN PROGRESS ON CHANNEL 2
|
|
LPIIP3==10000 ;PI IN PROGRESS ON CHANNEL 3
|
|
LPIIP4==4000 ;PI IN PROGRESS ON CHANNEL 4
|
|
LPIIP5==2000 ;PI IN PROGRESS ON CHANNEL 5
|
|
LPIIP6==1000 ;PI IN PROGRESS ON CHANNEL 6
|
|
LPIIP7==400 ;PI IN PROGRESS ON CHANNEL 7
|
|
LPION==200 ;PI SYSTEM ON
|
|
LPICH1==100 ;PI CHANNEL 1 ON
|
|
LPICH2==40 ;PI CHANNEL 2 ON
|
|
LPICH3==20 ;PI CHANNEL 3 ON
|
|
LPICH4==10 ;PI CHANNEL 4 ON
|
|
LPICH5==4 ;PI CHANNEL 5 ON
|
|
LPICH6==2 ;PI CHANNEL 6 ON
|
|
LPICH7==1 ;PI CHANNEL 7 ON
|
|
; **********************************************************************
|
|
;KL10 DATAO PAG 010 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LLACBL==400000 ;LOAD AC BLOCKS
|
|
LLPRCN==200000 ;LOAD PREVIOUS CONTEXT SECTION
|
|
LLDUSB==100000 ;LOAD USER BASE REGISTER
|
|
LCWSX==40 ;
|
|
|
|
;CURRENT AC BLOCKS BITS 6 - 8
|
|
;PREVIOUS AC BLOCKS BITS 9 - 11
|
|
;PREVIOUS CONTEXT SECTION BITS 13 - 17
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAO PAG 010 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
;USER BASE REGISTER BITS 23 - 35
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAI PAG 010 ASSIGMENTS (LEFT HALF)
|
|
; **********************************************************************
|
|
|
|
LLACBL==400000 ;LOAD AC BLOCKS
|
|
LLPRCN==200000 ;LOAD PREVIOUS CONTEXT SECTION
|
|
LLDUSB==100000 ;LOAD USER BASE REGISTER
|
|
LCWSX==40 ;
|
|
|
|
;CURRENT AC BLOCKS BITS 6 - 8
|
|
;PREVIOUS AC BLOCKS BITS 9 - 11
|
|
;PREVIOUS CONTEXT SECTION BITS 13 - 17
|
|
|
|
; **********************************************************************
|
|
;KL10 DATAI PAG 010 ASSIGMENTS (RIGHT HALF)
|
|
; **********************************************************************
|
|
|
|
;USER BASE REGISTER BITS 23 - 35
|
|
; **********************************************************************
|
|
;KL10 CONO PAG 010 ASSIGMENTS
|
|
; **********************************************************************
|
|
|
|
LCASLO==400000 ;CACHE STRATEGY LOOK
|
|
LCASLD==200000 ;CACHE STRATEGY LOAD
|
|
LSMODE==40000 ;SECTION MODE
|
|
LTRPEN==20000 ;TRAP AND PAGE ENABLE
|
|
|
|
;EXEC BASE REGISTER = 23-35
|
|
|
|
; **********************************************************************
|
|
;KL10 CONI PAG 010 ASSIGMENTS
|
|
; **********************************************************************
|
|
|
|
|
|
LCSLOO==400000 ;CACHE STRATEGY LOOK
|
|
LCSLOA==200000 ;CACHE STRATEGY LOAD
|
|
LSECMO==40000 ;SECTION MODE
|
|
LTRPAE==20000 ;TRAP AND PAGE ENABLE
|
|
|
|
;EXEC BASE REGISTER = 23-35
|
|
|
|
; **********************************************************************
|
|
;KL10 BLKO PAG 010 ASSIGMENTS (IMMEDIATE MODE)
|
|
; **********************************************************************
|
|
|
|
XLIST
|
|
IFNDEF KL10P0,<
|
|
IFDEF $PAPER,<LIST>
|
|
; **********************************************************************
|
|
;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
LAROVT==421 ;ARITHMETIC TRAP
|
|
LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP
|
|
LTRP3T==423 ;TRAP 3 TRAP
|
|
|
|
; **********************************************************************
|
|
;KL10 USER PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
LEUPFW==420 ;EXEC & USER PAGE FAIL WORD
|
|
LAROVT==421 ;ARITHMETIC TRAP
|
|
LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP
|
|
LTRP3T==423 ;TRAP 3 TRAP
|
|
|
|
LMUUO== 424 ;MUUO STORAGE
|
|
LMUUOP==425 ;C(PC) OF MUUO STORAGE
|
|
|
|
LPFWPC==426 ;C(PC) OF PAGE FAIL WORD
|
|
LPGFTR==427 ;PAGE FAIL NEW PC TRAP
|
|
|
|
LKNTRP==430 ;KERNAL NO TRAP - NEW PC'S-
|
|
LKTRP== 431 ;" TRAP
|
|
LSNTRP==432 ;SUPERVISOR NO TRAP
|
|
LSTRP== 433 ;" TRAP
|
|
LCNTRP==434 ;CONCEAL NO TRAP
|
|
LCTRP== 435 ;" TRAP
|
|
LPNTRP==436 ;PUBLIC NO TRAP
|
|
LPTRP== 437 ;" TRAP
|
|
|
|
>
|
|
XLIST
|
|
IFDEF KL10P0,<
|
|
IFDEF $PAPER,<LIST>
|
|
; **********************************************************************
|
|
;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
LAROVT==421 ;ARITHMETIC TRAP
|
|
LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP
|
|
LTRP3T==423 ;TRAP 3 TRAP
|
|
|
|
LTBASH==510 ;TIME-BASE, HI
|
|
LTBASL==511 ;TIME-BASE, LO
|
|
LPRFMH==512 ;PERFORMANCE ANAYLYSIS, HI
|
|
LPRFML==513 ;PERFORMANCE ANAYLYSIS, LO
|
|
|
|
; **********************************************************************
|
|
;KL10 USER PAGE MAP PAGE ASSIGNMENTS
|
|
; **********************************************************************
|
|
|
|
LAROVT==421 ;ARITHMETIC TRAP
|
|
LPDOVT==422 ;PUSHDOWN OVERFLOW TRAP
|
|
LTRP3T==423 ;TRAP 3 TRAP
|
|
|
|
LMUUO== 424 ;MUUO STORAGE
|
|
LMUUOP==425 ;C(PC) OF MUUO STORAGE
|
|
LCNTXT==426 ;PROCESS CONTEXT WORD
|
|
|
|
LKNTRP==430 ;KERNAL NO TRAP - NEW PC'S-
|
|
LKTRP== 431 ;" TRAP
|
|
LSNTRP==432 ;SUPERVISOR NO TRAP
|
|
LSTRP== 433 ;" TRAP
|
|
LCNTRP==434 ;CONCEAL NO TRAP
|
|
LCTRP== 435 ;" TRAP
|
|
LPNTRP==436 ;PUBLIC NO TRAP
|
|
LPTRP== 437 ;" TRAP
|
|
|
|
LEUPFW==500 ;EXEC & USER PAGE FAIL WORD
|
|
LPFWPC==501 ;C(PC) OF PAGE FAIL WORD
|
|
LPGFTR==502 ;PAGE FAIL NEW PC
|
|
|
|
LEBXMH==504 ;E-BOX CLOCK TICK METER, HI
|
|
LEBXML==505 ;E-BOX CLOCK TICK METER, LO
|
|
LMBXMH==506 ;M-BOX CYCLE METER, HI
|
|
LMBXML==507 ;M-BOX CYCLE METER, LO
|
|
|
|
>> ;END CONDITIONAL ON KL10
|
|
LIST
|
|
|
|
SUBTTL *FIXED* FIXED CONTROL AND DISPATCH STORAGE, SEPT 18,1979
|
|
|
|
LOC 30000
|
|
|
|
; **********************************************************************
|
|
;PROGRAM STARTING ADDRESSES
|
|
;THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
|
|
;NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
|
|
;OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
|
|
;MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
|
|
; **********************************************************************
|
|
|
|
BEGIN: JRST @MODLNK ;STAND-ALONE START
|
|
$START: JRST START ;MODE CHECK STARTING ADDRESS
|
|
|
|
DIAGMN: JRST @LDLNK ;DIAGNOSTIC MONITOR START
|
|
|
|
SYSEXR: JRST @LDLNK ;SYSTEM EXERCISER START
|
|
|
|
SFSTRT: JRST SADR1 ;SPECIAL FEATURE START
|
|
|
|
PFSTRT: JRST SADR2 ;POWER FAIL RESTART
|
|
|
|
REENTR: JRST SADR3 ;REENTER START(USUALLY USER MODE ONLY)
|
|
|
|
SRTDDT: ;COMMONLY MISTAKEN NAME FOR "DDTSRT"
|
|
DDTSRT: JRST @DDTLNK ;DDT START
|
|
|
|
BEGIN1: JRST STARTA ;LOOP START(END OF PASS COMES HERE)
|
|
SBINIT: JRST @SUBLNK ;PMGINT LINKAGE
|
|
RETURN: 0 ;RETURN ADDRESS STORAGE
|
|
|
|
START1: SADR7 ;OPTIONAL STARTING ADR/INSTRUCTIONS
|
|
START2: SADR8 ; "
|
|
START3: SADR9 ; "
|
|
START4: SADR10 ; "
|
|
START5: SADR11 ; "
|
|
; **********************************************************************
|
|
;PROGRAM FIXED PARAMETER AREA
|
|
; **********************************************************************
|
|
|
|
PNTNAM: PAREA3 ;SIXBIT PROGRAM NAME
|
|
PNTEXT: PAREA4 ;SIXBIT PROGRAM EXTENSION
|
|
RANDBS: PAREA1 ;RANDOM BASE NUMBER
|
|
SWTEXR: PAREA2 ;SYSTEM EXERCISER SWITCHES
|
|
ITRCNT: ITERAT ;PROGRAM ITERATIONS
|
|
$PNAME: PGMNAM ;POINTER TO PROGRAMS NAME
|
|
$PVER: MCNVER,,DECVER ;MCN & DEC VERSION LEVEL
|
|
$MODVL: MODDVL ;DEVICE CODE CHANGE LOWER LIMIT
|
|
$MODVU: MODDVU ;DEVICE CODE CHANGE UPPER LIMIT
|
|
$EMODE: IFNDEF EXCASB,<0> IFDEF EXCASB,<-1> ;EXEC ALLOWED
|
|
$UMODE: IFNDEF USRASB,<0> IFDEF USRASB,<-1> ;USER ALLOWED
|
|
$DSKUP: IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1> ;DISK UPDATE MODE
|
|
$MMAP: IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1> ;ALLOW MEMORY RTNS
|
|
PAREA7: PAREA5 ;OPTIONAL PARAMETER
|
|
PAREA8: PAREA6 ;OPTIONAL PARAMETER
|
|
|
|
; **********************************************************************
|
|
;PROGRAM VARIABLE PARAMETER AREA
|
|
; **********************************************************************
|
|
|
|
USER: 0 ; 0 = EXEC, -1 = USER MODE FLAG
|
|
KAIFLG: 0 ;PROCESSOR TYPE, 0 = KA10, -1 = KI10
|
|
KLFLG: 0 ;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
|
|
MONFLG: -1 ;DIAG MONITOR SPECIAL USER FLAG
|
|
MONCTL: 0 ;DIAG MON/SYS EXR FLAG
|
|
MONTEN: 0 ;-1= LOADED BY 10
|
|
CLOCKF: 0 ;CLOCK TICKED FLAG
|
|
CONSW: 0 ;CONSOLE SWITCH SETTINGS
|
|
PASCNT: 0 ;PROGRAM PASS COUNT
|
|
RUNFLG: 0 ;PROGRAM RUN FLAG
|
|
TESTPC: 0 ;SUBTEST PC
|
|
ERRPC: 0 ;ERROR PC
|
|
ERRTLS: 0 ;ERROR TOTALS
|
|
TICKS: 0 ;PROGRAM RUNNING TIME
|
|
MARGIN: 0 ;KI10 MARGIN WORD VALUE
|
|
$ONETM: 0 ;SUBROUTINE INITIALIZATION FLAG
|
|
; **********************************************************************
|
|
;SPECIAL PROGRAM DISPATCH ADDRESSES
|
|
; **********************************************************************
|
|
|
|
BEGEND: ENDUUO ;END OF PASS
|
|
$BEND1: JRST BEGIN1 ;KEEP RUNNING PROGRAM
|
|
$BEND2: EOPUUO ;END OF PROGRAM - NO RETURN
|
|
CNTLC: SADR5 ;CONTROL C XFER ADDRESS
|
|
ALTMGO: SADR6 ;ALTMODE XFER ADDRESS
|
|
CPOPJ1: ;SKIP RETURN
|
|
UUOSKP: AOS (P) ;SKIP RETURN FROM UUO
|
|
CPOPJ: ;NON-SKIP REGULAR RETURN
|
|
UUOEXT: RTN ;UUO RETURN
|
|
UUORTN: JFCL ;ADDITIONAL USERS UUO ROUTINE
|
|
$UORTX: JFCL ;ADDITIONAL UUO LINKAGE
|
|
$UUOER: JFCL ;INITED AS (JRST $UOERX)
|
|
$ITRHL: JFCL ;ADDITIONAL INTERRUPT LINKAGE
|
|
$ITRX1: JFCL ; "
|
|
$USRHL: JFCL ; "
|
|
$RSRTX: JFCL ;ADDITIONAL POWER FAIL LINKAGE
|
|
$RSRTY: JFCL ; "
|
|
RESRT1: JFCL ; INITED AS (JRST RESRTX)
|
|
RESRT2: JFCL ; "
|
|
$PARER: JFCL ;ADDITIONAL PARITY ERROR LINKAGE
|
|
ERMORE: JFCL ;ADDITIONAL ERROR HANDLER LINKAGE
|
|
HALT . ;IMPROPER TRANSFER HALT
|
|
|
|
$PSHER: 0 ;INITED AS (JRST PSHERR)
|
|
ITRCH1: 0 ;PC & FLAGS OF CURRENT INTERRUPT
|
|
0 ;INITED AS (JRST $ITRC1)
|
|
|
|
; **********************************************************************
|
|
;PROCESSOR CONTROL STORAGE
|
|
; **********************************************************************
|
|
|
|
$ACC0: 0 ;INTERRUPT SAVED AC0
|
|
$SVPI: 0 ;INTERRUPT SAVED PI
|
|
$SVAPR: 0 ;INTERRUPT SAVED APR
|
|
$SVPAG: 0 ;INTERRUPT SAVED PAG (DATAI)
|
|
$SPAG1: 0 ;INTERRUPT SAVED PAG (CONI)
|
|
|
|
$SVUUO: 0 ;CURRENT USERS UUO
|
|
$SVUPC: 0 ;PC OF CURRENT USERS UUO
|
|
|
|
REPTU: 0 ;REPEAT UUO ITERATIONS
|
|
SCOPE: 0 ;ERROR HANDLER SCOPE LOOP FLAG
|
|
%CORFLG:0 ; " CORRECT FLAG
|
|
%COREC: 0 ; " CORRECT DATA
|
|
%ACTFL: 0 ; " ACTUAL FLAG
|
|
%ACTUL: 0 ; " ACTUAL DATA
|
|
%DISCR: 0 ; " DISCREPENCY DATA
|
|
; **********************************************************************
|
|
;UUO DISPATCH TABLE
|
|
; **********************************************************************
|
|
XLIST
|
|
IFNDEF LUUO1,<LUUO1=$UUOER>
|
|
IFNDEF LUUO2,<LUUO2=$UUOER>
|
|
IFNDEF LUUO3,<LUUO3=$UUOER>
|
|
IFNDEF LUUO4,<LUUO4=$UUOER>
|
|
IFNDEF LUUO5,<LUUO5=$UUOER>
|
|
IFNDEF LUUO6,<LUUO6=$UUOER>
|
|
IFNDEF LUUO7,<LUUO7=$UUOER>
|
|
IFNDEF LUUO10,<LUUO10=$UUOER>
|
|
IFNDEF LUUO11,<LUUO11=$UUOER>
|
|
IFNDEF LUUO12,<LUUO12=$UUOER>
|
|
IFNDEF LUUO13,<LUUO13=$UUOER>
|
|
IFNDEF LUUO14,<LUUO14=$UUOER>
|
|
IFNDEF LUUO15,<LUUO15=$UUOER>
|
|
IFNDEF LUUO16,<LUUO16=$UUOER>
|
|
IFNDEF LUUO17,<LUUO17=$UUOER>
|
|
IFNDEF LUUO20,<LUUO20=$UUOER>
|
|
IFNDEF LUUO21,<LUUO21=$UUOER>
|
|
IFNDEF LUUO22,<LUUO22=$UUOER>
|
|
IFNDEF LUUO23,<LUUO23=$UUOER>
|
|
IFNDEF LUUO24,<LUUO24=$UUOER>
|
|
IFNDEF LUUO25,<LUUO25=$UUOER>
|
|
IFNDEF LUUO26,<LUUO26=$UUOER>
|
|
IFNDEF LUUO27,<LUUO27=$UUOER>
|
|
IFNDEF LUUO30,<LUUO30=$UUOER>
|
|
IFNDEF LUUO31,<LUUO31=$UUOER>
|
|
IFNDEF LUUO32,<LUUO32=$UUOER>
|
|
IFNDEF LUUO33,<LUUO33=$UUOER>
|
|
LIST
|
|
UUODIS: LUUO1,,$UUOER
|
|
LUUO3,,LUUO2
|
|
LUUO5,,LUUO4
|
|
LUUO7,,LUUO6
|
|
LUUO11,,LUUO10
|
|
LUUO13,,LUUO12
|
|
LUUO15,,LUUO14
|
|
LUUO17,,LUUO16
|
|
LUUO21,,LUUO20
|
|
LUUO23,,LUUO22
|
|
LUUO25,,LUUO24
|
|
LUUO27,,LUUO26
|
|
LUUO31,,LUUO30
|
|
LUUO33,,LUUO32
|
|
|
|
; **********************************************************************
|
|
;MEMORY MANAGMENT STORAGE
|
|
; **********************************************************************
|
|
|
|
DF22F: 0 ;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
|
|
MAPNEW: 0 ;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
|
|
MEMTOT: 0 ;TOTAL MEMORY SIZE IN K (1024.)
|
|
MEMLOW: 0 ;LOWEST USABLE MEMORY
|
|
MEMSIZ: BLOCK ^D41 ;MEMORY SEGMENT POINTER TABLE
|
|
|
|
; **********************************************************************
|
|
;PRINT CONTROL STORAGE
|
|
; **********************************************************************
|
|
|
|
PNTFLG: 0 ;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
|
|
PNTENB: 0 ;PRINT ENABLE
|
|
PDISF: 0 ;PRINT DISABLED FLAG
|
|
PNTINH: 0 ;INHIBIT PRINT INPUT CHECKS
|
|
PNTSPC: 0 ;PRINT SPACE CONTROL
|
|
OPTIME: 0 ;TYPE-IN WAIT TIME
|
|
$TWCNT: 0 ;TIME WAITED
|
|
$DVOFF: 0 ;LOGICAL DEVICE INITED FLAG
|
|
TTYFIL: 0 ;TTY EXEC FILLERS FLAG
|
|
TTYSPD: 0 ;TTY EXEC BAUD RATE
|
|
$TTCHR: 0 ;ACTUAL TYPED IN CHAR
|
|
$CHRIN: 0 ;UPPER CASED & PARITY STRIPPED CHAR
|
|
$TYPNB: 0 ;TYPED IN NUMBER
|
|
$CRLF: 0 ;FREE CR/LF FLAG
|
|
$TABF: 0 ;TAB CONVERSION FLAG
|
|
$FFF: 0 ;FORM FEED CONVERSION FLAG
|
|
$VTF: 0 ;VERTICAL TAB CONVERSION FLAG
|
|
USRLFF: 0 ;USER LF FILLERS
|
|
USRCRF: 0 ;USER CR FILLERS
|
|
; **********************************************************************
|
|
;THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
|
|
;TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
|
|
; MOVEI NAME
|
|
; PNTA ;OR PNTAF
|
|
; **********************************************************************
|
|
|
|
CRLF: ASCII/
|
|
/
|
|
CRLF2: ASCII/
|
|
|
|
/
|
|
COMMA: ASCII/,/
|
|
PERIOD: ASCII/./
|
|
SPACE: ASCII/ /
|
|
TAB: ASCII/ /
|
|
MINUS:
|
|
HYPEN: ASCII/-/
|
|
PLUS: ASCII/+/
|
|
AST: ASCII/*/
|
|
ATSIN: ASCII/@/
|
|
LFP: ASCII/(/
|
|
RTP: ASCII/)/
|
|
BELL: BYTE (7) 007
|
|
QUEST: ASCII/?/
|
|
SLASH: ASCII!/!
|
|
DOLLAR: ASCII/$/
|
|
RADIX: ^D10 ;DECIMAL PRINT RADIX
|
|
RADLSP: 40 ;DECIMAL PRINT LEADING CHAR
|
|
RADLSC: ^D10 ;DECIMAL PRINT LEADING CHAR COUNT
|
|
|
|
; **********************************************************************
|
|
;USER MODE OUTPUT FILE INFORMATION
|
|
; **********************************************************************
|
|
|
|
$OBUF: BLOCK 3 ;LOGICAL FILE OUTPUT BUFFER HEADER
|
|
$OUTNM: SIXBIT /PRINT/ ;FILE NAME
|
|
$OUTEX: SIXBIT /PNT/ ;FILE NAME EXTENSION
|
|
BLOCK 2
|
|
|
|
; **********************************************************************
|
|
;DISK UPDATE MODE FILE INFORMATION
|
|
; **********************************************************************
|
|
|
|
$IBUF: BLOCK 3
|
|
$INNM: SIXBIT /PRINT/
|
|
$INEXT: SIXBIT /PNT/
|
|
BLOCK 2
|
|
; **********************************************************************
|
|
;PUSHDOWN LIST CONTROL INFORMATION
|
|
; **********************************************************************
|
|
|
|
PLIST: PLIST-PLISTE,,PLIST
|
|
PLISTS: BLOCK 200
|
|
PLISTE: 0 ;END OF PUSHDOWN LIST
|
|
|
|
; **********************************************************************
|
|
;POWER LINE CLOCK FREQUENCY FLAG
|
|
; **********************************************************************
|
|
|
|
CYCL60: 0 ;0 = 60, -1 = 50 CYCLE
|
|
|
|
; **********************************************************************
|
|
;KL10 CACHE CONTROL FLAGS
|
|
; **********************************************************************
|
|
|
|
CSHFLG: 0 ;ALLOW CACHE IF 0
|
|
CSHMEM: 0 ;CACHE MEMORY SEGMENTS IF 0
|
|
|
|
; **********************************************************************
|
|
;NUMBER INPUT DIGIT FLAG
|
|
; **********************************************************************
|
|
|
|
TTNBRF: 0 ;-1 IF ANY DIGIT TYPED
|
|
|
|
; **********************************************************************
|
|
;KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
|
|
; **********************************************************************
|
|
|
|
PVPAGI: 0 ;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
|
|
|
|
; **********************************************************************
|
|
;ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
|
|
; **********************************************************************
|
|
|
|
%ERHI1: 0 ;IF NON-ZERO, XCT'D AT START OF %ERUUO
|
|
%ERHI2: 0 ;IF NON-ZERO, XCT'D AT END OF %ERUUO
|
|
%ERHI3: 0 ;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
|
|
|
|
; **********************************************************************
|
|
;SPECIAL USERS UUO INTERCEPT INSTRUCTION
|
|
; **********************************************************************
|
|
|
|
$$UUO: 0 ;IF NON-ZERO, XCT'D AT START OF $UORTN
|
|
; **********************************************************************
|
|
;USER MODE MONITOR TYPE FLAG
|
|
; **********************************************************************
|
|
|
|
MONTYP: 0 ;0 = TOPS10, -1 = TOPS20
|
|
|
|
;*********************************************************************^
|
|
;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD
|
|
;*********************************************************************^
|
|
|
|
KLTYP: 0
|
|
|
|
; **********************************************************************
|
|
;SPECIAL USERS MUUO INTERCEPT INSTRUCTION
|
|
; **********************************************************************
|
|
|
|
$$MUUO: 0 ;IF NON-ZERO, XCT'D AT START OF MUUOER
|
|
|
|
; **********************************************************************
|
|
;SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
|
|
; **********************************************************************
|
|
|
|
$$OUTER:0 ;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
|
|
|
|
; **********************************************************************
|
|
;"SWITCH" CALL USAGE CONTROL
|
|
; **********************************************************************
|
|
|
|
$$TOGGLE:0 ;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
|
|
|
|
; **********************************************************************
|
|
;SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
|
|
; **********************************************************************
|
|
|
|
$$TAX1: 0 ;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
|
|
$$TAX2: 0 ;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
|
|
|
|
; **********************************************************************
|
|
;SM10 (KS-10) PROCESSOR TYPE FLAG
|
|
; **********************************************************************
|
|
|
|
SM10: 0 ;IF -1 THIS IS A KS-10
|
|
|
|
; **********************************************************************
|
|
;RIGHT HALF SWITCHES PROMPT TABLE ADDRESS
|
|
; **********************************************************************
|
|
|
|
SWPTAB: 0 ;0 = NO PROMPT, ADR = ADR OF SIXBIT PROMPT TABLE
|
|
|
|
; **********************************************************************
|
|
;SPECIAL FUTURE EXPANSION ROOM
|
|
; **********************************************************************
|
|
|
|
; **********************************************************************
|
|
;END OF FIXED STORAGE
|
|
; **********************************************************************
|
|
|
|
LOC 30577
|
|
ENDFIX: 0 ;END OF FIXED STORAGE
|
|
|
|
SUBTTL DIAGNOSTIC SECTION
|
|
|
|
EXIT: ;DROPDV ;CLOSE LOGICAL OUTPUT FILE
|
|
;EXIT
|
|
|
|
PGMNAM: ASCIZ/
|
|
PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (13) [DAKAM]
|
|
/
|
|
|
|
;INITIALIZE SUBROUTINES
|
|
|
|
LOC 30621
|
|
|
|
START: ;PGMINT
|
|
;MOVE [ASCIZ/AM/]
|
|
;MOVEM TLET ;INITIALIZE TEST LETTER
|
|
|
|
STARTA: JRST G00 ;GO PERFORM DIAGNOSTIC
|
|
|
|
; GENERAL DESCRIPTION
|
|
;PART IA -BTYE LOGIC TESTS
|
|
;PART IB -GENERAL BYTE TEST
|
|
;PART II -GENERAL BLOCK TRANSFER TEST
|
|
;PART III -GENERAL JFFO TEST
|
|
SUBTTL PART IA - BYTE MANIPULATION
|
|
|
|
|
|
;PART IA - BYTE LOGIC TESTS
|
|
;INST-IBP
|
|
;TEST ABILITY TO FCE PSE AND DECODE
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTEWORD=0,-1
|
|
;DESTAC=0
|
|
;AN ERROR WILL OCCUR IF AC DIFFERS FROM 0
|
|
;FOLLOWING IBP
|
|
|
|
G00: AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G100: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI ,-1 ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP DEST AC
|
|
IBP ,<AC+1>&17 ;INC PNTR WORD
|
|
SKIPE AC&17 ;TEST AC DIFFERS FROM 0
|
|
ER3 AC,101 ;FCE PSE FAILED
|
|
JUMPL AC+2,G100 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-IBP
|
|
;TEST ABILITY TO INCREMENT BYTE PNTR
|
|
;WITHOUT AFFECTING BYTE WORD
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTE ADDRESS=AC0
|
|
;AN ERROR WILL OCCUR IF C(AC0) DIFFERS
|
|
;FROM ORIGINAL FOLLOWING IBP
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
G200: SETO AC-2, ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
IBP ,<AC+1>&17 ;INC BYTE PNTR
|
|
CAME ,<AC-2>&17 ;TEST BYTE WORD
|
|
ER12 ,201 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G200 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;PFIELD=22
|
|
;SFIELD=6
|
|
;AN ERROR WILL OCCUR IF POINTER IS NOT INCREMENTED
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G300: MOVSI AC-2,060600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PNTR INC
|
|
ER5 AC+1,301 ;POINTER FAILED
|
|
JUMPL AC+2,G300 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST - IBP
|
|
;PFIELD=16
|
|
;SFIELD=6
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
G400: MOVSI AC-2,100600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,160600 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,401 ;POINTER FAILED
|
|
JUMPL AC+2,G400 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;TEST ABILITY TO TRANSFER INCREMENTED
|
|
;PFIELD
|
|
;TEST JAM-ZERO'S
|
|
;PFIELD=77
|
|
;SFIELD=1,2,4,10,20,40
|
|
;TEST JAM-ONE'S
|
|
;PFIELD=6,14,30,60,40
|
|
;SFIELD=3,6,14,30,20
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
SN=600
|
|
ZZ=40
|
|
YY=4000
|
|
|
|
G600: REPEAT ^D6,<
|
|
SN=SN+1
|
|
ZZ=ZZ+ZZ
|
|
YY=YY+YY
|
|
MOVSI AC-2,770000+ZZ-YY ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,770000+ZZ ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,SN ;BIT UNDER TEST FAILED
|
|
JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH
|
|
>
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
;TEST AR1(1)
|
|
G700: MOVSI AC-2,202000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,402000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,701 ;POINTER FAILED TO INCREMENT CORRECTLY
|
|
JUMPL AC+2,G700 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST AR2(1)
|
|
G1000: MOVSI AC-2,303000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,603000 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,1001 ;POINTER FAILED TO INCREMENT CORRECTLY
|
|
JUMPL AC+2,G1000 ;LOOP ON ERROR SWITCH
|
|
|
|
G1100: MOVSI AC-2,141400 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,301400 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,1101 ;POINTER FAILED TO INCREMENT CORRECTLY
|
|
JUMPL AC+2,G1100 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST AR4(1)
|
|
G1200: MOVSI AC-2,060600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,1201 ;POINTER FAILED TO INCREMENT CORRECTLY
|
|
JUMPL AC+2,G1200 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST AR5(1)
|
|
G1300: MOVSI AC-2,030300 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,060300 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST P FIELD
|
|
ER5 AC+1,1301 ;POINTER FAILED TO INCREMENT CORRECTLY
|
|
JUMPL AC+2,G1300 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;PFIELD=5
|
|
;SFIELD=10
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G1400: MOVSI AC-2,341000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,051000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNPR
|
|
TRZ AC+1,1 ;CREAR ADDRESS FIELD OF POINTER
|
|
CAME AC+1,<AC-2>&17 ;TEST P FIELD
|
|
ER5 AC+1,1401 ;POINTER FAILED
|
|
JUMPL AC+2,G1400 ;LOOP ON ERROR SWITCH
|
|
PAGE
|
|
;INST - IBP
|
|
;TEST ABILITY TO TRANSFER PFIELD
|
|
;PRELIMINARY - TEST FOR PRESENCE
|
|
; OF PULSE
|
|
;PFIELD=16
|
|
;SFIELD=6
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G1500: MOVSI AC-2,100600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,160600 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD
|
|
ER5 AC+1,1501 ;POINTER FAILED
|
|
JUMPL AC+2,G1500 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;TEST ABILITY TO TRANSFER PFIELD
|
|
;TEST ABILITY TO SET INDIVIDUAL
|
|
;SC BITS 3-8
|
|
;PFIELD=1,2,4,10,20,40
|
|
;SFIELD=1,2,4,10,20,40
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
;TEST SC BIT 8 SET
|
|
G1600: MOVSI AC-2,000100 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,010100 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 8
|
|
ER5 AC+1,1601 ;POINTER FAILED
|
|
JUMPL AC+2,G1600 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC BIT 7 SET
|
|
G1700: MOVSI AC-2,000200 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,020200 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 7
|
|
ER5 AC+1,1701 ;POINTER FAILED
|
|
JUMPL AC+2,G1700 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC BIT 6 SET
|
|
G2000: MOVSI AC-2,000400 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,040400 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 6
|
|
ER5 AC+1,2001 ;POINTER FAILED
|
|
JUMPL AC+2,G2000 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC BIT 5 SET
|
|
G2100: MOVSI AC-2,001000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,101000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 5
|
|
ER5 AC+1,2101 ;POINTER FAILED
|
|
JUMPL AC+2,G2100 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC BIT 4 SET
|
|
G2200: MOVSI AC-2,002000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,202000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 4
|
|
ER5 AC+1,2201 ;POINTER FAILED
|
|
JUMPL AC+2,G2200 ;LOOP ON ERROR SWITCH
|
|
;TEST SC BIT 3 SET
|
|
G2300: MOVSI AC-2,004000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,404000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT BYTE PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST BIT 3
|
|
ER5 AC+1,2301 ;POINTER FAILED
|
|
JUMPL AC+2,G2300 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;TEST ABILITY TO SET SC BITS 3,6
|
|
;PFIELD=6
|
|
;SFIELD=10
|
|
;FAILURE OF BIT 3 TO SET RESULTS IN A
|
|
;PFIELD=74
|
|
;FAILURE OF BIT 6 TO SET RESULTS IN
|
|
;A PFEILD=30
|
|
;SC BIT2 IS NOT TESTED-FAILURE TO SET
|
|
;BIT 2 RESULTS IN LOOPING
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G2400: MOVSI AC-2,341000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,061000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST SC3 (1)
|
|
ER5 AC+1,2401 ;POINTER FAILED
|
|
JUMPL AC+2,G2400 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;TEST ABILITY TO CLEAR INDIVIDUAL
|
|
;SC BITS
|
|
;PFIELD=20,10,2,1
|
|
;SFIELD=21,11,3,2
|
|
;FAILURE TO CLEAR SC BITS 4,5,7
|
|
;OR 8 RESULTS IN A PFIELD=43
|
|
;FAILURE TO CLEAR SC BITS 3 OR 6
|
|
;WILL NOT BE APPARENT
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
;TEST SC4 CLEARING
|
|
G2600: MOVSI AC-2,232100 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,202100 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD=43
|
|
ER5 AC+1,2601 ;POINTER FAILED
|
|
JUMPL AC+2,G2600 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC5 CLEARING
|
|
G2700: MOVSI AC-2,331100 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,101100 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD=45
|
|
ER5 AC+1,2701 ;POINTER FAILED
|
|
JUMPL AC+2,G2700 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC 7 CLEARING
|
|
G3000: MOVSI AC-2,410300 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,020300 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD=43
|
|
ER5 AC+1,3001 ;POINTER FAILED
|
|
JUMPL AC+2,G3000 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC8 CLEARING
|
|
G3100: MOVSI AC-2,420200 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,010200 ;SETUP PNTR
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
TRZ AC+1,1 ;CLEAR BIT 35
|
|
CAME AC+1,<AC-2>&17 ;TEST PFIELD=43
|
|
ER5 AC+1,3101 ;POINTER FAILED
|
|
JUMPL AC+2,G3100 ;LOOP ON ERROR SWITCH
|
|
;INST-IBP
|
|
;TEST ABILITY TO INCREMENT ADDRESS
|
|
;FIELD OF PNTR WORD
|
|
;PFIELD=6
|
|
;SFIELD=10
|
|
;LOSS OF THE SFIELD AND AN ADDRESS=1
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
G3200: MOVSI AC-2,341000 ;SETUP AC-2
|
|
AOJ AC-2,.+1 ;FOR COMPARISON
|
|
MOVSI AC+1,061000 ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INC PNTR WORD
|
|
CAME AC+1,<AC-2>&17 ;TEST FOR ERROR PNTR
|
|
ER5 AC+1,3201 ;POINTER FAILED
|
|
JUMPL AC+2,G3200 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-IBP
|
|
;TEST ABILITY TO INCREMENT
|
|
;ADDRESS FIELD OF PNTR WORD
|
|
;PFIELD=6
|
|
;SFIELD=10
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
G3300: HRLI AC-2,341000 ;SETUP AC-2 FOR
|
|
HRRI AC-2,<AC+1>&17 ;COMPARISON
|
|
HRLI AC+1,061000 ;SETUP BYTE
|
|
HRRI AC+1,AC&17 ;PNTR WORD
|
|
IBP ,<AC+1>&17 ;INCREMENT PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST ADDRESS
|
|
ER5 AC+1,3301 ;POINTER FAILED
|
|
JUMPL AC+2,G3300 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST ABILITY TO FCE (2ND PART)
|
|
;FAILURE TO FCE RESULTS IN LOSS
|
|
;OF DATA WORD
|
|
;PFIELD=0
|
|
;SFIELD=6
|
|
;BYTE WORD=0,777777
|
|
;DEST AC=0
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
G3400: HRLI AC+1,000600 ;SETUP BYTE
|
|
HRRI AC+1,5 ;PNTR WORD
|
|
MOVEI 5,-1 ;SETUP BYTE WORD
|
|
SETZ AC, ;CLEAR DEST AC
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,77 ;TEST DEST AC=0,,77
|
|
ER3 AC,3401 ;AC FAILED
|
|
JUMPL AC+2,G3400 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-LDB
|
|
;P FIELD =14
|
|
;S FIELD =6
|
|
;BYTE WORD =-1
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
G3500: HRRZI AC-2,77 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR
|
|
SETO ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,77
|
|
ER3 AC,3501 ;AC FAILED
|
|
JUMPL AC+2,G3500 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTE WORD = 777777
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
|
|
G3600: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI ,-1 ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,77 ;TEST DEST AC
|
|
ER3 AC,3601 ;AC FAILED
|
|
JUMPL AC+2,G3600 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST ABILITY TO TRANSFER 2'S COMP
|
|
;SFIELD
|
|
;TEST ABILITY TO SET INDIVIDUAL
|
|
;BITS OF SC
|
|
;PFIELD=0
|
|
;SFIELD=40,20,10,4,2,1
|
|
;BYTE WORD=-1
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
;TEST SC 1,2,3 SET
|
|
G3700: HRLOI AC-2,37777 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,4000 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=37777,,777777
|
|
ER3 AC,3701 ;AC FAILED
|
|
JUMPL AC+2,G3700 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC4 SET
|
|
G4000: HRRZI AC-2,177777 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,2000 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,177777
|
|
ER3 AC,4001 ;AC FAILED
|
|
JUMPL AC+2,G4000 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC5 SET
|
|
G4100: MOVEI AC-2,377 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,1000 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE = 0,,377
|
|
ER3 AC,4101 ;AC FAILED
|
|
JUMPL AC+2,G4100 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC6 SET
|
|
G4200: MOVEI AC-2,17 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,400 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,17
|
|
ER3 AC,4201 ;AC FAILED
|
|
JUMPL AC+2,G4200 ;LOOP ON ERROR SWITCH
|
|
;TEST SC 7 SET
|
|
G4300: MOVEI AC-2,3 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,200 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,3
|
|
ER3 AC,4301 ;AC FAILED
|
|
JUMPL AC+2,G4300 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST SC 8 SET
|
|
G4400: MOVEI AC-2,1 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,100 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,1
|
|
ER3 AC,4401 ;AC FAILED
|
|
JUMPL AC+2,G4400 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;PFIELD=6
|
|
;SFIELD=14
|
|
;BYTE WORD=000000007700
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
G4600: MOVEI AC-2,77 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,061400 ;SETUP PNTR WORD
|
|
MOVEI ,7700 ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE =77
|
|
ER3 AC,4601 ;AC FAILED
|
|
JUMPL AC+2,G4600 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;PFIELD=6
|
|
;SFIELD=6
|
|
;BYTEWORD=-1
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G4700: MOVEI AC-2,77 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,060600 ;SETUP PNTR
|
|
SETO ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,<AC-2>&17 ;TEST BYTE=0,,77
|
|
ER3 AC,4701 ;AC FAILED
|
|
JUMPL AC+2,G4700 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-LDB
|
|
;TEST IR 134-7
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTE WORD=-1
|
|
;AN ERROR WILL OCCUR IF PC IS INCREMENTED
|
|
;TWICE DURING EXECUTION OF LDB
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
G5000: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
JRST ,.+2 ;PC+1 INH ASSERTED
|
|
ER3 AC,5001 ;AC FAILED
|
|
JUMPL AC+2,G5000 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST ABILITY TO CLEAR BYF6
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTE WORD=-1
|
|
;AN ERROR WILL OCCUR IF BYF6(1) WHEN STORED
|
|
;BY JSP
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
G5100: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
SETO ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
JSP AC,.+1 ;STORE FLAGS
|
|
TLNE AC,020000 ;TEST BIT 4
|
|
ER3 AC,5101 ;AC FAILED
|
|
JUMPL AC+2,G5100 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-LDB
|
|
;TEST ABILITY TO DEFER (INDIRECT) BYTE
|
|
;PNTR ADDRESS
|
|
;FAILURE TO INDIRECTLY ADDRESS BYTE
|
|
;PNTR RESULTS IN AN ERROR BYTE
|
|
;PFIELD=0
|
|
;SFIELD=6
|
|
;ERROR BYTE=14
|
|
;CORRECT BYTE=44
|
|
;AN ERROR WILL OCCUR IF DEST AC=14
|
|
;FOLLOWING LOAD BYTE INDIRECTLY ADDRESSED
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
|
|
G5200: MOVSI AC+1,600 ;SETUP PNTR WORD
|
|
HRLI ,600 ;SETUP INDIRECT ADDRESS
|
|
HRRI ,14 ;PNTR WORD (AC0)
|
|
MOVEI AC+6,44 ;SETUP CORR BYTE WORD
|
|
LDB AC,@<AC+1>&17 ;LOAD BYTE INDIRECTLY
|
|
CAIE AC,44 ;TEST FOR CORR BYTE
|
|
ER3 AC,5201 ;INDIRECT ADDRESSING FAILED
|
|
JUMPL AC+2,G5200 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST IR RT CLR AT6
|
|
;FURTHER TEST OF IR 134-7
|
|
;TEST ABILITY TO CLEAR IR BITS 13-17 FOLLOWING
|
|
;DEFERRING OR INDEXING OF BYTE PNTR ADDR
|
|
;PFIELD=6
|
|
;SFIELD=14
|
|
;CORR BYTE WORD=222222
|
|
;DEST AC=4
|
|
;AN ERROR WILL OCCUR IF DEST AC
|
|
;EQUALS 5555 FOLLOWING LOAD BYTE
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
G5300: MOVSI AC+5,061400 ;SETUP INDEXED PNTR WORD
|
|
MOVEI AC,4 ;SETUP INDEX AC
|
|
MOVEI ,222222 ;SETUP CORR BYTE WORD
|
|
MOVEI AC-3,555555 ;SETUP CORR BYTE WORD
|
|
LDB AC,<AC+1>&17(AC) ;LOAD BYTE INDEXED
|
|
CAIE AC,2222 ;TEST FOR CORR BYTE
|
|
ER3 AC,5301 ;AC FAILED
|
|
JUMPL AC+2,G5300 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-LDB
|
|
;FURTHER TEST OF IR 134-7
|
|
;TEST ABILITY TO INDEX BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;FAILURE RESULTS IN IR14-17=0,
|
|
;NO INDEX, ERROR BYTE=55
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
G5400: HRLI AC+1,000607 ;SETUP BYTE
|
|
HRRI AC+1,5 ;PNTR WORD
|
|
MOVEI 7,10 ;SETUP INDEX AC
|
|
MOVEI 5,55 ;SETUP NON INDEX BYTE WORD
|
|
MOVEI 15,77 ;SETUP INDEXED BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,77 ;TEST BYTE=0,,77
|
|
ER3 AC,5401 ;AC FAILED
|
|
JUMPL AC+2,G5400 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST ABILITY TO INDEX BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;FAILURE RESULTS IN A BYTE WORD
|
|
;ADDRESS EQUAL TO CONTENTS OF
|
|
;INDEX AC(=AC)
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
G5500: HRLI AC+1,000607 ;SETUP BYTE
|
|
HRRI AC+1,5 ;PNTR WORD
|
|
SETZB AC,5 ;CLEAR DEST AC'S
|
|
MOVEI 7,10 ;SETUP INDEX AC
|
|
MOVEI 15,77 ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,77 ;TEST FOR BYTE
|
|
ER3 AC,5501 ;AC FAILED
|
|
JUMPL AC+2,G5500 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-LDB
|
|
;TEST ABILITY TO INDEX BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;FAILURE RESULTS IN AN INDEX AC EQUAL
|
|
;TO INDEX AC+AC(AC7+AC10=AC17)
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
G5600: HRLI AC+1,000607 ;SETUP BYTE
|
|
HRRI AC+1,5 ;PNTR WORD
|
|
MOVEI 6,10 ;SETUP INDEX AC
|
|
MOVEI 15,15 ;SETUP BYTE WORD
|
|
MOVEI 16,5 ;SETUP ERROR INDEX AC
|
|
MOVEI 14,14 ;SETUP ERROR BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,15 ;TEST BYTE=15
|
|
ER3 AC,5601 ;AC FAILED
|
|
JUMPL AC+2,G5600 ;LOOP ON ERROR SWITCH
|
|
;INST-LDB
|
|
;TEST ABILITY TO INDEX BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;FAILURE RESULTS IN INDEXING BY C(AC0)
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
G5700: HRLI AC+1,000607 ;SETUP BYTE
|
|
HRRI AC+1,5 ;PNTR WORD
|
|
MOVEI 7,10 ;SETUP INDEX AC
|
|
MOVEI 15,15 ;SETUP BYTE WORD
|
|
MOVEI ,7 ;SETUP ERROR INDEX AC
|
|
MOVEI 14,33 ;SETUP ERROR BYTE WORD
|
|
LDB AC,AC+1 ;LOAD BYTE
|
|
CAIE AC,15 ;TEST BYTE=0,,15
|
|
ER3 AC,5701 ;AC FAILED
|
|
JUMPL AC+2,G5700 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-ILDB
|
|
;TEST ABILITY TO ASSERT BYTE PTRINC
|
|
;P FIELD=16
|
|
;S FIELD=6
|
|
;FAILURE TO ASSERT MAY RESULT IN A HALT
|
|
;AT ET0
|
|
;AN ERROR WILL OCCUR IF PNTR WORD
|
|
;EQUALS ORIGINAL FOLLOWING ILDB
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G6000: MOVSI AC-2,100600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,160600 ;SETUP PNTR WORD
|
|
ILDB AC,<AC+1>&17 ;INC AND LOAD BYTE
|
|
CAME AC+1,<AC-2>&17 ;TEST PNTR=ORIGINAL
|
|
ER4 AC+1,6001 ;PNTR FAILED TO INCREMENT
|
|
JUMPL AC+2,G6000 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-ILDB
|
|
;TEST LB BYTE LOAD
|
|
;TEST BYF5 SET
|
|
;P FIELD=22
|
|
;S FIELD=22
|
|
;BYTE WORD=000000777777
|
|
;FAILURE RESULTS IN A BYTE EQUAL
|
|
;TO BYTE WORD.
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
G6100: MOVSI AC-2,002200 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,222200 ;SETUP PNTR WORD
|
|
MOVEI ,-1 ;SETUP BYTE WORD
|
|
ILDB AC,<AC+1>&17 ;INC AND LOAD BYTE
|
|
CAME ,AC ;TEST BYTE=000000777777
|
|
ER12 ,6101 ;BYTE WORD FAILED
|
|
CAME AC+1,<AC-2>&17 ;TEST PNTR WORD
|
|
ER5 AC+1,6101 ;POINTER FAILED
|
|
JUMPL AC+2,G6100 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-ILDB
|
|
;P FIELD=22
|
|
;S FIELD=6
|
|
;BYTE WORD=0000007700000
|
|
;FAILURE RESULTS IN A BYTE
|
|
;=0
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G6200: MOVSI AC-2,140600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,220600 ;SETUP PNTR WORD
|
|
MOVEI ,770000 ;SETUP BYTE WORD (AC0)
|
|
ILDB AC,<AC+1>&17 ;INC AND LOAD BYTE
|
|
CAIE AC,77 ;TEST BYTE
|
|
ER3 AC,6201 ;AC FAILED
|
|
CAME AC+1,<AC-2>&17 ;TEST PNTR WORD
|
|
ER5 AC+1,6201 ;POINTER FAILED
|
|
JUMPL AC+2,G6200 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-DPB
|
|
;TEST ABILITY TO ASSERT BYF5 SET
|
|
;P FIELD
|
|
;P=14
|
|
;S=6
|
|
;BYTE WORD=000000000077
|
|
;DEST WORD=000000000000
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
G6300: MOVEI AC-2,770000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI AC,77 ;SETUP BYTE
|
|
SETZ ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST=0,,770000
|
|
ER12 ,6301 ;BYTE W0RD FAILED
|
|
JUMPL AC+2,G6300 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-DPB
|
|
;TEST ABILITY TO ASSERT DPBYTE DEP
|
|
;P FIELD=14
|
|
;S FIELD=6
|
|
;BYTE WORD=55
|
|
;DEST WORD=-1
|
|
;FAILURE OF MQ TO SHIFT RESULTS IN A
|
|
;DEPOSIT BYTE=777777777700
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
G6400: HRROI AC-2,557777 ;SETUP AC-2 FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETO ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST=-1,,557777
|
|
ER12 ,6401 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G6400 ;LOOP ON ERROR SWITCH
|
|
;INST-DPB
|
|
;TEST ABILITY TO AND MASK, BYTE
|
|
;P FIELD=14
|
|
;S FIELD=6
|
|
;BYTE WORD=5555
|
|
;DEST WORD=0
|
|
;FAILURE RESULTS IN A DEPOSIT
|
|
;BYTE=000055550000
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G7000: HRRZI AC-2,550000 ;SETUP AC-2 FOR COMPARISON
|
|
HRRI AC-2,550000 ;FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI AC,5555 ;SETUP BYTE WORD
|
|
SETZ ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD=0,,550000
|
|
ER12 ,7001 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G7000 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-DPB
|
|
;P FIELD = 6
|
|
;S FIELD = 14
|
|
;BYTE WORD=55
|
|
;DEST WORD = -1
|
|
;FAILURE OF ANY ONE RESULTS IN A
|
|
;BYTE = 777777 000077
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
G7100: HRROI AC-2,5577 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,061400 ;SETUP PNTR WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETO ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST BYTE=777777 005577
|
|
ER12 ,7101 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G7100 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-DPB
|
|
;P FIELD=14
|
|
;S FIELD=6
|
|
;BYTE WORD=55
|
|
;DEST WORD=0
|
|
;FAILURE RESULTS IN A DEPOSIT
|
|
;BYTE=777777557777
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G7200: HRRZI AC-2,550000 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETZ ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD=0,,550000
|
|
ER12 ,7201 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G7200 ;LOOP ON ERROR SWITCH
|
|
;INST-DBP
|
|
;P FIELD=22
|
|
;S FIELD=6
|
|
;BYTE WORD=5555
|
|
;DEST WORD=-1
|
|
;FAILURE RESULTS IN A DEPOSIT
|
|
;BYTE=005455777777
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
G7400: HRLOI AC-2,777755 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,220600 ;SETUP PNTR WORD
|
|
MOVEI AC,5555 ;SETUP BYTE WORD
|
|
SETO ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD=777755,,-1
|
|
ER12 ,7401 ;BYTE WORD FAILED
|
|
JUMPL AC+2,G7400 ;LOOP ON ERROR SWITCH
|
|
;INST-DPB
|
|
;TEST ABILITY TO CLEAR BYF6
|
|
;P FIELD=14
|
|
;S FIELD=6
|
|
;BYTE WORD=55
|
|
;DEST WORD=0
|
|
;AN ERROR WILL OCCUR IF BYF6(1) WHEN
|
|
;STORED BY JSP
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
G7600: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETZ ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE
|
|
JSP AC,.+1 ;STORE FLAGS
|
|
TLNE AC,020000 ;TEST BIT 4
|
|
ER13 AC,7601 ;BYF6 FAILED TO CLEAR
|
|
JUMPL AC+2,G7600 ;LOOP ON ERROR SWITCH
|
|
|
|
;INST-IDPB
|
|
;TEST ABILITY TO ASSERT BYTE PTRINC
|
|
;TEST ABILITY TO ASSERT DB BYTE DEP
|
|
;FAILURE TO ASSERT BYTE PTR INC
|
|
;MAY CAUSE A HALT AT ET0
|
|
;FAILURE TO ASSERT DB BYTE DEP PREVENTS
|
|
;ARMQSHLT SCT3 (2ND PART)
|
|
;P FIELD=22
|
|
;S FIELD=6
|
|
;DEST WORD=0
|
|
;BYTE WORD=77
|
|
;AN ERROR WILL OCCUR IF BYTE PNTR
|
|
;WORD EQUALS ORIGINAL
|
|
;AN ERROR WILL OCCUR IF DEST WORD
|
|
;EQUALS BYTE WORD
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G7700: MOVSI AC-2,140600 ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,220600 ;SETUP PNTR WORD
|
|
MOVEI AC,77 ;SETUP BYTE WORD
|
|
SETZ ;SETUP DEST WORD (AC0)
|
|
IDPB AC,<AC+1>&17 ;INC AND DEPOSIT BYTE
|
|
CAME AC+1,<AC-2>&17 ;TEST FOR INCREMENTED PNTR
|
|
ER5 AC+1,7701 ;BYTE PTR INC FAILED
|
|
CAIE ,770000 ;TEST DEST WORD
|
|
ER12 ,7701 ;DB BYTE DEP FAILED
|
|
JUMPL AC+2,G7700 ;LOOP ON ERROR SWITCH
|
|
SUBTTL PART IB-GENERAL BYTE TEST
|
|
|
|
;PART IA- GENERAL BYTE TEST
|
|
|
|
;INST-IBP
|
|
;DECREASING P FIELD
|
|
;P FIELD=22,20,16,14,12
|
|
;S FIELD=6
|
|
;RESULTANT P FIELDS=14,12,10,6,4
|
|
;AN ERROR WILL OCCUR ON AN
|
|
;INCORRECT INCREMENTED PNTR WORD
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
SN=10000
|
|
XX=160600
|
|
ZZ=240600
|
|
|
|
;TEST IBP
|
|
G10000: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-020000
|
|
ZZ=ZZ-020000
|
|
MOVSI AC-2,XX ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INC BYTE PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST INC PNTR
|
|
ER5 AC+1,SN ;IBP FAILED
|
|
JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-IBP
|
|
;DECREASING S FIELD
|
|
;P FIELD=22
|
|
;S FIELD=14,12,10,6,4
|
|
;RESULTANT P FIELDS=6,10,12,14,16
|
|
;AN ERROR WILL OCCUR ON AN
|
|
;INCORRECT INCREMENTED PNTR WORD
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=10100
|
|
XX=040000
|
|
WW=001600
|
|
ZZ=221600
|
|
|
|
;TEST IBP
|
|
G10100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+020000
|
|
WW=WW-000200
|
|
ZZ=ZZ-000200
|
|
MOVSI AC-2,XX+WW ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INC BYTE PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST INC PNTR
|
|
ER5 AC+1,SN ;IBP FAILED
|
|
JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-IBP
|
|
;OVERFLOW AND INC ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=14,12,10,6,4
|
|
;RESULTANT P FIELDS=30,32,34,36,40
|
|
;ADDRESS FIELD INCREMENTED BY ONE
|
|
;AN ERROR WILL OCCUR ON AN INCORRECT
|
|
;INCREMENTED PNTR WORD
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
SN=10200
|
|
XX=260000
|
|
ZZ=001600
|
|
|
|
;TEST IBP
|
|
G10200: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+020000
|
|
ZZ=ZZ-000200
|
|
MOVSI AC-2,XX+ZZ ;SETUP AC-2
|
|
AOJ AC-2, ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<AC+1>&17 ;INC BYTE PNTR
|
|
CAME AC+1,<AC-2>&17 ;TEST INC PNTR
|
|
ER5 AC+1,SN ;IBP FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-LDB
|
|
;INCREASING S FIELD
|
|
;P FIELD=22
|
|
;S FIELD=1,2,3,4,5
|
|
;BYTE WORD=777777000000
|
|
;AN ERROR WILL OCCUR IF AN
|
|
;IN CORRECT BYTE IS LOADED
|
|
;INTO AC
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
SN=10300
|
|
XX=220000
|
|
ZZ=0
|
|
|
|
;TEST LDB
|
|
G10300: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+000100
|
|
ZZ=ZZ*2+1
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
HRLZI ,-1 ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,ZZ ;TEST DEST AC
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;INCREASING BYTE WORD
|
|
;INCREASING P FIELD
|
|
;P FIELD=14,17,22,25,33
|
|
;S FIELD=3
|
|
;BYTE WORD=000000070000 SHIFTING
|
|
;LEFT BY 3
|
|
;AN ERROR WILL OCCUR IF DEST AC
|
|
;DIFFERS FROM 7
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
SN=10400
|
|
XX=0
|
|
ZZ=110300
|
|
|
|
;TEST LDB
|
|
G10400: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+3
|
|
ZZ=ZZ+030000
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
MOVEI ,7000 ;SETUP BYTE WORD
|
|
ROT ,XX ;ROTATE LEFT BY 3
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,7 ;TEST DEST AC=7
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;VARY BYTE ADDRESS
|
|
;P FIELD=22
|
|
;S FIELD=3
|
|
;BYTE WORD=AC NUMBER
|
|
;BYTE PNTR ADDR=AC 6,5,4,3,2
|
|
;AN ERROR WILL OCCUR IF C(DEST AC)
|
|
;DIFFERS FROM AC UNDER TEST
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
SN=10500
|
|
ZZ=7
|
|
|
|
;TEST LOAD BYTE
|
|
G10500: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ-1
|
|
HRLI AC+1,220300 ;SETUP BYTE
|
|
HRRI AC+1,ZZ ;PNTR WORD
|
|
MOVSI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,ZZ ;TEST DEST AC=AC NUMBER
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-LDB
|
|
;BYTE PNTR INDEXED
|
|
;P FIELD=0
|
|
;S FIELD=3
|
|
;BYTE WORD=PNTR WORD
|
|
;AN ERROR WILL OCCUR IF LOADED
|
|
;BYTE DIFFERS FROM CURRENT
|
|
;AC NUMBER
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
SN=10600
|
|
ZZ=0
|
|
|
|
;TEST LDB INDEXED
|
|
G10600: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI ,000300 ;SETUP NON IND PNTR WORD
|
|
HRLI ZZ,000300 ;SETUP INDEXED
|
|
HRRI ZZ,ZZ ;PNTR WORD
|
|
LDB AC,(ZZ) ;LOAD BYTE INDEXED
|
|
CAIE AC,ZZ ;TEST FOR AC NUMBER
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;BYTE PNTR INDIRECTLY ADDRESSED
|
|
;P FIELD=0
|
|
;S FIELD=3
|
|
;BYTE WORD=PNTR WORD
|
|
;AN ERROR WILL OCCUR IF LOADED
|
|
;BYTE DIFFERS FROM CURRENT
|
|
;AC NUMBER
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
SN=10700
|
|
ZZ=0
|
|
|
|
;TEST LDB INDIRECTLY ADDRESSED
|
|
G10700: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,440300 ;SETUP DIRECTLY ADDRESSED PNTR WORD
|
|
HRRI AC+1,ZZ ;SETUP INDIRECT ADDRESS
|
|
HRLI ZZ,000300 ;SETUP INDIRECTLY ADDRESSED
|
|
HRRI ZZ,ZZ ;PNTR WORD
|
|
SETZ ;SETUP DIRECTLY ADDRESSED BYTE WORD
|
|
LDB AC,@<AC+1>&17 ;LOAD BYTE INDIRECTLY ADDRESSED
|
|
CAIE AC,ZZ ;TEST FOR AC NUMBER
|
|
ER3 AC,SN ;LDB INDIRECTLY ADDRESSED FAILED
|
|
JUMPL AC+2,.-10 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;INST-LDB
|
|
;PNTR INDEXED AND INDIRECTLY ADDRESSED
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;PNTR WORD IS IN AC 12,13,14
|
|
;BYTE WORD=PNTR WORD
|
|
;LOADED BYTE SHOULD EQUAL
|
|
;12,13,14
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
SN=11000
|
|
VV=3
|
|
WW=6
|
|
XX=11
|
|
ZZ=3
|
|
|
|
;TEST LDB INDEXED, INDIRECTLY ADDRESSED
|
|
G11000: REPEAT ^D3,<
|
|
SN=SN+1
|
|
VV=VV+1
|
|
WW=WW+1
|
|
XX=XX+1
|
|
ZZ=ZZ+1
|
|
MOVEI VV,WW ;SETUP INDEX AC
|
|
MOVEI WW,XX ;SETUP INDIRECT AC
|
|
HRLI XX,000600 ;SETUP INDEXED AND
|
|
HRRI XX,XX ;INDIRECT PNTR WORD
|
|
LDB AC,@(ZZ) ;LOAD BYTE INDEXED, INDIRECTLY ADDRESSED
|
|
CAIE AC,XX ;TEST LOAD BYTE=12,13,14
|
|
ER3 AC,SN ;LDB INDEXED, INDIRECTLY ADDRESSEDD FAILED
|
|
JUMPL AC+2,^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;INDEX BYTE ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;INDEX AC=AC7
|
|
;BYTE WORD ADDRESS=AC 7,10,11,12,13
|
|
;AN ERROR WILL OCCUR IF LOADED BYTE
|
|
;DIFFERS CURRENT AC
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
|
|
SN=11100
|
|
ZZ=6
|
|
|
|
;TEST LDB BYTE ADDR INDEXED
|
|
G11100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000607 ;SETUP PNTR WORD
|
|
MOVEI AC+3,ZZ ;SETUP INDEX AC
|
|
MOVEI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,ZZ ;TEST BYTE=7,10,11,12,13
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-LDB
|
|
;BYTE INDIRECTLY ADDRESSED
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;BYTE WORD ADDRESS=AC7,10,11,12,13
|
|
;AN ERROR WILL OCCUR IF LOADED
|
|
;BYTE DIFFERS FROM CURRENT AC
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
|
|
SN=11200
|
|
ZZ=6
|
|
|
|
;TEST LDB, BYTE INDIRECTLY ADDRESSED
|
|
G11200: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000620 ;SETUP PNTR WORD
|
|
MOVEI ,ZZ ;SETUP DEFER ADDRESS
|
|
MOVEI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,ZZ ;TEST BYTE=7,10,11,12,13
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;BYTE ADDRESS INDEXED AND INDIRECT
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;BYTE ADDRESS=AC13,14,15
|
|
;BYTE WORD=13,14,15
|
|
;AN ERROR WILL OCCUR IF LOADED
|
|
;BYTE DIFFERS FROM CURRENT AC
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
|
|
SN=11300
|
|
XX=12
|
|
ZZ=7
|
|
|
|
;TEST LDB, BYTE ADDR INDEXED AND INDIRECT
|
|
G11300: REPEAT ^D3,<
|
|
SN=SN+1
|
|
XX=XX+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000627 ;SETUP PNTR WORD
|
|
MOVEI AC+3,ZZ ;SETUP INDEX AC
|
|
MOVEI ZZ,XX ;SETUP INDIRECT ADDR
|
|
MOVEI XX,XX ;SETUP BYTE WORD
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAIE AC,XX ;TEST BYTE=13,14,15
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-7 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-ILDB
|
|
;DECREASING P FIELD
|
|
;P FIELD=44,36,30,22,14
|
|
;S FIELD=6
|
|
;BYTE ADDRESS=AC0
|
|
;AN ERROR WILL OCCUR IF AC DIFFERS
|
|
;FROM 77
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
|
|
SN=11400
|
|
XX=520600
|
|
ZZ=0
|
|
|
|
;TEST ILDB
|
|
G11400: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-060000
|
|
ZZ=ZZ-6
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
MOVEI ,77 ;SETUP BYTE WORD
|
|
ROT ,ZZ ;ROTATE RIGHT
|
|
ILDB AC,<AC+1>&17 ;INC AND LOAD BYTE
|
|
CAIE AC,77 ;TEST AC=77
|
|
ER3 AC,SN ;ILDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-ILDB
|
|
;INCREASING S FIELD
|
|
;CALCULATE NEW P FIELD, INCREMENT
|
|
;BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6,14,22,30,36
|
|
;AN ERROR WILL OCCUR IF AC
|
|
;DIFFERS FROM 77
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=11500
|
|
XX=0
|
|
ZZ=0
|
|
|
|
;TEST ILDB
|
|
G11500: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+600
|
|
ZZ=ZZ-6
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
MOVEI 1,77 ;SETUP BYTE WORD
|
|
ROT 1,ZZ ;ROTATE RIGHT BYTE WORD
|
|
ILDB AC,<AC+1>&17 ;INC AND LOAD BYTE
|
|
CAIE AC,77 ;TEST AC=77
|
|
ER3 AC,SN ;ILDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-ILDB
|
|
;TESTING SPECIAL POINTER
|
|
;WHICH SETS AC TO ZERO
|
|
;PFIELD=20 ORIG,64 AFTER
|
|
;SFIELD=60 ORIG,60 AFTER
|
|
;AN ERROR WILL OCCUR IF AC IS NOT ZEROED
|
|
|
|
XX=206000
|
|
|
|
G11600: MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
SETOB 0,1 ;SETUP BYTE WORD
|
|
SETOM AC ;SETUP AC FOR TEST
|
|
ILDB AC,<AC+1>&17 ;THIS SHOULD ZERO AC
|
|
SKIPE AC ;TEST AC=0
|
|
ER3 AC,11601 ;ILDB FAILED
|
|
JUMPL AC+2,G11600 ;LOOP ON ERROR SWITCH
|
|
PAGE
|
|
;INST-DPB
|
|
;INCREASING P FIELD
|
|
;P FIELD=6,14,22,30,36
|
|
;S FIELD=6
|
|
;BYTE WORD=55
|
|
;AN ERROR WILL OCCUR IF DPB
|
|
;FAILS TO DEPOSIT CORRECTLY
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
SN=11700
|
|
XX=0
|
|
ZZ=000600
|
|
|
|
;TEST DPB
|
|
G11700: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+6
|
|
ZZ=ZZ+60000
|
|
MOVEI AC-2,55 ;SETUP AC-2
|
|
ROT AC-2,XX ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
SETZ ;SETUP DEST WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD
|
|
ER12 ,SN ;DPB FAILED
|
|
JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-DPB
|
|
;INCREASING P FIELD
|
|
;P FIELD = 0,6,14,22,30
|
|
;S FIELD = 6
|
|
;BYTE WORD=55 (SHIFTING LEFT 6 PLACES)
|
|
;AN ERROR WILL OCCUR IF DPB FAILS
|
|
;TO DEPOSIT CORRECTLY
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
SN=12000
|
|
XX=0
|
|
ZZ=-60000
|
|
|
|
;TEST DPB
|
|
G12000: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+6
|
|
ZZ=ZZ+060000
|
|
IFE ZZ,<ZZ=000600>
|
|
MOVSI AC-2,550000 ;SETUP AC=2
|
|
ROT AC-2,XX ;FRO COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETZ ;SETUP DEST WORD
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE (AC0)
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD
|
|
ER12 ,SN ;DPB FAILED
|
|
JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;INST-IDPB
|
|
;INCREASING S FIELD
|
|
;CALCULATE NEW P FIELD, INCREMENT
|
|
;BYTE WORD ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6,14,22,30,36
|
|
;BYTE WORD=77
|
|
;AN ERROR WILL OCCUR IF IDPB FAILS
|
|
;TO DEPOSIT CORRECTLY
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
SN=12100
|
|
XX=0
|
|
ZZ=000000
|
|
|
|
;TEST IDPB
|
|
G12100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-6
|
|
ZZ=ZZ+600
|
|
MOVEI AC-2,77 ;SETUP AC-2
|
|
ROT AC-2,XX ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
MOVEI AC,77 ;SETUP BYTE WORD
|
|
SETZ 1, ;SETUP DEST WORD
|
|
IDPB AC,<AC+1>&17 ;INC AND DEPOSIT BYTE
|
|
CAME 1,<AC-2>&17 ;TEST DEST WORD
|
|
ER12 1,SN ;IDPB FAILED
|
|
JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;INST-IDPB
|
|
;P FIELD=44
|
|
;S FIELD=6
|
|
;BYTE WORD=55
|
|
;DEST WORD=-1
|
|
;AN ERROR WILL OCCUR IF IDPB
|
|
;FAILS TO DEPOSIT CORRECTLY
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
SN=12200
|
|
ZZ=0
|
|
|
|
G12200: MOVSI AC+1,440600 ;SETUP PNPR WORD
|
|
;TEST IDPB
|
|
REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ-6
|
|
HRLI AC-2,-1 ;SETUP AC-2
|
|
HRRI AC-2,-23 ;FOR COMPARISON
|
|
ROT AC-2,ZZ ;ROTATE RIGHT BY 6
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETO ;SETUP DEST WORD (AC0)
|
|
IDPB AC,<AC+1>&17 ;INC AND DEPOSIT BYTE
|
|
CAME ,<AC-2>&17 ;TEST DEST WORD
|
|
ER12 ,SN ;IDPB FAILED
|
|
JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;INST-LDB-SPECIAL CASE-S GREATER THAN 44
|
|
;P FIELD=7
|
|
;S FIELD=60,40
|
|
;VERIFY THAT THE BYTE PROCESSED IS, AT MOST, 44 BITS IF S GREATER THAN 44
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
SN=12210
|
|
XX=100000
|
|
|
|
;TEST LDB
|
|
G12210: REPEAT 2,<
|
|
SN=SN+1
|
|
XX=XX-2000
|
|
SETOB 0,2
|
|
MOVE 1,[525252,,525377] ;SETUP BYTE WORD
|
|
SETZM AC ;CLEAR DEST WORD
|
|
MOVE AC+1,[XX,,1] ;SETUP POINTER
|
|
LDB AC,<AC+1>&17 ;LOAD BYTE
|
|
CAME AC,[002525,,252525] ;TEST DEST WORD
|
|
ER3 AC,SN ;LDB FAILED
|
|
CAME AC+1,[XX,,1] ;CHECK POINTER
|
|
ER4 AC+1,SN ;POINTER WAS MODIFIED
|
|
JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;INST-DPB-SPECIAL CASE-S GREATER THAN 44
|
|
;P FIELD=7
|
|
;S FIELD=60,40
|
|
;VERIFY THAT THE BYTE PROCESSED IS, AT MOST, 44 BITS IF S GREATER THAN 44
|
|
|
|
SN=12220
|
|
XX=100000
|
|
|
|
;TEST DPB
|
|
G12220: REPEAT 2,<
|
|
SN=SN+1
|
|
XX=XX-2000
|
|
SETOB 0,2
|
|
MOVE 1,[707070,,707070] ;SETUP DEST WORD
|
|
MOVE AC,[323232,,232323] ;SETUP BYTE WORD
|
|
MOVE AC+1,[XX,,1] ;SETUP POINTER
|
|
DPB AC,<AC+1>&17 ;DEPOSIT BYTE
|
|
MOVEI AC-2,[ASCIZ/C(C(E)-1) FAILED/]
|
|
MOVE AC-2,SPDES ;FAILURE DESCRIPTOR
|
|
CAME 0,[-1,,-1] ;CHECK DEST WORD -1
|
|
ER2 0,SN ;DPB FAILED
|
|
CAME 1,[646446,,464670] ;CHECK DEST WORD
|
|
ER12 1,SN ;DPB FAILED
|
|
MOVEI AC-2,[ASCIZ/C(C(E)+1) FAILED/]
|
|
MOVEM AC-2,SPDES ;FAILURE DSCRIPTOR
|
|
CAME 2,[-1,,-1] ;CHECK DEST WORD +1
|
|
ER2 2,SN ;DPB FAILED
|
|
JUMPL AC+2,.-^D15 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;VERIFY THAT THE POINTER IS NOT INCREMENTED BY "ILDB" OR "IDPB" IF 'BIS'
|
|
;IS SET; AND THAT THE SECOND PART OF THE BYTE INSTRUCTION CLEARS 'BIS'
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
G12300: MOVE AC+1,[220600,,AC-1] ;SETUP BYTE POINTER
|
|
MOVE AC,[707070,,707070] ;SETUP AC
|
|
MOVE AC-1,[112233,,445566] ;SETUP BYTE WORD
|
|
JRSTF @[BIS,,.+1] ;SET 'BIS' FLAG
|
|
ILDB AC,AC+1
|
|
JSP AC-2,.+1 ;SAVE FLAGS
|
|
CAIE AC,33 ;TEST DEST WORD
|
|
ER3 AC,12301 ;INCORRECT BYTE WAS LOADED
|
|
CAME AC+1,[220600,,AC-1] ;TEST POINTER
|
|
ER4 AC+1,12301 ;POINTER WAS INCREMENTED
|
|
TLNE AC-2,BIS ;EXAMINE 'BIS'
|
|
ER13 AC-2,12301 ;'BIS' WAS NOT CLEARED
|
|
JUMPE AC+2,G12300 ;LOOP ON ERROR SWITCH
|
|
|
|
G12400: MOVE AC+1,[220600,,AC-1] ;SET-UP BYTE POINTER
|
|
MOVE AC,[707070,,707070] ;SET-UP AC
|
|
MOVE AC-1,[112233,,445566] ;SETUP BYTE WORD
|
|
JRSTF @[BIS,,.+1] ;SET 'BIS' FLAG
|
|
IDPB AC,AC+1
|
|
JSP AC-2,.+1 ;SAVE FLAGS
|
|
CAME AC+1,[220600,,AC-1] ;TEST POINTER
|
|
ER4 AC+1,12401 ;POINTER WAS INCREMENTED
|
|
CAME AC-1,[112270,,445566] ;TEST BYTE WORD
|
|
ER12 AC-1,12401 ;INCORRECT BYTE WAS DEPOSITED
|
|
TLNE AC-2,BIS ;EXAMINE 'BIS'
|
|
ER13 AC-2,12401 ;'BIS' WAS NOT CLEARED
|
|
JUMPL AC+2,G12400 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - IBP
|
|
;VERIFY THAT IBP WORKS WHEN THE POINTER IS IN AN AC
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12500: MOVSI AC-2,170600 ;SETUP POINTER
|
|
MOVSI AC-1,110600 ;RESULT FOR COMPARISON
|
|
IBP <AC-2>&17 ;*IBP SHOULD PLACE 110600,,0 INTO PTR
|
|
CAME AC-2,<AC-1>&17 ;IS PTR = 110600,,0 ?
|
|
ER5 AC-2,12501 ;POINTER FAILURE
|
|
JUMPL AC+2,G12500 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - IBP
|
|
;VERIFY THAT IBP WORKS WHEN THE POINTER IS IN CORE MEMORY
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12510: MOVSI AC-2,170600
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
MOVSI AC-2,110600 ;RESULT FOR COMPARISON
|
|
SETZ AC-1, ;INITIALIZE FOR RESULT
|
|
IBP BYTBLK ;*IBP SHOULD PLACE 110600,,0 INTO PTR
|
|
MOVE AC-1,BYTBLK
|
|
CAME AC-1,<AC-2>&17 ;IS PTR = 110600,,0 ?
|
|
ER5 AC-1,12511 ;POINTER FAILURE
|
|
JUMPL AC+2,G12510 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - DPB
|
|
;VERIFY THAT DPB WORKS WHEN BOTH POINTER AND BYTE
|
|
;ARE IN AC'S
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12600: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVE AC-3,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVEI AC,654321 ;SETUP AC
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE 230702.103700 INTO BYTE WORD
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER MODIFIED ?
|
|
ER5 AC-2,12601 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,654321 ;WAS AC MODIFIED?
|
|
ER3 AC,12602 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE DEPOSITED CORRECTLY?
|
|
ER12 AC-4,12603 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12600 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - DPB
|
|
;VERIFY THAT DPB WORKS WHEN POINTER IS IN AN AC AND
|
|
;BYTE IS IN CORE MEMORY
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12610: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,BYTBLK
|
|
MOVE AC-3,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
MOVE AC,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVEM AC,BYTBLK
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;SETUP AC
|
|
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,12611 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,654321 ;WAS AC MODIFIED?
|
|
ER3 AC,12612 ;FAILURE - AC WAS MODIFIED
|
|
MOVE AC-5,BYTBLK
|
|
CAME AC-1,BYTBLK ;WAS BYTE DEPOSITED CORRECTLY?
|
|
ER12 AC-5,12613 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12610 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - DPB
|
|
;VERIFY THAT DPB WORKS WHEN BYTE IS IN AN AC AND
|
|
;POINTER IS IN CORE MEMORY
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12620: MOVSI AC-2,170600
|
|
HRRI AC-2,<AC-4>&17 ;POINTER FOR COMPARISON
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;SETUP AC
|
|
DPB AC,BYTBLK ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
|
|
MOVE AC-3,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER MODIFIED?
|
|
ER5 AC-3,12621 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,654321 ;WAS AC MODIFIED?
|
|
ER3 AC,12622 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE DEPOSITED CORRECTLY?
|
|
ER12 AC-4,12523 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+12,G12620 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - DPB
|
|
;VERIFY THAT DPB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12630: MOVSI AC-2,170600
|
|
HRRI AC-2,BYTBLK+3 ;POINTER FOR COMPARISON
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
MOVE AC-4,[230703,,603700]
|
|
MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;SETUP AC
|
|
DPB AC,BYTBLK ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
|
|
MOVE AC-4,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER MODIFIED?
|
|
ER5 AC-4,12631 ;FAILURE - POINTER WAS MODIFIED
|
|
MOVE AC-3,BYTBLK+3
|
|
CAME AC-1,BYTBLK+3 ;WAS BYTE DEPOSITED CORRECTLY?
|
|
ER12 AC-3,12632 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
CAIE AC,654321 ;WAS AC MODIFIED?
|
|
ER3 AC,12633 ;FAILURE - AC WAS MODIFIED
|
|
JUMPL AC+2,G12630 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - IDPB
|
|
;VERIFY THAT IDPB WORKS WHEN BOTH POINTER AND BYTE
|
|
;ARE IN AC'S
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12700: MOVSI AC-2,250600 ;SETUP POINTER
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVE AC-3,<AC-2>&17
|
|
HRLI AC-3,170600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVEI AC,654321 ;SETUP AC
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
IDPB AC,<AC-2>&17 ;IDPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER INCREMENTED CORRECTLY
|
|
ER5 AC-2,12701 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY
|
|
CAIE AC,654321 ;WAS AC MODIFIED
|
|
ER3 AC,12700 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE DEPOSITED CORRECTLY?
|
|
ER12 AC-4,12703 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12700 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - IDPB
|
|
;VERIFY THAT DPB WORKS WHEN POINTER IS IN AN AC AND
|
|
;BYTE IS IN CORE MEMORY
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12710: MOVSI AC-2,250600 ;SETUP POINTER
|
|
HRRI AC-2,BYTBLK
|
|
MOVE AC-3,<AC-2>&17
|
|
HRLI AC-3,170600 ;POINTER FOR COMPARISON
|
|
MOVE AC,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVEM AC,BYTBLK
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;SETUP AC
|
|
IDPB AC,<AC-2>&17 ;IDPB SHOULD PLACE 230702,,103700 INTO
|
|
;BYTE WORD AND INCREMENT POINTER
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER INCREMENTED CORRECTED
|
|
ER12 AC-2,12713 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12710 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - IDPB
|
|
;VERIFY THAT IDPB WORKS WHEN BYTE IS IN AN AC AND
|
|
;POINTER IS IN CORE MEMORY
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12720: MOVSI AC-2,250600
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
HRLI AC-2,170600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;;SETUP AC
|
|
IDPB AC,BYTBLK ;IDPB SHOULD PLACE 230702,,103700 INTO
|
|
;BYTE WORD AND INCREMENT POINTER
|
|
MOVE AC-3,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY
|
|
ER5 AC-3,12721 ;FAILURE - POINTER WAS NOT INCREMENTED CORRECTLY
|
|
CAIE AC,654321 ;WAS AC MODIFIED?
|
|
ER3 AC,12722 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE DEPOSITED CORRECTLY
|
|
ER12 AC-4,12723 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12720 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - IDPB
|
|
;VERIFY THAT IDPB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12730: MOVSI AC-2,250600
|
|
HRRI AC-2,BYTBLK+3
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
HRLI AC-2,170600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700]
|
|
MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD
|
|
MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON
|
|
MOVEI AC,654321 ;SETUP AC
|
|
IDPB AC,BYTBLK ;IDPB SHOULD PLACE 230702,,103700 INTO
|
|
;BYTE WORD AND INCREMENT POINTER
|
|
MOVE AC-4,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER MODIFIED?
|
|
ER5 AC-4,12731 ;FAILURE - POINTER WAS MODIFIED
|
|
MOVE AC-3,BYTBLK+3
|
|
CAME AC-1,BYTBLK+3 ;WAS BYTE DEPOSITED CORRECTLY
|
|
ER12 AC-3,12732 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
CAIE AC,654321 ;WAS AC MODIFIED
|
|
ER3 AC,12733 ;FAILURE - AC WAS MODIFIED
|
|
JUMPL AC+2,G12730 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - LDB
|
|
;VERIFY THAT LDB WORKS WHEN BOTH POINTER AND BYTE
|
|
;ARE IN AC'S
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13000: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVE AC-3,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP AC
|
|
MOVE AC-1,<AC-4>&17 ;BYTE WORD FOR COMPARISON
|
|
LDB AC,<AC-2>&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,13001 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,36 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13002 ;FAILURE - BYTE NOT LOADED CORRECTLY.
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE WORD MODIFIED
|
|
ER12 AC-4,13003 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13000 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - LDB
|
|
;VERIFY THAT LDB WORKS WHEN POINTER IS IN AN AC AND
|
|
;BYTE IS IN CORE MEMORY
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13010: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,BYTBLK
|
|
MOVE AC-3,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON
|
|
MOVEM AC-1,BYTBLK ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP AC
|
|
LDB AC,<AC-2>&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,13011 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,36 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13012 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
MOVE AC-5,BYTBLK
|
|
CAME AC-1,BYTBLK ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-5,13013 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13010 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - LDB
|
|
;VERIFY THAT LDB WORKS WHEN BYTE IS IN AN AC AND
|
|
;POINTER IS IN CORE MEMORY.
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13020: MOVSI AC-2,170600
|
|
HRRI AC-2,<AC-4>&17 ;POINTER FOR COMPARISON
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON
|
|
SETZ AC, ;SETUP AC
|
|
LDB AC,BYTBLK ;LDB SHOULD PLACE 20,,36 INTO THE AC
|
|
MOVE AC-3,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER MODIFIED?
|
|
ER5 AC-3,13021 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC,36 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13022 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13023 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13020 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - LDB
|
|
;VERIFY THAT LDB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY.
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13030: MOVSI AC-2,170600
|
|
HRRI AC-2,BYTBLK+3 ;POINTER FOR COMPARISON
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
MOVE AC-4,[230703,,603700]
|
|
MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD
|
|
MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON
|
|
SETZ AC, ;SETUP AC
|
|
LDB AC,BYTBLK ;LDB SHOULD PLACE 20,,36 INTO THE AC
|
|
MOVE AC-4,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER MODIFIED?
|
|
ER5 AC-4,13031 ;FAILURE - POINTER WAS MODIFIED
|
|
MOVE AC-3,BYTBLK+3
|
|
CAME AC-1,BYTBLK+3 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-3,13032 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
CAIE AC,36 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13033 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
JUMPL AC+2,G13030 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - ILDB
|
|
;VERIFY THAT ILDB WORKS WHEN BOTH POINTER AND BYTE
|
|
;ARE IN AC'S.
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13100: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVE AC-3,<AC-2>&17
|
|
HRLI AC-3,110600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP AC
|
|
MOVE AC-1,<AC-4>&17 ;BYTE WORD FOR COMPARISON
|
|
ILDB AC,<AC-2>&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC
|
|
;AND INCREMENT POINTER
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER INCREMENTED CORRECTLY?
|
|
ER5 AC-2,3101 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY
|
|
CAIE AC,3 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13102 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13103 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13100 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - ILDB
|
|
;VERIFY THAT ILDB WORKS WHEN POINTER IS IN AN AC AND
|
|
;BYTE IS IN CORE MEMORY
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13110: MOVSI AC-2,170600 ;SETUP POINTER
|
|
HRRI AC-2,BYTBLK
|
|
MOVE AC-3,<AC-2>&17
|
|
HRLI AC-3,110600 ;POINTER FOR COMPARISON
|
|
MOVE AC-1,[230703,,603700] ;BYTEWORD FOR COMPARISON
|
|
MOVEM AC,BYTBLK ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP AC
|
|
ILDB AC,<AC-2>&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC
|
|
;AND INCREMENT POINTER
|
|
CAME AC-2,<AC-3>&17 ;WAS POINTER INCREMENTED CORRECTLY?
|
|
ER5 AC-2,13111 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY
|
|
CAIE AC,3 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13012 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
MOVE AC-5,BYTBLK
|
|
CAME AC-1,BYTBLK ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-5,13113 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13110 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - ILDB
|
|
;VERIFY THAT ILDB WORKS WHEN BYTE IS IN AN AC AND
|
|
;POINTER IS IN CORE MEMORY
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13120: MOVSI AC-2,170600
|
|
HRRI AC-2,<AC-4>&17
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
HRLI AC-2,110600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
|
|
MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON
|
|
SETZ AC ;SETUP AC
|
|
ILDB AC,BYTBLK ;ILDB SHOULD PLACE 0,,3 INTO THE AC
|
|
;AND INCREMENT POINTER
|
|
MOVE AC-3,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY?
|
|
ER5 AC-3,13121 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY
|
|
CAIE AC,3 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13122 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
CAME AC-4,<AC-1>&17 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13123 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13120 ;LOOP ON ERROR SWITCH
|
|
|
|
;MSCL BYTE TESTS - ILDB
|
|
;VERIFY THAT ILDB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13130: MOVSI AC-2,170600
|
|
HRRI AC-2,BYTBLK+3
|
|
MOVEM AC-2,BYTBLK ;SETUP POINTER
|
|
HRLI AC-2,110600 ;POINTER FOR COMPARISON
|
|
MOVE AC-4,[230703,,603700]
|
|
MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD
|
|
MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON
|
|
SETZ AC, ;SETUP AC
|
|
ILDB AC,BYTBLK ;ILDB SHOULD PLACE 0,,3 INTO THE AC
|
|
;AND INCREMENT THE POINTER
|
|
MOVE AC-4,BYTBLK
|
|
CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY?
|
|
ER5 AC-4,13131 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY
|
|
MOVE AC-3,BYTBLK+3
|
|
CAME AC-1,BYTBLK+3 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-3,13132 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
CAIE AC,3 ;WAS BYTE LOADED CORRECTLY?
|
|
ER3 AC,13133 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
JUMPL AC+2,G13130 ;LOOP ON ERROR SWITCH
|
|
;TEST LDB WHEN SIZE OF BYTE IS ZERO BITS
|
|
;THE AC SHOULD BE CLEARED
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13200: MOVEI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
SETO AC, ;SETUP AC
|
|
HRRZI AC-4,10 ;SETUP BYTE WORD
|
|
LDB AC,<AC-4>&17 ;LDB SHOULD CLEAR THE AC
|
|
CAIE AC,0 ;WAS AC CLEARED?
|
|
ER3 AC,13201 ;FAILURE - AC WAS NOT CLEARED
|
|
CAIE AC-2,<AC-4>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,13202 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC-4,10 ;WAS BYTE WORD MODIFIED
|
|
ER12 AC-4,13203 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13200 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST ILDB WHEN SIZE OF BYTE IS ZERO BITS
|
|
;THE AC SHOULD BE CLEARED
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13210: MOVEI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
SETO AC, ;SETUP AC
|
|
HRRZI AC-4,10 ;SETUP BYTE WORD
|
|
ILDB AC,<AC-4>&17 ;ILDB SHOULD CLEAR THE AC
|
|
CAIE AC,0 ;WAS AC CLEARED
|
|
ER3 AC,13211 ;FAILURE - AC WAS NOT CLEARED
|
|
CAIE AC-2,<AC-4>&17 ;WAS POINTER MODIFIED
|
|
ER5 AC-2,13212 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC-4,10 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13213 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13210 ;LOOP ON ERROR SWITCH
|
|
;TEST DPB WHEN SIZE OF BYTE IS ZERO BITS
|
|
;THE AC SHOULD NOT BE AFFECTED
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13220: MOVEI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
SETO AC, ;SETUP AC
|
|
HRRZI AC-4,10 ;SETUP BYTE WORD
|
|
DPB AC,<AC-4>&17 ;DPB SHOULD NOT MODIFY ANYTHING
|
|
CAME AC,[-1] ;WAS AC MODIFIED?
|
|
ER3 AC,13221 ;FAILURE - AC WAS MODIFIED
|
|
CAIE AC-2,<AC-4>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,13222 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC-4,10 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13223 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13220 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST IDPB WHEN SIZE OF BYTE IS ZERO BITS
|
|
;TITE AC SHOULD NOT BE AFFECTED
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13230: MOVEI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
SETO AC, ;SETUP AC
|
|
HRRZI AC-4,10 ;SETUP BYTE WORD
|
|
IDPB AC,<AC-4>&17 ;IDPB SHOULD NOT MODIFY ANYTHING
|
|
CAME AC,[-1] ;WAS AC MODIFIED?
|
|
ER3 AC,13231 ;FAILURE - AC WAS MODIFIED
|
|
CAIE AC-2,<AC-4>&17 ;WAS POINTER MODIFIED
|
|
ER5 AC-2,13232 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC-4,10 ;WAS BYTE WORD MODIFIED
|
|
ER12 AC-4,13233 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13230 ;LOOP ON ERROR SWITCH
|
|
;TEST IBP WHEN SIZE OF BYTE IS ZERO BITS
|
|
;THE AC SHOULD NOT BE AFFECTED
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13240: MOVEI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
SETO AC, ;SETUP AC
|
|
HRRZI AC-4,10 ;SETUP BYTE WORD
|
|
SKIPN KLFLG
|
|
IBP AC,<AC-4>&17 ;IBP SHOULD NOT MODIFY ANYTHING
|
|
SKIPE KLFLG
|
|
IBP 0,<AC-4>&17 ;KL10, DON'T DO ADJBP !
|
|
CAME AC,[-1] ;WAS AC MODIFIED?
|
|
ER3 AC,13241 ;FAILURE - AC WAS MODIFIED
|
|
CAIE AC-2,<AC-4>&17 ;WASPOINTER MODIFIED?
|
|
ER5 AC-2,13242 ;FAILURE - POINTER WAS MODIFIED
|
|
CAIE AC-4,10 ;WAS BYTE WORD MODIFIED
|
|
ER12 AC-4,13243 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13240 ;LOOP ON ERROR SWITCH
|
|
;TEST LDB WHEN SIZE OF BYTE IS ONE BIT
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13300: MOVSI AC-2,430100
|
|
HRRI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
HRROI AC,0 ;SETUP AC
|
|
HRLZI AC-4,-1 ;SETUP BYTE WORD
|
|
MOVE AC-3,<AC-4>&17 ;BYTE OWRD FOR COMPARISON
|
|
LDB AC,<AC-2>&17 ;LDB SHOULD PLACE 0,,1 INTO THE AC
|
|
CAIE AC,1 ;LOOP ON ERROR SWITCH
|
|
ER3 AC,13301 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED?
|
|
ER5 AC-2,13302 ;FAILURE POINTER WAS MODIFIED
|
|
CAME AC-4,<AC-3>&17 ;WAS BYTE WORD MODIFIED?
|
|
ER12 AC-4,13303 ;FAILURE - BYTE OWRD WAS MODIFIED
|
|
JUMPL AC+2,G13300 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST LDB WHEN SIZE OF BYTE IS ONE BIT
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13310: MOVSI AC-2,100
|
|
HRRI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
HRROI AC,0 ;SETUP AC
|
|
HRLOI AC-4,0 ;SETUP BYTE WORD
|
|
MOVE AC-3,<AC-4>&17 ;BYTE WORD FOR COMPARISON
|
|
LDB AC,<AC-2>&17 ;LDB SHOULD PLACE 0,,1 INTO THE AC
|
|
CAIE AC,1 ;LOOP ON ERROR SWITCH
|
|
ER3 AC,13311 ;FAILURE - BYTE NOT LOADED CORRECTLY
|
|
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED
|
|
ER5 AC-2,13312 ;FAILURE - POINTER WAS MODIFIED
|
|
CAME AC-4,<AC-3>&17 ;WAS BYTE WORD MODIFIED
|
|
ER12 AC-4,13313 ;FAILURE - BYTE WORD WAS MODIFIED
|
|
JUMPL AC+2,G13310 ;LOOP ON ERROR SWITCH
|
|
;TEST DPB WHEN SIZE OF BYTE IS ONE BIT
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13320: MOVSI AC-2,430100
|
|
HRRI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
HRROI AC,76 ;SETUP AC
|
|
MOVEM AC,<AC-5>&17 ;AC FOR COMPARISON
|
|
SETO AC-4, ;SETUP BYTE WORD
|
|
MOVE AC-3,[377777,,-1] ;BYTE WORD FOR COMPARISON
|
|
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE 377777,,-1 INTO BYTE WORD
|
|
CAME AC,<AC-5>&17 ;WAS AC MODIFIED?
|
|
ER3 AC,13321 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED
|
|
ER5 AC-2,13322 ;FAILURE - POINTER WAS MODIFIED
|
|
CAME AC-4,<AC-3>&17 ;WAS BYTE DEPOSITED CORRECTLY
|
|
ER12 AC-4,13323 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G13320 ;LOOP ON ERROR SWITCH
|
|
|
|
;TEST DPB WHEN SIZE OF BYTE IS ONE BIT
|
|
|
|
AC=5
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13330: MOVSI AC-2,100
|
|
HRRI AC-2,<AC-4>&17 ;SETUP POINTER
|
|
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
|
|
HRROI AC,76 ;SETUP AC
|
|
MOVEM AC,<AC-5>&17 ;AC FOR COMPARISON
|
|
SETO AC-4, ;SETUP BYTE WORD
|
|
MOVE AC-3,[-2] ;BYTE WORD FOR COMPARISON
|
|
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE -1,,-2 INTO BYTE WORD
|
|
CAME AC,<AC-5>&17 ;WAS AC MODIFIED
|
|
ER3 AC,13331 ;FAILURE - AC WAS MODIFIED
|
|
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED
|
|
ER5 AC-2,13332 ;FAILURE - POINTER WAS MODIFIED
|
|
CAME AC-4,<AC-3>&17 ;WAS BYTE DEPOSITED CORRECTLY
|
|
ER12 AC-4,13333 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G13330 ;LOOP ON ERROR SWITCH
|
|
;TEST IBP WHEN S IS GREATER THAN P AND THE ADDRESS FIELD OF THE POINTER IS 777777
|
|
;IBP SHOULD CAUSE THE ADDRESS FIELD TO CLEAR AND P SHOULD BECOME 44-S
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G13400: HRLOI AC-2,000100 ;SETUP POINTER
|
|
HRLZI AC-3,430101 ;RESULT FOR COMPARISON (KA)
|
|
IBP <AC-2>&17 ;IBP SHOULD PLACE 430100,,0 INTO PTR
|
|
CAME AC-2,<AC-3>&17 ;PASS IF POINTER UPATED CORRECTLY
|
|
ER5 AC-2,13400 ;POINTER NOT UPDATED CORRECTLY
|
|
JUMPL AC+2,G13400 ;LOOP ON ERROR SWITCH
|
|
SUBTTL PART II - GENERAL BLOCK TRANSFER TEST
|
|
|
|
MOVEI [ASCIZ/BLT FAILED/]
|
|
MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTOR
|
|
|
|
;VERFIY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ZEROS
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND WITHIN THE AC ADDRESS RANGE.
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
SN=22100
|
|
SRCE=<AC-6>&17 ;SOURCE BLOCK=AC-6
|
|
DEST=<AC-6>&17 ;DESTINATION BLOCK=AC-6
|
|
SIZ=1 ;BLOCK SIZE = 1 OWRD
|
|
|
|
G22100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST
|
|
SETOB SRCE-1,SRCE+1 ;PRELOAD SRCE-1 AND SRCE+1 WITH ONES
|
|
SETZM SRCE ;LOAD SRCE WITH ZEROS
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD CLEAR DEST BLOCK
|
|
SN=SN+1
|
|
CAME DEST-1,[-1] ;WAS DEST-1 CLOBBERRED?
|
|
ER2 DEST-1,SN ;DEST -1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
SKIPE DEST ;DID BLT LOAD DEST FROM SRCE?
|
|
ER2 DEST,SN ;FAIL IF C(DEST) NON-ZERO
|
|
SN=SN+1
|
|
CAME DEST+1,[-1] ;WAS DEST+1 CLOBBERRED?
|
|
ER2 DEST+1,SN ;DEST +1 WAS CLOBBERRED
|
|
JUMPL AC+2,G22100 ;LOOP ON ERROR SWITCH
|
|
PAGE
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ONES
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND WITHIN THE AC ADDRESS RANGE.
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
SN=22200
|
|
SRCE=<AC-6>&17 ;SOURCE BLOCK = AC-6
|
|
DEST=<AC-6>&17 ;DESTINATION BLOCK = AC-6
|
|
SIZ=1 ;BLOCK = 1 WORD
|
|
|
|
G22200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST
|
|
SETZB SRCE-1,SRCE+1 ;PRELOAD SRCE-1 AND SRCE+1 WITH ZEROS
|
|
SETOM SRCE ;LOAD SRCE WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DEST WITH ONES
|
|
SN=SN+1
|
|
SKIPE DEST-1 ;WAS DEST-1 CLOBBERRED?
|
|
ER2 DEST-1,SN ;DEST-1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
CAME DEST,[-1] ;DID BLT LOAD DEST FROM SRCE?
|
|
ER2 DEST,SN ;FAIL IF C(DEST) NOT ALL ONES
|
|
SN=SN+1
|
|
SKIPE DEST+1 ;WAS DEST+1 CLOBBERRED?
|
|
ER2 DEST+1,SN ;DEST+1 WAS CLOBBERRED
|
|
JUMPL AC+2,G22200 ;LOOP ON ERROR SWITCH
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF DATA
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND WITHIN THE AC ADDRESS RANGE.
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
SN=22300
|
|
SRCE=<AC-6>&17 ;SOURCE BLOCK = AC-6
|
|
DEST=<AC-6>&17 ;DESTINATION BLOCK = AC-6
|
|
SIZ=1 ;BLOCK SIZE = 1 WORD
|
|
|
|
G22300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF ARCE AND DEST
|
|
SETZB SRCE-1,SRCE+1 ;CLEAR SRCE-1 AND SRCE+1
|
|
MOVE SRCE,[230703,,603700] ;PRELOAD SOURCE BLOCK
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD PLACE C(SRCE) INTO DEST
|
|
SN=SN+1
|
|
SKIPE DEST-1 ;WAS DEST-1 CLOBBERRED?
|
|
ER2 DEST-1,SN ;DEST-1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
CAME DEST,[230703,,603700] ;DID BLT LOAD DEST FROM SRCE
|
|
ER2 DEST,SN ;FAIL IF C(DEST) NOT 230703,,603700
|
|
SN=SN+1
|
|
SKIPE DEST+1 ;WAS DEST+1 CLOBBERRED?
|
|
ER2 DEST+1,SN ;DEST+1 WAS CLOBBERRED
|
|
JUMPL AC+2,G22300 ;LOOP ON ERROR SWITCH
|
|
PAGE
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ZEROS
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND BEYOND THE AC ADDRESS RANGE.
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
SN=22400
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1
|
|
DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1
|
|
SIZ=1 ;BLOCK SIZE = 1 WORD
|
|
|
|
G22400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST
|
|
SETOM SRCE-1 ;PRELOAD SRCE-1 WITH ONES
|
|
SETZM SRCE ;LOAD SRCE WITH ZEROS
|
|
SETOM SRCE+1 ;PRELOAD SRCE+1 WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD CLEAR DEST BLOCK
|
|
SN=SN+1
|
|
MOVE AC-1,DEST-1
|
|
CAME AC-1,[-1] ;WAS DEST-1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
MOVE AC-1,DEST
|
|
SKIPE AC-1 ;DID BLT LOAD DEST FROM SRCE?
|
|
ER2 AC-1,SN ;FAIL IF C(DEST) NOT ZERO
|
|
SN=SN+1
|
|
MOVE AC-1,DEST+1
|
|
CAME AC-1,[-1] ;WAS DEST+1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED
|
|
JUMPL AC+1,G22400 ;LOOP ON ERROR SWITCH
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ONES
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND BEYOND THE AC ADDRESS RANGE.
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
SN=22500
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1
|
|
DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1
|
|
SIZ=1 ;BLOCK SIZE = 1 WORD
|
|
|
|
G22500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST
|
|
SETZM SRCE-1 ;PRELOAD SRCE-1 WITH ZEROS
|
|
SETOM SRCE ;LOAD SRCE WITH ONES
|
|
SETZM SRCE+1 ;PRELOAD SRCE+1 WITH ZEROS
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DEST BLOCK WITH ONES
|
|
SN=SN+1
|
|
MOVE AC-1,DEST-1
|
|
SKIPE AC-1 ;WAS DEST-1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
MOVE AC-1,DEST
|
|
CAME AC-1,[-1] ;DID BLT LOAD DEST FROM SRCE?
|
|
ER2 AC-1,SN ;FAIL IF C(DEST) NOT ALL ONES
|
|
SN=SN+1
|
|
MOVE AC-1,DEST+1
|
|
SKIPE AC-1 ;WAS DEST+1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED
|
|
JUMPL AC+2,G22500 ;LOOP ON ERROR SWITCH
|
|
PAGE
|
|
;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF DATA
|
|
;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME
|
|
;AND BEYOND THE AC ADDRESS RANGE.
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
SN=22600
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1
|
|
DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1
|
|
SIZ=1 ;BLOCK SIZE = 1 WORD
|
|
|
|
G22600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST
|
|
SETZM SRCE-1 ;PRELOAD SRCE-1 WITH ZEROS
|
|
MOVE AC+1,[230703,,603700] ;LOAD SRCE BLOCK
|
|
MOVEM AC+1,SRCE
|
|
SETZM SRCE+1 ;PRELOAD SRCE+1 WITH ZEROS
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD PLACE C(SRCE) INTO DEST
|
|
SN=SN+1
|
|
MOVE AC-1,DEST-1
|
|
SKIPE AC-1 ;WAS DEST-1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED
|
|
SN=SN+1
|
|
MOVE AC-1,DEST
|
|
CAME AC-1,[230703,,603700] ;DID BLT LOAD DEST FROM SRCE?
|
|
ER2 AC-1,SN ;FAIL IF C(DEST) NOT 230703,,603700
|
|
SN=SN+1
|
|
MOVE AC-1,DEST+1
|
|
SKIPE AC-1 ;WAS DEST+1 CLOBBERRED?
|
|
ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED
|
|
JUMPL AC+1,G22600 ;LOOP ON ERROR SWITCH
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES.
|
|
|
|
BLTM1 (22700,14,<<AC-6>&17>,<<AC-3>&17>,0)
|
|
PAGE
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES.
|
|
|
|
BLTM1 (23000,13,<<AC-6>&17>,<<AC-3>&17>,-1)
|
|
PAGE
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES.
|
|
|
|
BLTM1 (23100,12,<<AC-6>&17>,<<AC-3>&17>,<230703,,603700>)
|
|
PAGE
|
|
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
|
|
|
|
BLTM1 (23200,14,<<AC-6>&17>,<BLTBLK+4>,0)
|
|
PAGE
|
|
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
|
|
|
|
BLTM1 (23300,13,<<AC-6>&17>,<BLTBLK+4>,-1)
|
|
PAGE
|
|
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
|
|
|
|
BLTM1 (23400,12,<<AC-6>&17>,<BLTBLK+4>,<230703,,603700>)
|
|
PAGE
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
|
|
|
|
BLTM1 (23500,11,<BLTBLK+1>,<BLTBLK+4>,0)
|
|
PAGE
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
|
|
|
|
BLTM1 (23600,10,<BLTBLK+1>,<BLTBLK+4>,-1)
|
|
PAGE
|
|
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
|
|
|
|
BLTM1 (23700,7,<BLTBLK+1>,<BLTBLK+4>,<230703,,603700>)
|
|
PAGE
|
|
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
|
|
|
|
BLTM1 (24000,14,<BLTBLK+1>,<<AC-6>&17>,0)
|
|
PAGE
|
|
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
|
|
|
|
BLTM1 (24100,13,<BLTBLK+1>,<<AC-6>&17>,-1)
|
|
PAGE
|
|
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
|
|
|
|
BLTM1 (24200,12,<BLTBLK+1>,<<AC-6>&17>,<230703,,603700>)
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- AC RANGE - ZEROS
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=20100
|
|
SRCE=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
|
|
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF SOURCE
|
|
;AND DESTINATION BLOCKS
|
|
SETOB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF
|
|
;SOURCE BLOCK +1 WITH ONES
|
|
SETZB SRCE,SRCE+1 ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH ZEROS
|
|
SETZB SRCE+2,SRCE+3
|
|
SETZM SRCE+4
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
SKIPE DEST ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
SKIPE DEST+1 ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
SKIPE DEST+2 ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
SKIPE DEST+3 ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
SKIPE DEST+4 ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G20100 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- AC RANGE - ONES
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=20200
|
|
SRCE=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
|
|
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF SOURCE
|
|
;AND DESTINATION BLOCKS
|
|
SETZB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF SOURCE
|
|
;BLOCK +1 WITH ZEROS
|
|
SETOB SRCE,SRCE+1 ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH ONES
|
|
SETOB SRCE+2,SRCE+3
|
|
SETOM SRCE+4
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
SKIPE DEST-1 ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
CAME DEST,[-1,,-1] ;WAS FIRST WORD OF DESTINATION BLOCK LOAED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[-1,,-1] ;WAS SECOND WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[-1,,-1] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+3,[-1,,-1] ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[-1,,-1] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
SKIPE DEST+SIZ ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G20200 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- AC RANGE - SINGLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=20300
|
|
SRCE=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
|
|
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETOB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF SOURCE
|
|
;BLOCK +1 WITH ONES
|
|
MOVE SRCE,[230703,,603700] ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH
|
|
;230703,,603700
|
|
MOVE SRCE+1,[230703,,603700]
|
|
MOVE SRCE+2,[230703,,603700]
|
|
MOVE SRCE+3,[230703,,603700]
|
|
MOVE SRCE+4,[230703,,603700]
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
CAME DEST,[230703,,603700] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[230703,,603700] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[230703,,603700] ;WAS THIRD WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+3,[230703,,603700] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[230703,,603700] ;WAS FIFTH WORD OF DESTINATION BLOCK
|
|
;NOT LOADED CORRECTLY FROM SOURCE
|
|
ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G20300 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=20400
|
|
SRCE=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
|
|
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD
|
|
;OF SOURCE BLOCK WITH 230703,,603700
|
|
MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH
|
|
;252525,,252525
|
|
MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK
|
|
;WITH 070707,,070707
|
|
MOVE SRCE+3,[036074,,170360] ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170360
|
|
MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK
|
|
;WITH 017407,,603701
|
|
MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD
|
|
;OF SOURCE BLOCK WITH 007603,,607062
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
CAME DEST-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+3,[036074,,170360] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G20400 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- NON-AC RANGE - ZEROS
|
|
|
|
AC=13
|
|
SAVEAC (1,1)
|
|
|
|
SN=20500
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETOM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH ONES
|
|
SETZM SRCE ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK WITH
|
|
;ZEROS
|
|
SETZM SRCE+1
|
|
SETZM SRCE+2
|
|
SETZM SRCE+3
|
|
SETZM SRCE+4
|
|
SETOM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
MOVE AC-2,DEST-1
|
|
CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
SKIPE <AC-2>&17 ;WAS FIRST WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
SKIPE <AC-2>&17 ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
SKIPE <AC-2>&17 ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
SKIPE <AC-2>&17 ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
SKIPE <AC-2>&17 ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G20500 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- NON-AC RANGE - ONES
|
|
|
|
AC=12
|
|
SAVEAC (1,1)
|
|
|
|
SN=20600
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETZM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH ZEROS
|
|
SETOM SRCE ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK WITH
|
|
;ONES
|
|
SETOM SRCE+1
|
|
SETOM SRCE+2
|
|
SETOM SRCE+3
|
|
SETOM SRCE+4
|
|
SETZM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH ZEROS
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
MOVE AC-2,DEST-1
|
|
SKIPE <AC-2>&17 ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
CAME AC-2,[-1,,-1] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
CAME AC-2,[-1,,-1] ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
CAME AC-2,[-1,,-1] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
CAME AC-2,[-1,,-1] ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
CAME AC-2,[-1,,-1] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY
|
|
;FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
SKIPE <AC-2>&17 ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G20600 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- NON-AC RANGE - SINGLE PATTERN
|
|
|
|
AC=11
|
|
SAVEAC (1,1)
|
|
|
|
SN=20700
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G20700: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETOM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH ONES
|
|
MOVE [230703,,603700]
|
|
MOVEM SRCE ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH 230703,,603700
|
|
MOVEM SRCE+1
|
|
MOVEM SRCE+2
|
|
MOVEM SRCE+3
|
|
MOVEM SRCE+4
|
|
SETOM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
MOVE AC-2,DEST-1
|
|
CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
CAME AC-2,[230703,,603700] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
CAME AC-2,[230703,,603700] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
CAME AC-2,[230703,,603700] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
CAME AC-2,[230703,,603700] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FOURTH WORD OF DESTINATION BLOCK NOT LOADED CORRECTLY
|
|
;FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
CAME AC-2,[230703,,603700] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 AC+2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G20700 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS
|
|
;- NON-AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
|
|
SN=21000
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G21000: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE [230703,,603700]
|
|
MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH 230703,,603700
|
|
MOVE [252525,,252525]
|
|
MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525
|
|
MOVE [146314,,631463]
|
|
MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE [070707,,070707]
|
|
MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707
|
|
MOVE [036074,,170360]
|
|
MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170360
|
|
MOVE [017407,,603701]
|
|
MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701
|
|
MOVE [007603,,607062]
|
|
MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH 007603,,607062
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
MOVE AC-2,DEST-1
|
|
CAME AC-2,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
CAME AC-2,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
CAME AC-2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
CAME AC-2,[036074,,170360] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
CAME AC-2,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
CAME AC-2,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G21000 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS MINUS ONE - AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=21100
|
|
SRCE=<AC-12>&17 ;SOURCE BLOCK STARTING ADDRESS= <AC-12>&17
|
|
DEST=<AC-13>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-13>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G21100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETOM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WITH ONES
|
|
MOVE DEST,[230703,,603700] ;PRELOAD FIRST WORD OF DESTINATION BLOCK
|
|
;WITH 230703,,603700
|
|
MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH
|
|
;252525,,252525
|
|
MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK
|
|
;WITH 070707,,070707
|
|
MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK
|
|
;WITH 017407,,603701
|
|
MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD
|
|
;OF SOURCE BLOCK WITH 007603,,607062
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
|
|
SN=SN+1
|
|
CAME DEST+3,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION
|
|
;BLOCK LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[017407,,603701] ;WAS LAST WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[017407,,603701] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 SRCE+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G21100 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS MINUS ONE - NON-AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=6
|
|
SAVEAC (1,1)
|
|
|
|
SN=21200
|
|
SRCE=BLTBLK+2 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+2
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS= BLTBLK+1
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G21200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
SETOM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WITH ONES
|
|
MOVE [230703,,603700]
|
|
MOVEM DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK
|
|
;WITH 230703,,603700
|
|
MOVE [252525,,252525]
|
|
MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525
|
|
MOVE [146314,,631463]
|
|
MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE [070707,,070707]
|
|
MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707
|
|
MOVE [036074,,170630]
|
|
MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE [017407,,603701]
|
|
MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701
|
|
MOVE [007603,,607062]
|
|
MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH 007603,,607062
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS MINUS ONE - NON-AC RANGE - MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
MOVE AC-2,DEST-1
|
|
CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
CAME AC-2,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
CAME AC-2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
CAME AC-2,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
CAME AC-2,[017407,,603701] ;WAS LAST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
CAME AC-2,[017407,,603701] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC-2,SRCE+SIZ
|
|
CAME AC-2,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK WAS
|
|
;CLOBBERED
|
|
JUMPL AC+2,G21200 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS PLUS ONE - AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=21300
|
|
SRCE=<AC-13>&17 ;SOURCE BLOCK STARTING ADDRESS= <AC-13>&17
|
|
DEST=<AC-12>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-12>&17
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G21300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD
|
|
;OF SOURCE BLOCK WITH 230703,,603700
|
|
MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH
|
|
;252525,,252525
|
|
MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK
|
|
;WITH 070707,,070707
|
|
MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK
|
|
;WITH 017407,,603701
|
|
MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD
|
|
;OF SOURCE BLOCK WITH 007603,,607062
|
|
SETOM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
SN=SN+1
|
|
CAME SRCE-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 SRCE-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED
|
|
ER2 SRCE,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[252525,,252525] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[252525,,252525] ;WAS THIRD WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+3,[252525,,252525] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[252525,,252525] ;WAS LAST WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G21300 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS PLUS ONE - NON-AC RANGE - MULTIPLE PATTERN
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
|
|
SN=21400
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+1
|
|
DEST=BLTBLK+2 ;DESTINATION BLOCK STARTING ADDRESS= BLTBLK+2
|
|
SIZ=5 ;BLOCK SIZE=5 WORDS
|
|
|
|
G21400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE [230703,,603700]
|
|
MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH 23703,,603700
|
|
MOVE [252525,,252525]
|
|
MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525
|
|
MOVE [146314,,146314]
|
|
MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE [070707,,070707]
|
|
MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707
|
|
MOVE [036074,,170630]
|
|
MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE [017407,,603701]
|
|
MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701
|
|
MOVE [007603,,607062]
|
|
MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH 007603,,607062
|
|
SETOM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WITH ONES
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING
|
|
;ADDRESS PLUS ONE - NON-AC RANGE - MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
MOVE AC-2,SRCE-1
|
|
CAME AC-2,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC-2,SRCE
|
|
CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC-2,DEST
|
|
CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+1
|
|
CAME AC-2,[252525,,252525] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+2
|
|
CAME AC-2,[252525,,252525] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+3
|
|
CAME AC-2,[252525,,252525] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+4
|
|
CAME AC-2,[252525,,252525] ;WAS LAST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC-2,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC-2,DEST+SIZ
|
|
CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;CLOBBERED?
|
|
ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G21400 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS NON-AC ADDRESS- MULTIPLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=21500
|
|
SRCE=<AC-13>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-13>&17
|
|
DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1
|
|
SIZ=^D10 ;BLOCK SIZE=10 WORDS
|
|
|
|
G21500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD
|
|
;OF SOURCE BLOCK WITH 230703,,603700
|
|
MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH
|
|
;252525,,252525
|
|
MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK
|
|
;WITH 070707,,070707
|
|
MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK
|
|
;WITH 017407,,603701
|
|
MOVE SRCE+5,[007700,,770077] ;PRELOAD SIXTH WORD OF SOURCE BLOCK
|
|
;WITH 007700,,770077
|
|
MOVE SRCE+6,[003760,,077401] ;PRELOAD SEVENTH WORD OF SOURCE BLOCK
|
|
;WITH 003760,,077401
|
|
MOVE SRCE+7,[001774,,007760] ;PRELOAD EIGHTH WORD OF SOURCE BLOCK
|
|
;WITH 001774,,007760
|
|
MOVE SRCE+^D8,[000777,,000777] ;PRELOAD NINTH WORD OF SOURCE BLOCK
|
|
;WITH 000777,,000777
|
|
MOVE SRCE+^D9,[000377,,600077] ;PRELOAD TENTH WORD OF SOURCE BLOCK
|
|
;WITH 000377,,600077
|
|
MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD
|
|
;OF SOURCE BLOCK WITH 007603,,607062
|
|
MOVEM GSVAC0#
|
|
HRROI DEST-1
|
|
MOVEM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WITH DEST-1
|
|
HRROI DEST
|
|
MOVEM DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK WITH DEST
|
|
HRROI DEST+1
|
|
MOVEM DEST+1 ;PRELOAD SECOND WORD OF DESTINATION BLOCK WITH DEST+1
|
|
HRROI DEST+2
|
|
MOVEM DEST+2 ;PRELOAD THIRD WORD OF DESTINATION BLOCK WITH DEST+2
|
|
HRROI DEST+3
|
|
MOVEM DEST+3 ;PRELOAD FOURTH WORD OF DESTINATION BLOCK WITH DEST+3
|
|
HRROI DEST+4
|
|
MOVEM DEST+4 ;PRELOAD FIFTH WORD OF DESTINATION BLOCK WITH DEST+4
|
|
HRROI DEST+5
|
|
MOVEM DEST+5 ;PRELOAD SIXTH WORD OF DESTINATION BLOCK WITH DEST+5
|
|
HRROI DEST+6
|
|
MOVEM DEST+6 ;PRELOAD SEVENTH WORD OF DESTINATION BLOCK WITH DEST+6
|
|
HRROI DEST+7
|
|
MOVEM DEST+7 ;PRELOAD EIGHTH WORD OF DESTINATION BLOCK WITH DEST+7
|
|
HRROI DEST+^D8
|
|
MOVEM DEST+^D8 ;PRELOAD NINTH WORD OF DESTINATION BLOCK WITH DEST+8
|
|
HRROI DEST+^D9
|
|
MOVEM DEST+^D9 ;PRELOAD TENTH WORD OF DESTINATION BLOCK WITH DEST+9
|
|
HRROI DEST+SIZ
|
|
MOVEM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WITH DEST+SIZ
|
|
MOVE GSVAC0
|
|
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS NON-AC ADDRESS- MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
CAME SRCE-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 SRCE-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED
|
|
ER2 SRCE,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+1,[146314,,631463] ;WAS SECOND WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+1,SN ;FAIL IF SECOND WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+2,[070707,,070707] ;WAS THIRD WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+2,SN ;FAIL IF THIRD WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+3,[036074,,170630] ;WAS FOURTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+3,SN ;FAIL IF FOURTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+4,[017407,,603701] ;WAS FIFTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+4,SN ;FAIL IF FIFTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+5,[007700,,770077] ;WAS SIXTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+5,SN ;FAIL IF SIXTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+6,[003760,,077401] ;WAS SEVENTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+6,SN ;FAIL IF SEVENTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+7,[001774,,007760] ;WAS EIGHTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+7,SN ;FAIL IF EIGHTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+^D8,[000777,,000777] ;WAS NINTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+^D8,SN ;FAIL IF NINTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+^D9,[000377,,600077] ;WAS LAST WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 SRCE+^D9,SN ;FAIL IF LAST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
CAME SRCE+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 SRCE+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS NON-AC ADDRESS- MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
MOVE AC+1,DEST-1
|
|
CAME AC+1,[-1,,DEST-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
MOVE AC+1,DEST
|
|
CAME AC+1,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+1
|
|
CAME AC+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+2
|
|
CAME AC+1,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+3
|
|
CAME AC+1,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+4
|
|
CAME AC+1,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+5
|
|
CAME AC+1,[007700,,770077] ;WAS SIXTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF SIXTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+6
|
|
CAME AC+1,[003760,,077401] ;WAS SEVENTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF SEVENTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+7
|
|
CAME AC+1,[001774,,007760] ;WAS EIGHTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF EIGHTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+^D8
|
|
CAME AC+1,[000777,,000777] ;WAS NINTH WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF NINTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+^D9
|
|
CAME AC+1,[000377,,600077] ;WAS LAST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 AC+1,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
MOVE AC+1,DEST+SIZ
|
|
CAME AC+1,[-1,,DEST+SIZ] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK
|
|
;WAS CLOBBERED
|
|
JUMPL AC+2,G21500 ;LOOP ON ERROR SWITCH
|
|
;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS AC ADDRESS - MULTIPLE PATTERN
|
|
|
|
AC=14
|
|
SAVEAC (1,1)
|
|
|
|
SN=21600
|
|
SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+1
|
|
DEST=<AC-13>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-13>&17
|
|
SIZ=^D10 ;BLOCK SIZE=10 WORDS
|
|
|
|
G21600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF
|
|
;SOURCE AND DESTINATION BLOCKS
|
|
MOVE [230703,,603700]
|
|
MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WITH 230703,,603700
|
|
MOVE [252525,,252525]
|
|
MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525
|
|
MOVE [146314,,631463]
|
|
MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK
|
|
;WITH 146314,,631463
|
|
MOVE [070707,,070707]
|
|
MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707
|
|
MOVE [036074,,170630]
|
|
MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK
|
|
;WITH 036074,,170630
|
|
MOVE [017407,,603701]
|
|
MOVEM SRCE+4 ;PRELOAD
|
|
;FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701
|
|
MOVE [007700,,770077]
|
|
MOVEM SRCE+5 ;PRELOAD SIXTH WORD OF SOURCE BLOCK WITH 007700,,770077
|
|
MOVE [003760,,077401]
|
|
MOVEM SRCE+6 ;PRELOAD SEVENTH WORD OF SOURCE BLOCK
|
|
;WITH 003760,,077401
|
|
MOVE [001774,,007760]
|
|
MOVEM SRCE+7 ;PRELOAD EIGHTH WORD OF SOURCE BLOCK
|
|
;WITH 001774,,007760
|
|
MOVE [000777,,000777]
|
|
MOVEM SRCE+^D8 ;PRELOAD NINTH WORD OF SOURCE BLOCK WITH 000777,,000777
|
|
MOVE [000377,,600077]
|
|
MOVEM SRCE+^D9 ;PRELOAD TENTH WORD OF SOURCE BLOCK WITH 000377,,600077
|
|
MOVE [007603,,607062]
|
|
MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK
|
|
;WITH 007603,,607062
|
|
HRROI DEST-1,DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WITH DEST-1
|
|
HRROI DEST,DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK WITH DEST
|
|
HRROI DEST+1,DEST+1 ;PRELOAD SECOND WORD OF DESTINATION BLOCK
|
|
;WITH DEST+1,DEST+1
|
|
HRROI DEST+2,DEST+2 ;PRELOAD THIRD WORD OF DESTINATION BLOCK WITH DEST+2
|
|
HRROI DEST+3,DEST+3 ;PRELOAD FOURTH WORD OF DESTINATION BLOCK WITH DEST+3
|
|
HRROI DEST+4,DEST+4 ;PRELOAD FIFTH WORD OF DESTINATION BLOCK WITH DEST+4
|
|
HRROI DEST+5,DEST+5 ;PRELOAD SIXTH WORD OF DESTINATION BLOCK WITH DEST+5
|
|
HRROI DEST+6,DEST+6 ;PRELOAD SEVENTH WORD OF DESTINATION BLOCK WITH DEST+6
|
|
HRROI DEST+7,DEST+7 ;PRELOAD EIGHTH WORD OF DESTINATION BLOCK WITH DEST+7
|
|
HRROI DEST+^D8,DEST+^D8 ;PRELOAD NINTH WORD OF DESTINATION BLOCK WITH DEST+8
|
|
HRROI DEST+^D9,DEST+^D9 ;PRELOAD TENTH WORD OF DESTINATION BLOCK WITH DEST+9
|
|
HRROI DEST+SIZ,DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WITH DEST+SIZ
|
|
BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK
|
|
;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS AC ADDRESS - MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE-1
|
|
CAME AC+1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK
|
|
;WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE
|
|
CAME AC+1,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED
|
|
ER2 AC+1,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+1
|
|
CAME AC+1,[146314,,631463] ;WAS SECOND WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF SECOND WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+2
|
|
CAME AC+1,[070707,,070707] ;WAS THIRD WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF THIRD WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+3
|
|
CAME AC+1,[036074,,170630] ;WAS FOURTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF FOURTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+4
|
|
CAME AC+1,[017407,,603701] ;WAS FIFTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF FIFTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+5
|
|
CAME AC+1,[007700,,770077] ;WAS SIXTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF SIXTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+6
|
|
CAME AC+1,[003760,,077401] ;WAS SEVENTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF SEVENTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+7
|
|
CAME AC+1,[001774,,007760] ;WAS EIGHTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF EIGTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+^D8
|
|
CAME AC+1,[000777,,000777] ;WAS NINTH WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF NINTH WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+^D9
|
|
CAME AC+1,[000377,,600077] ;WAS LAST WORD OF SOURCE BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF LAST WORD OF SOURCE BLOCK WAS CLOBBERED
|
|
SN=SN+1
|
|
MOVE AC+1,SRCE+SIZ
|
|
CAME AC+1,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE
|
|
;BLOCK CLOBBERED?
|
|
ER2 AC+1,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK WAS
|
|
;CLOBBERED
|
|
;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK
|
|
;HAS AC ADDRESS - MULTIPLE PATTERN (CONTINUED)
|
|
|
|
SN=SN+1
|
|
CAME DEST-1,[-1,,DEST-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED?
|
|
SN=SN+1
|
|
CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED
|
|
;CORRECTLY FROM SOURCE?
|
|
ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+3,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+4,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+5,[007700,,770077] ;WAS SIXTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+5,SN ;FAIL IF SIXTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+6,[003760,,077401] ;WAS SEVENTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+6,SN ;FAIL IF SEVENTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+7,[001774,,007760] ;WAS EIGHTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+7,SN ;FAIL IF EIGHTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+^D8,[000777,,000777] ;WAS NINTH WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+^D8,SN ;FAIL IF NINTH WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+^D9,[000377,,600077] ;WAS LAST WORD OF DESTINATION BLOCK
|
|
;LOADED CORRECTLY FROM SOURCE?
|
|
ER2 DEST+^D9,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED
|
|
;CORRECTLY FROM SOURCE
|
|
SN=SN+1
|
|
CAME DEST+SIZ,[-1,,DEST+SIZ] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK CLOBBERED?
|
|
ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION
|
|
;BLOCK WAS CLOBBERED
|
|
JUMPL AC+2,G21600 ;LOOP ON ERROR SWITCH
|
|
;TEST BLT WITH 'E' LESS THAN RH(AC)
|
|
;SUCH THAT THE BLT INSTR. TRANSFERS ONLY ONE WORD, THEN STOPS.
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
SN=21700
|
|
|
|
BLTSRC=END+2
|
|
BLTDST=END+6
|
|
|
|
G21700: MOVE AC,[252525,,252525] ; PRELOAD FOR SRC-1
|
|
MOVEM AC,BLTSRC-1
|
|
MOVE AC,[707070,,707070] ; PRELOAD FOR SRC
|
|
MOVEM AC,BLTSRC
|
|
MOVE AC,[525252,,525252] ;PRELOAD FOR SRC+1
|
|
MOVEM AC,BLTSRC+1
|
|
MOVE AC,[123456,,654321] ;PRELOAD FOR DST-1
|
|
MOVEM AC,BLTDST-1
|
|
MOVE AC,[070707,,070707] ;PRELOAD FOR DST
|
|
MOVEM AC,BLTDST
|
|
MOVE AC,[112233,,445566] ;PRELOAD FOR DST+1
|
|
MOVEM AC,BLTDST+1
|
|
|
|
MOVE AC,[BLTSRC,,BLTDST] ;SETUP BLT PTR=FROM,,TO
|
|
BLT AC,BLTDST-1 ;*BLT SHOULD XFER ONE WORD AND STOP
|
|
|
|
SN=SN+1
|
|
CAME AC,[BLTSRC,,BLTDST] ;SEE IF PTR CHANGED
|
|
ER2 AC,SN ;YES, REPORT
|
|
SN=SN+1
|
|
MOVE AC,[252525,,252525] ;GET PRELOAD FOR SRC-1
|
|
CAME AC,BLTSRC-1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ERROR
|
|
SN=SN+1
|
|
MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC
|
|
CAME AC,BLTSRC ;SEE IF SRC OK
|
|
ER2 AC,SN ; REPORT ERR
|
|
SN=SN+1
|
|
MOVE AC,[525252,,525252] ;GET PRELOAD FOR SRC+1
|
|
CAME AC,BLTSRC+1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ER
|
|
SN=SN+1
|
|
MOVE AC,[123456,,654321] ;GET PRELOAD FOR DST-1
|
|
CAME AC,BLTDST-1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ERR
|
|
SN=SN+1
|
|
MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC***
|
|
CAME AC,BLTDST ;SEE IF IT XFERED A WORD
|
|
ER2 AC,SN ;REPORT ER
|
|
SN=SN+1
|
|
MOVE AC,[112233,,445566] ;GET PRELOAD FOR DST+1
|
|
CAME AC,BLTDST+1 ;SEE IF XFERED ONLY ONE WORD
|
|
ER2 AC,SN ;REPORT ERR
|
|
|
|
JUMPL AC+2,G21700 ;LOOP ON ERROR SWITCH
|
|
SUBTTL PART III - GENERAL JFFO TEST
|
|
|
|
;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0
|
|
|
|
G30000: SN=30100
|
|
AC=-1
|
|
|
|
MOVEI [ASCIZ/JFFO NO-JUMP FAILED/]
|
|
MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTOR
|
|
|
|
G30100: REPEAT ^D13,<
|
|
;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0.
|
|
;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC.
|
|
|
|
SN=SN+1
|
|
AC=<AC+1>&17
|
|
SAVEAC (1,1)
|
|
|
|
SETZM AC ;CLEAR AC
|
|
SETOM <AC+1>&17 ;INITIALIZE AC+1
|
|
JFFO AC,.+2 ;*JFFO SHOULD CLEAR AC+1 AND NOT JUMP
|
|
JRST .+2 ;PASS IF JFFO DOES NOT JUMP
|
|
ER2 AC,SN ;ERROR IF JFFO JUMPED
|
|
SKIPE AC ;EXAMINE AC
|
|
ER3 AC,SN ;C(AC) WAS CLOBBERED
|
|
SKIPE <AC+1>&17 ;EXAMINE AC+1
|
|
ER4 AC+1,SN ;AC+1 WAS NOT CLEARED
|
|
JUMPL AC+2,-^D9 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO
|
|
|
|
MOVEI [ASCIZ/JFFO JUMP FAILED/]
|
|
MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTER
|
|
|
|
G30200: SETOB AC,<AC+1>&17 ;INITIALIZE AC AND AC+1
|
|
JFFO AC,.+2
|
|
ER2 AC,30201 ;ERROR IF JFFO DID NOT JUMP
|
|
CAME AC,[-1,,-1] ;EXAMINE AC
|
|
ER3 AC,30201 ;C(AC) WAS CLOBBERED
|
|
SKIPE <AC+1>&17 ;EXAMINE AC+1
|
|
ER4 AC+1,30201 ;C(AC+1) NOT = TO NO OF LEADING ZEROS IN AC
|
|
JUMPL AC+2,G30200 ;LOOP ON ERROR SWITCH
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO
|
|
;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO
|
|
|
|
SN=30300
|
|
XX=1000000
|
|
ZZ=-1
|
|
|
|
G30300: REPEAT ^D18,<
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO
|
|
;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO
|
|
|
|
SN=SN+1
|
|
XX=XX/2
|
|
ZZ=ZZ+1
|
|
MOVSI AC,XX ;INITIALIZE AC
|
|
MOVE AC-2,AC ;INITIALIZE AC-2 FOR COMPARISON
|
|
SETOM <AC+1>&17 ;INITIALIZE AC+1
|
|
JFFO AC,.+2 ;*JFFO SHOULD PLACE ZZ INTO AC+1 AND JUMP
|
|
ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP
|
|
CAME AC,<AC-2>&17 ;EXAMINE AC
|
|
ER3 AC,SN ;C(AC) WAS CLOBBERED
|
|
CAIE AC+1,ZZ ;EXAMINE AC+1
|
|
ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ZEROS IN AC
|
|
JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH
|
|
>
|
|
PAGE
|
|
SN=30400
|
|
XX=1000000
|
|
|
|
G30400: REPEAT ^D18,<
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO
|
|
;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO
|
|
|
|
SN=SN+1
|
|
XX=XX/2
|
|
ZZ=ZZ+1
|
|
MOVEI AC,XX ;INITIALIZE AC
|
|
MOVE AC-2,AC ;INITIALIZE AC-2 FOR LATER COMPARISON
|
|
SETOM <AC+1>&17 ;INITIALIZE AC+1
|
|
JFFO AC,.+2 ;*JFFO SHOULD PLACE ZZ INTO AC+1 AND JUMP
|
|
ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP
|
|
CAME AC,<AC-2>&17 ;EXAMINE AC
|
|
ER3 AC,SN ;C(AC) WAS CLOBBERED
|
|
CAIE AC+1,ZZ ;EXAMINE AC+1
|
|
ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ERRORS IN AC
|
|
JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH
|
|
>
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO.
|
|
;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC.
|
|
|
|
SN=30500
|
|
AC=-1
|
|
|
|
G30500: REPEAT ^D13,<
|
|
;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING
|
|
;ZEROS IN AC WHEN C(AC) IS NON-ZERO.
|
|
;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC.
|
|
|
|
SN=SN+1
|
|
AC=<AC+1>&17
|
|
SAVEAC (1,1)
|
|
|
|
MOVSI AC,(1B<^O<AC>>) ;INITIALIZE AC
|
|
MOVEM AC,GSVAC# ;INITIALIZE FOR LATER COMPARISON
|
|
SETOM <AC+1>&17 ;INITIALIZE AC+1
|
|
JFFO AC,.+2 ;*JFFO SHOULD PLACE AC INTO AC+1 AC+1 AND JUMP
|
|
ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP
|
|
CAME AC,GSVAC ;EXAMINE AC
|
|
ER3 AC,SN ;C(AC) WAS CLOBBERED
|
|
CAIE AC+1,AC ;EXAMINE AC+1
|
|
ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ZEROS IN AC
|
|
JUMPL AC+2,-^D9 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
LAST1: JRST BEGEND ;REPEAT DIAGNOSTIC
|
|
|
|
IF1,<PURGE BYTBLK>
|
|
BYTBLK: BLOCK ^D50
|
|
|
|
IF1,<PURGE BLTBLK>
|
|
BLTBLK: BLOCK ^D200
|
|
|
|
SUBTTL *UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975
|
|
|
|
;THIS SUBROUTINE PROVIDES ERROR REPORTING THRU THE USE OF UUO'S.
|
|
|
|
ERRMES: MOVEM 0,%ERAC0# ;SAVE AC0
|
|
IFDEF EXCASB,<IFDEF KI10,<
|
|
SKIPN KAIFLG
|
|
JRST .+5
|
|
SKIPE USER ;USER MODE ?
|
|
JRST .+3
|
|
SKIPE MARGIN
|
|
DATAO APR,[IMGNOF,,ISPDOF] ;CLR MARGINS >>
|
|
MOVEM 1,%ERAC1# ;SAVE AC1
|
|
MOVEM 2,%ERAC2# ;SAVE AC2
|
|
AOS ERRTLS ;INCREMENT ERROR TOTALS
|
|
HRRZ 0,$SVUPC ;GET PC OF UUO
|
|
CAMN 0,ERRPC ;PC = PC OF LAST ERROR ?
|
|
AOS MICNT# ;YES, ADD 1 TO ERROR COUNT
|
|
MOVE 0,MICNT
|
|
HRL 0,$SVUPC
|
|
SKIPN KLFLG ;NOT KL10
|
|
SKIPE USER ;AND NOT USER?
|
|
JRST .+2
|
|
DATAO PI,0 ;YES, DISPLAY ERROR PC,ERROR COUNT
|
|
SETZM PROCED# ;CLEAR PROCEED FLAG
|
|
SWITCH
|
|
TLNE NOPNT ;PRINTOUT ?
|
|
JRST %ERRS1 ;NO, RESTORE AC'S AND RETURN
|
|
MOVE 1,$SVUUO
|
|
LSH 1,-^D27
|
|
MOVEM 1,%ACS1A# ;SAVE UUO NUMBER
|
|
MOVE 0,%ERAC0
|
|
MOVE 1,%ERAC1
|
|
SKIPGE @ERRLOP ;ERR LOOP AC > OR = 0 ?
|
|
JRST %ERRS4 ;NO, SEE IF PRINT ALL
|
|
%ERMS1: SETZM MICNT ;CLEAR ERROR COUNT
|
|
SKIPL MONCTL ;DIAG MON OR SYS EXER ?
|
|
JRST .+4 ;NO, DON'T NEED TITLE
|
|
SKIPN %ERFST# ;FIRST ERROR ?
|
|
PNTNM ;YES, PRINT PROGRAM TITLE
|
|
SETOM %ERFST
|
|
SKIPN PASCNT ;FIRST PASS ?
|
|
JRST .+4 ;YES
|
|
PMSG <^TEST PASS COUNT = >
|
|
MOVE PASCNT
|
|
PNTDEC
|
|
PMSG <^PC = >
|
|
HRRZ 0,$SVUPC ;GET PC OF UUO
|
|
MOVEM 0,ERRPC ;SAVE FOR COMPARE
|
|
PNT6 ;PRINT UUO ADDRESS
|
|
XLIST
|
|
IFDEF ERDIAG,<LIST
|
|
;DIAGNOSTIC FORMAT ERROR PRINTER
|
|
|
|
;PRINT RESULT
|
|
|
|
%ERMS2: PMSG <^RESULT = >
|
|
MOVE 1,$SVUUO ;GET AC # OF UUO
|
|
LSH 1,-27
|
|
ANDI 1,17
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,1 ;IS AC # = TO SAVE AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
PNTHW ;PRINT C(AC)
|
|
|
|
MOVE CONSW
|
|
TLNE TXTINH ;PRINT FAILURE DES AND FLT NBR ?
|
|
JRST %ERMORE ;NO, RESTORE AC'S ETC.
|
|
|
|
;PRINT FAILURE DESCRIPTOR
|
|
|
|
MOVE 1,%ACS1A ;GET UUO NUMBER
|
|
CAIG 1,1 ;PRINT DESCRIPTOR ?
|
|
JRST %ERMS3 ;NO, JUST PRINT FAULT NUMBER
|
|
PCRL
|
|
MOVE %FLTTB(1)
|
|
PNTAL ;PRINT FAULT DESCRIPTOR
|
|
|
|
;PRINT FAULT NUMBER
|
|
|
|
%ERMS3: PMSG <^FAULT NUMBER = >
|
|
MOVEI TLET
|
|
PNTA ;PRINT TEST LETTER
|
|
|
|
HRRZ $SVUUO
|
|
TRNE 700000
|
|
JRST %ER6X
|
|
TRNE 070000
|
|
JRST %ER5X
|
|
TRNE 007000
|
|
JRST %ER4X
|
|
PNT3 ;PRINT FAULT NUMBER
|
|
%ER7X: PCRL
|
|
JRST %ERMORE
|
|
|
|
%ER4X: PNT4
|
|
JRST %ER7X
|
|
%ER5X: PNT5
|
|
JRST %ER7X
|
|
%ER6X: PNT6
|
|
JRST %ER7X
|
|
|
|
;FAILURE DESCRIPTORS
|
|
|
|
TLET: 0 ;TEST LETTER
|
|
%FLTTB: 0 ;DESCRIPTOR TABLE
|
|
%NODES: [0] ;NO DESCRIPTOR
|
|
SPDES: [0] ;SPECIAL USER FAILURE DESCRIPTOR
|
|
$ACF: [ASCIZ/C(AC) FAILED/]
|
|
%AC1F: [ASCIZ/C(AC+1) FAILED/]
|
|
%EF: [ASCIZ/C(E) FAILED/]
|
|
%E1F: [ASCIZ/C(E+1) FAILED/]
|
|
%ARF: [ASCIZ/C(C(ACR)) FAILED/]
|
|
%AR1F: [ASCIZ/C(C(ACR+1)) FAILED/]
|
|
%ALF: [ASCIZ/C(C(ACL)) FAILED/]
|
|
%EEF: [ASCIZ/C(C(E)) FAILED/]
|
|
%FF: [ASCIZ/FLAG FAILED/]
|
|
>
|
|
XLIST
|
|
IFDEF ERRELB,<
|
|
LIST
|
|
;RELIABILITY FORMAT ERROR PRINTER
|
|
|
|
%ERMS2: SETZM %RAND# ;CLEAR PNT C(RAN) FLAG
|
|
MOVE 1,%ACS1A
|
|
CAIL 1,11 ;UUO # 11-13
|
|
SETOM %RAND ;YES, SET PNT C(RAN) FLAG
|
|
TRZ 1,10 ;MAKE UUO # 1-7
|
|
MOVEM 1,%ACS1A
|
|
MOVE 2,ERRPC ;GET UUO ADDRESS
|
|
MOVE 2,-1(2) ;GET INST IN UUO-1
|
|
CAIL 1,4 ;UUO # < THAN 4 ?
|
|
MOVE 2,$SVUUO ;YES, GET UUO
|
|
MOVEM 2,%CNTE# ;SAVE E ADDRESS
|
|
MOVE 2,%ERAC2
|
|
MOVE 1,%ERAC1
|
|
MOVE 0,%ERAC0
|
|
MOVEI 1,@%CNTE ;GET ADRS FIELD OF UUO OR UUO-1
|
|
MOVEM 1,%EE1#
|
|
MOVE 1,%ERAC1
|
|
MOVE 1,@%EE1 ;GET C(E)
|
|
MOVEM 1,%EE1A#
|
|
MOVE 1,%ERAC1
|
|
MOVEI 1,@$SVUUO ;GET ADDRESS FIELD OF UUO
|
|
MOVEM 1,%EE2#
|
|
MOVE 1,%ACS1A
|
|
CAIN 1,3 ;UUO # 3 ?
|
|
JRST .+4 ;YES
|
|
MOVE 1,%ERAC1
|
|
MOVE 1,@%EE2 ;GET C(E) OF UUO
|
|
MOVEM 1,%EE2A#
|
|
MOVE 2,%ACS1A ;GET UUO #
|
|
MOVE 1,%CNTE
|
|
LSH 1,-27 ;GET AC NUMBER
|
|
ANDI 1,17
|
|
CAIG 2,5 ;UUO # 6,7 OR 2
|
|
CAIN 2,2
|
|
JRST %ERR2 ;YES, GO PNT E AND C(E)
|
|
;PRINT ERROR AC
|
|
|
|
PMSG <^AC = >
|
|
MOVE 0,1
|
|
PNT2 ;PRINT AC NUMBER
|
|
PMSG <^C(AC)= >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
%ERRB: PNTHW ;PRINT C(AC) OR UUO2 (E)
|
|
|
|
;PRINT ERROR INFO
|
|
|
|
CAIN 2,5 ;UUO # 5
|
|
JRST %ERR4 ;YES, GO PNT 'TST','SKP', OR ETC.
|
|
|
|
PMSG <^COR = >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
CAIE 2,2
|
|
MOVE 0,%EE1A ;UUO # 2, GET C(E)
|
|
PNTHW ;PRINT C(E) OR UUO2 C(AC)
|
|
CAIL 2,4 ;UUO # >3 ?
|
|
JRST %ERRC ;YES, RESTORE AC'S AND RETURN
|
|
|
|
PMSG <^ ORIGINAL>
|
|
%ERRB1: MOVE 1,$SVUUO
|
|
LSH 1,-27 ;GET AC # OF UUO
|
|
ANDI 1,17
|
|
PMSG <^C(AC)= >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
SKIPE %RAND ;PRINT C(RAN) FLAG SET ?
|
|
MOVE 0,RAN# ;YES
|
|
PNTHW ;PRINT C(AC) OR C(RAN)
|
|
CAIN 2,3 ;UUO # 3 ?
|
|
JRST %ERR2 ;YES, PRINT E, RESTORE AC'S AND RETURN
|
|
CAIN 2,7 ;UUO # 7 ?
|
|
JRST %ERRC ;YES, BYPASS PRINTING C(E)
|
|
PMSG <^C(E) = >
|
|
MOVE 0,%EE2A
|
|
PNTHW ;PRINT C(E)
|
|
JRST %ERRC
|
|
|
|
%ERR2: PMSG <^E = >
|
|
MOVE 0,%EE2
|
|
CAIN 2,2 ;UUO # 2 ?
|
|
MOVE 0,%EE1
|
|
PNT6 ;PRINT E OF UUO OR UUO-1
|
|
CAIL 2,6 ;UUO 6 OR 7 ?
|
|
JRST %ERRB1 ;YES, GO PNT C(AC), C(E) AND RETURN
|
|
CAIN 2,3 ;UUO # 3 ?
|
|
JRST %ERRC ;YES, RESTORE AC'S AND RETURN
|
|
|
|
PMSG <^C(E) = >
|
|
MOVE 0,%EE1A ;GET C(E)
|
|
JRST %ERRB
|
|
;PRINT ASCII COMMENT
|
|
|
|
%ERR4: HRRZI 0,@$SVUUO
|
|
PNTA ;PRINT 'TST','SKP', OR ETC.
|
|
JRST %ERRC
|
|
|
|
;COMPLETE PRINTOUT
|
|
|
|
%ERRC: PCRL
|
|
|
|
XLIST
|
|
IFDEF UUOTXT,<
|
|
LIST
|
|
MOVE 0,CONSW
|
|
TLNN TXTINH ;PRINT DIAGNOSTIC COMMENT ?
|
|
CAIE 2,7 ;UUO # 7 ?
|
|
JRST %ERMORE ;NO, RESTORE AC'S AND RETURN
|
|
MOVE 0,%EE2 ;YES
|
|
PNTAL ;PRINT DIAGNOSTIC COMMENT
|
|
PCRL
|
|
>
|
|
LIST
|
|
JRST %ERMORE
|
|
|
|
>
|
|
LIST
|
|
;RESTORE AC'S AND RETURN OR HALT
|
|
|
|
%ERMORE:XCT ERMORE
|
|
PNTMGN ;PRINT MARGINS
|
|
SWITCH
|
|
|
|
%ERRS1: TTALTM ;ALTMODE CHECK
|
|
JRST .+4 ;NONE
|
|
MOVEI .+3 ;SAVE CONT ADDRESS
|
|
MOVEM JOBOPC
|
|
JRST @ALTMGO ;PERFORM TRANSFER
|
|
MOVE CONSW
|
|
TLNE 0,ERSTOP ;HALT ON ERROR SWITCH SET ?
|
|
ERRHLT ;YES
|
|
TLNN 0,LOOPER ;LOOP ON ERROR SWITCH SET ?
|
|
SETOM PROCED ;NO, SET THE PROCEED FLAG
|
|
TLNE 0,DING ;RING BELL SWITCH SET ?
|
|
PBELL ;YES, GO RING BELL
|
|
|
|
%ERRS2: MOVE 2,%ERAC2 ;RESTORE AC'S
|
|
MOVE 1,%ERAC1
|
|
SETOM @ERRLOP ;SET C(ERR LOOP AC) TO -1
|
|
SKIPN PROCED ;LOOP ON ERROR ?
|
|
JRST %ERRS5 ;YES
|
|
AOS @ERRLOP ;NO, INC C(ERR LOOP AC)
|
|
AOS @ERRLOP ;SO IT ='S 1
|
|
SKIPL MONCTL ;UNDER DIAGNOSTIC MONITOR ?
|
|
JRST %ERRS5 ;NO, CONTINUE PROGRAM
|
|
MOVE 0,ERRTLS ;YES
|
|
CAIL 0,5 ;PRINTED ALLOWED ERRORS ?
|
|
JRST $BEND2
|
|
|
|
%ERRS5: MOVE 0,%ERAC0 ;NO, CONTINUE PROGRAM
|
|
IFDEF EXCASB,<IFDEF KI10,<
|
|
SKIPN KAIFLG
|
|
JRST .+5
|
|
SKIPE USER
|
|
JRST .+3
|
|
SKIPE MARGIN
|
|
DATAO APR,MARGIN ;RESET MARGIN SYSTEM >>
|
|
JRST UUOEXT
|
|
|
|
%ERRS4: MOVE 0,CONSW
|
|
TLNN PALERS ;PRINT ALL ERRORS ?
|
|
JRST %ERRS1 ;NO
|
|
JRST %ERMS1 ;YES
|
|
|
|
SUBTTL *STOR* RESERVED STORAGE, JULY 19,1977
|
|
|
|
;PROGRAM LITERALS
|
|
|
|
XLIST
|
|
IFNDEF $LPAPER,<LIST>
|
|
LIT
|
|
LIST
|
|
ENDSLD: 0
|
|
|
|
IFDEF DEBUG,<
|
|
PATCH: BLOCK DEBUG ;PATCHING AREA
|
|
>
|
|
|
|
;PROGRAM VARIABLES
|
|
VAR
|
|
|
|
IFDEF PGMEND,<
|
|
END: 0
|
|
END START >
|
|
|