Trailing-Edge
-
PDP-10 Archives
-
klad_sources
-
klad.sources/dskfam.mac
There are no other files named dskfam.mac in the archive.
SUBTTL DIAGNOSTIC SECTION
PGMNAM: ASCIZ/
DECSYSTEM 2020 INSTRUCTION TIMING TEST (DSKFA)
/
;*START INITIALIZES THE PROCESSOR AND PI SYSTEM, INITIALIZES
;*SOME ACS AND MEMORY LOCATIONS, AND THEN CYCLES THROUGH THE
;*MAIN TABLE, CALLING VARIOUS SUBROUTINES TO DO ALL THE WORK.
STARTA:
START: SETZM $ONETM
SETZM CONSW
PGMINT
MOVE 41
MOVEM SAV41#
MOVEI ^D2000+CACHE
SKIPN CSHFLG ;USING CACHE ?
MOVEI ^D512+CACHE
MOVEM CODSIZ#
MOVEI MONUUO ;SETUP MONITOR INSTRUCTION TRAP
MOVEM 430
MOVEM 431
CONO PI,PICLR ;CLEAR PI SYSTEM
MOVE [JSR ITRCLK]
MOVEM 42 ;SETUP CLOCK INTERRUPT
MOVEI 0,60
MOVEM 0,RADLSP
MOVE [1.0] ;SETUP MAX CLOCK OPERANDS
MOVEM MCARG1
SETZM MCARG2
MOVE [-1.5]
MOVEM MCARG3
PNTNM
LOOP: MOVEI TB,TABLE ;INITIALIZE TABLE POINTERS
SETZ 3, ;CLEAR 3
GO SETRUN ;SET UP THE TIMING LOOP
GO TIMEX ;EXECUTE THE TIMING LOOP
GO MESSAGE ;PRINT THE ID MESSAGE
GO CALC ;CALCULATE AND PRINT TIMING DATA
HRRZ TB,7(TB) ;STEP TO NEXT TABLE ENTRY
JUMPN TB,LOOP+1 ;DONE?
PNTMSG [ASCIZ/
TEST COMPLETED
/]
EOPUUO
;*SETRUN TAKES 1, 2, OR 3 INSTRUCTIONS FROM THE CURRENT TABLE
;*ENTRY AND SPREADS THEM THROUGH AN AREA OF FREE CORE STARTING
;*AT LOCATION CODE. THE INSTRUCTIONS ARE MADE INTO A LOOP BY
;*APPENDING AN AOJA INSTRUCTION TO THE END OF THE LOOP. SETRUN
;*COUNTS THE NUMBER OF REPETITIONS (ITERATIONS) OF THE 1-,2-,
;*OR 3-INSTRUCTION GROUP AS PLACED IN CORE. IT ALSO COUNTS THE
;*NUMBER OF INSTRUCTIONS IN THE GROUP.
SETRUN: MOVEI T,CODE ;FIRST INSTRUCTION GOES INTO LOCATION CODE
MOVEI T1,1 ;A 1 FOR COMPARING WITH ADDRESSES
MOVEI C,1 ;INITIALIZE COUNT OF ITERATIONS PER LOOP
SET1: SETZM WDSPI ;INITIALIZE COUNT OF WORDS PER ITERATION
SKIPE TT,(TB) ;1ST INSTRUCTION USED?
GO SET0 ;YES, SO PLACE IT IN THE LOOP
SKIPE TT,1(TB) ;2ND INSTRUCTION USED?
GO SET0 ;YES
SKIPE TT,2(TB) ;3RD INSTRUCTION USED?
GO SET0 ;YES
CAMGE T,CODSIZ ;NEAR END OF FREE SPACE?
AOJA C,SET1 ;NO, SO REPEAT
MOVE TT,[AOJA CC,CODE] ;YES, SO CLOSE THE TIMING LOOP
MOVEM TT,(T)
RTN ;RETURN
;*SET0 PUTS ONE INSTRUCTION INTO THE FREE CORE. THE ADDRESS OF
;*EACH INSTRUCTION IS MODIFIED ACCORDING TO THE RULE:
;*IF ADR NOT=1, NO CHANGE
;*IF ADR = 1, CHANGE TO .+1
SET0: AOS WDSPI ;ONE MORE WORD PER ITERATION
CAIN T1,(TT) ;ADDRESS = 1?
HRRI TT,1(T) ;YES, SO SUBSTITUTE .+1
MOVEM TT,(T) ;PLACE IN LOOP
AOJA T,CPOPJ ;INCREMENT FREE SPACE POINTER
WDSPI: 0 ;WORDS PER ITERATION
;*TIMEX INITIALIZES A COUNTER FOR THE NUMBER OF TIMES AROUND THE
;*CODE LOOP, ANOTHER COUNTER FOR COUNTING CLOCK TICKS, AND
;*INITIALIZES THE PROCESSOR. THE PI IS TURNED ON AND TIMEX WAITS
;*FOR THE BEGINNING OF A CLOCK CYCLE. IT THEN TURNS OFF THE CLOCK
;*FLAG, ASSIGNS A PI CHANNEL TO THE PROCESSOR, AND ENTERS THE
;*TIMING LOOP
TIMEX: MOVEI CC,0 ;CLEAR NO. OF LOOPS PER SECOND
SETZM TEMP
MOVE [JSP LOCUUO]
MOVEM 41
CONO APR,1B21!1B22!1B30 ;CLEAR TIMER
WRINT [<^D1000>B23] ;SET TIMER TO 1 SEC
CONSo APR,1B30 ;WAIT FOR FLAG TO SET
JRST .-1
CONO APR,1B20!1B22!1B30!1B31!LAPRP1 ;ENABLE TIMER
CONO PI,1B23!1B25!1B28!PICHN1
JRST CODE ;PERFORM TIMING LOOP
TICKX: 0 ;CLOCK-TICK COUNTER
;*MESSAGE EXTRACTS THE ADDRESS OF THE ID MESSAGE FROM THE
;*MAIN TABLE AND PRINTS IT.
MESSAG: HRRZ T1,3(TB) ;GET MESSAGE ADDRESS
JUMPE T1,CPOPJ1 ;IF MESSAGE NULL, SKIP RETURN
MOVE 0,T1
PNTAL
RTN
;*CALC1 EXTRACTS ONE TIMING DATUM FROM THE TABLE
;*AND ADDS OR SUBTRACTS IT.
CALC1: HLRZ TT,(T1) ;GET DATUM TO ADD OR SUBTRACT
SKIPL T1 ;ADD ?
ADD T,TT ;YES
SKIPG T1 ;SUBTRACT ?
SUB T,TT ;YES
RTN ;RETURN
;*ITRCLK COUNTS OF THE CLOCK TICKS. AT THE END OF THE SELECTED
;*INTERVAL, IT COMPUTES THE TIME TAKEN (IN N.S.) FOR ONE
;*ITERATION OF THE ORIGINAL 1-, 2-, OR 3-INSTRUCTION GROUP BY:
;*1) MULTIPLYING THE NUMBER OF COMPLETE TIMES AROUND THE LOOP
;*BY THE NUMBER OF ITERATIONS PER ONCE AROUND
;*2) COMPUTING THE NUMBER OF WORDS INTO THE LAST TIME AROUND
;*BY SUBTRACTING THE FIRST ADDRESS OF THE LOOP FROM THE
;*INTERRUPTED PC.
;*3) DIVIDING ITEM 2) BY THE NUMBER OF WORDS PER ITERATION TO GIVE THE
;*NUMBER OF ITERATIONS EXECUTED IN THE LAST (PARTIAL) TRIP AROUND THE LOOP.
;*4) ADDING 1) TO 3) TO GIVE TOTAL ITERATIONS.
;*5) TAKING THE RECIPROCAL OF 4) , APPROPRIATELY SCALED, TO GIVE
;*NANOSECONDS PER ITERATION.
;*NOTE: TIME SPENT IN CLOCK INTERRUPTS IS IGNORED.
ITRCLK: 0
CONI APR,0
TRNN 0,1B31 ;8080 ?
JRST .+3 ;NO, CLOCK
CONO APR,1B22!1B31!LAPRP1
JEN @ITRCLK
CONO APR,1B22!1B30!LAPRP1 ;CLEAR TIMER
CONO PI,PIOFF ;CLEAR PI SYSTEM
MOVE SAV41
MOVEM 41
JSP 0,.+1
TLNE USERF ;STILL IN USER MODE ?
JRST .+6 ;YES, NO NEED TO GO BACK TO USER
SKIPE MONFLG ;NO, SUPPOSED TO BE IN USER ?
JRST .+4 ;NO
JRSTF @.+1 ;YES, RETURN TO USER
USERF,,.+1
JRST 1,.+1
IMUL CC,C ;CONVERT LOOPS TO ITERATIONS
HRRZ T,ITRCLK ;GET TRAPPED LOCATION
SUBI T,CODE ;COMPUTE TOTAL WORDS IN LAST GO-AROUND
IDIV T,WDSPI ;COMPUTE ITERATIONS IN LAST GO-AROUND
ADD T,CC ;COMPUTE TOTAL ITERATIONS
MOVE TT,[^D1000000000] ;10E+9
IDIV TT,T ;ANSWER IS NS.
HRLM TT,3(TB) ;SAVE RESULT IN MAIN TABLE
RTN ;RETURN
;*CALC TAKES THREE ADDITIVE COMMANDS FROM THE CURRENT TABLE
;*ENTRY. EACH COMMAND SAYS DO NOTHING, ADD IN THE TIME FOR
;*THE SPECIFIED PREVIOUS TABLE ENTRY (OR FOR THIS ENTRY), OR
;*SUBTRACT THE TIME FOR THE SPECIFIED TABLE ENTRY. THE RESULT
;*IS TYPED IN DECIMAL FOLLOWED BY "NS". IN OTHER WORDS, THE
;*NUMBER ACTUALLY TYPED OUT IS THE SUM OR DIFFERENCE OF UP TO
;*3 PREVIOUSLY MEASURED TIMING RESULTS.
CALC: HLRZ T,3(TB) ;INIT NET TIME
SKIPE T1,4(TB) ;1ST ARGUMENT ACTIVE?
GO CALC1 ;YES, GO AND OR SUBTRACT TO NET TIME
SKIPE T1,5(TB) ;2ND ARG?
GO CALC1 ;YES
SKIPE T1,6(TB) ;3RD ARG?
GO CALC1 ;YES
HLRZ T1,7(TB)
ANDI T1,777 ;GET DIVISOR
SKIPE T1
IDIV T,T1 ;DIVIDE IF DIVISOR NOT ZERO
SKIPGE T
MOVEI T,0 ;REMOVE NEG. TIME INACCURACIES
IDIVI T,^D1000 ;DIVIDE INTO US. AND NS.
JUMPE T,CALCNS ;IF NO US., PRINT AS NS.
PUT T+1 ;SAVE NS.
MOVE 0,T
PNTDEC
MOVEI PERIOD
PNTA
GET T ;GET NS. BACK
ADDI T,5 ;ROUND AND
IDIVI T,^D10 ;CHANGE TO 100THS OF USEC.
MOVEI 0,^D2 ;FORCE TWO DIGITS IN PNUM
HRRM RADLSC
MOVE 0,T
PNTDS
MOVEI 0,^D10
HRRM RADLSC
PNTMSG [ASCIZ/ USEC.
/]
RTN
CALCNS: MOVE 0,T+1 ;GET REMAINDER
PNTDEC ;PRINT THE NUMBER OF NSEC.
PNTMSG [ASCIZ/ NSEC.
/]
RTN
LIT ;PUT PRECEEDING LITERALS HERE
DEFINE PLUS(X)<EXP TM'X>
DEFINE LESS(X)<XWD -1,TM'X>
DEFINE AUX (N,MESS)<ASCIZ !N - MESS !>
DEFINE ENTR (LABEL,INS,MESS,CALC,FACTOR,USER)<
XX=3
IRP INS,<IFG XX,<INS ;INSTRUCTION SET TO BE TIMED>
XX=XX-1>
IFG XX,<REPEAT XX,<
0 ;NULL INSTRUCTION ENTRY>>
TM'LABEL: 0+IFNB <MESS>,<EXP .+5> ;XWD TIME,LOCN OF MSG
XX=3
IRP CALC,<IFG XX,<CALC ;TIME CALCULATION>
XX=XX-1>
IFG XX,<REPEAT XX,<
0 ;NULL CALCULATION ENTRY>>
IF1 <ZZ=.>
ZY=.
XWD <IFNB <USER>,<1B18>+IFNB<FACTOR>,<^D'FACTOR>>,IFN ZY-ZZ,<E'LABEL> ;NEXT ENTRY
RADIX 10
IFNB <MESS>,<AUX \<XYZ=XYZ+1>,<MESS>>;MESSAGE
RADIX 8
E'LABEL:>
XYZ=0 ;INIT PRINTOUT STATEMENT COUNTER
TABLE: ;THE MAIN TABLE
ENTR 1,<LSH ^D15>
ENTR 2,<LSH ^D35>,BASIC CLOCK CYCLE IS,LESS(1),20
ENTR 5,MOVEI
ENTR 11,MOVEI (3),INDEXING TAKES,LESS(5)
ENTR 12,MOVEI @3,INDIRECT TAKES,LESS(5)
ENTR 13,MOVEI @3(3),INDEXING AND INDIRECT TAKES,LESS(5)
ENTR 14,MOVEI,MOVEI TAKES
ENTR 141,MOVSI,MOVSI TAKES
ENTR 15,MOVE 3,MOVE FROM AC TAKES
ENTR 16,MOVE MARG,MOVE FROM MEMORY TAKES
ENTR 161,MOVEM TEMP,MOVE TO MEMORY TAKES
ENTR 17,HRR MARG,HRR FROM MEMORY TAKES
ENTR 171,HRRZ MARG,HRRZ FROM MEMORY TAKES
ENTR 172,HLRZ MARG,HLRZ FROM MEMORY TAKES
ENTR 18,SETZ,SETZ TAKES
ENTR 181,SETZM TEMP,SETZM TAKES
ENTR 182,SETZB TEMP,SETZB TAKES
ENTR 183,SETO,SETO TAKES
ENTR 184,SETOM TEMP,SETOM TAKES
ENTR 185,SETOB TEMP,SETOB TAKES
ENTR 19,JRST 1,JRST TAKES
ENTR 191,<JRSTF @1,1>,JRSTF @MEM TAKES
ENTR 192,JUMPA 1,JUMPA TAKES
ENTR 193,<<JUMPN 3,1>>,JUMP THAT DOESN'T TAKES
ENTR 194,<<JUMPE 3,1>>,JUMP THAT DOES TAKES
ENTR 20,<JSR 1,1>,JSR TAKES
ENTR 201,JSP 1,JSP TAKES
ENTR 202,AOBJN 1,AOBJN TAKES
ENTR 203,SOJ,SOJ TAKES
ENTR 204,SOS TEMP,SOS TAKES
ENTR 205,AOJ,AOJ TAKES
ENTR 206,AOS TEMP,AOS TAKES
ENTR 207,<MOVE [400000000000],JFFO 1>,JFFO (1B0) TAKES,LESS(16)
ENTR 208,<MOVE [1],JFFO 1>,JFFO (1B35) TAKES,LESS(16)
ENTR 209,<MOVEI PTEMP-1,PUSH>,PUSH TAKES,LESS(5)
ENTR 210,<HRROI PTEMP,POP>,POP TAKES,LESS(5)
ENTR 211,1B3,MUUO TAKES,LESS(191)
ENTR 212,1B8,LUUO TAKES,<LESS(191),LESS(201)>
ENTR 21,<MOVEI PTEMP-1,PUSHJ 1>,PUSHJ TAKES,LESS(5)
ENTR 22,ADDI,ADD IMMEDIATE TAKES
ENTR 221,ADD [6],ADD FROM MEMORY TAKES
ENTR 222,ADDM TEMP,ADD TO MEMORY TAKES
ENTR 23,<MOVEI 525252,MUL [1]>,MUL (9 ADD/SUB - 18 SHIFTS) TAKES,LESS(5)
ENTR 231,<MOVEI 525252,IMULI 2>,IMULI TAKES,LESS(5)
ENTR 24,<MOVE [1],DIV [525252]>,DIV TAKES,LESS(16)
ENTR 241,<MOVEI 525252,IDIVI 2>,IDIVI TAKES,LESS(5)
ENTR 25,<MOVSI 201400,FIX>,FIX A FLOATING POINT ONE TAKES,LESS(5)
ENTR 26,<MOVE [1],FLTR>,FLTR AN INTERGER ONE TAKES,LESS(16)
ENTR 27,<MOVSI 200400,FAD [201400000000]>,FAD (1 RIGHT SHIFT) TAKES,LESS(5)
ENTR 28,<MOVSI 200400,FAD [210040000000]>,FAD (8 SHIFT RIGHT - 3 LEFT) TAKES,LESS(5)
ENTR 29,<MOVE [200525240000],FMP [1.0]>,FMP (7 ADD/SUB - 14 SHIFTS) TAKES,LESS(16)
ENTR 30,<MOVE [200525240000],FDV [1.0]>,FDV TAKES,LESS(16)
ENTR 31,DMOVE MARG,DMOVE FROM MEMORY TAKES
ENTR 311,DMOVEM MARG,DMOVEM TO MEMORY TAKES
ENTR 32,<DMOVE DFARG3,DFAD DFARG4>,DFAD (1 RIGHT SHIFT) TAKES,LESS(31)
ENTR 33,<DMOVE DFARG5,DFAD DFARG6>,DFAD (8 SHIFT RIGHT - 1 LEFT) TAKES,LESS(31)
ENTR 34,<DMOVE DFARG4,DFMP DFARG7>,DFMP (7 ADD/SUB - 32 SHIFTS) TAKES,LESS(31)
ENTR 35,<DMOVE DFARG7,DFDV DFARG4>,DFDV TAKES,LESS(31)
ENTR 36,<<CONO PI,>>,CONO PI TAKES
ENTR 361,<<CONI PI,>>,CONI PI TAKES
ENTR 362,<<CONO PAG,20000>>,CONO PAG TAKES
ENTR 363,<<DATAO PAG,[LLDUSB,,0]>>,DATAO PAG LOAD UBR TAKES
ENTR 364,<<DATAO PAG,[LLACBL,,0]>>,DATAO PAG LOAD AC BLK TAKES
ENTR 365,<<WRIO 3,@$WRIO>>,WRIO TAKES
ENTR 366,<<RDIO 0,@$RDIO>>,RDIO TAKES
ENTR 38,<LSH ^D35>,LOGICAL SHIFT (35 PLACES LEFT) TAKES
ENTR 39,<LSH -^D35>,LOGICAL SHIFT (35 PLACES RIGHT) TAKES
ENTR 40,<LSHC ^D71>,LOGICAL SHIFT COMBINED (71 PLACES LEFT) TAKES
ENTR 41,<LSHC -^D71>,LOGICAL SHIFT COMBINED (71 PLACES RIGHT) TAKES
ENTR 42,<<MOVE [350700,,[0]]>,<MOVEM TEMP>,<IBP TEMP>>,INCREMENT BYTE POINTER TAKES,<LESS (16),LESS (161)>
ENTR 43,<<MOVE [350700,,[0]]>,<MOVEM TEMP>,<ILDB TEMP>>,ILDB (7 BITS) TAKES,<LESS (16),LESS (161)>
ENTR 44,<<MOVE [350700,,TEMP]>,<MOVEM TEMP>,<IDPB TEMP>>,IDPB (7 BITS) TAKES,<LESS (16),LESS (161)>
ENTR 441,<<MOVE [350600,,[0]]>,<MOVEM TEMP>,<ILDB TEMP>>,ILDB (6 BITS) TAKES,<LESS (16),LESS (161)>
ENTR 442,<<MOVE [350600,,[0]]>,<MOVEM TEMP>,<IDPB TEMP>>,IDPB (6 BITS) TAKES,<LESS (16),LESS (161)>
ENTR 443,<<LDB [POINT 7,TEMP,6]>>,LDB (7 BITS - POS 6) TAKES
ENTR 444,<<LDB [POINT 7,TEMP,13]>>,LDB (7 BITS - POS 13) TAKES
ENTR 445,<<LDB [POINT 7,TEMP,20]>>,LDB (7 BITS - POS 20) TAKES
ENTR 446,<<LDB [POINT 7,TEMP,27]>>,LDB (7 BITS - POS 27) TAKES
ENTR 447,<<LDB [POINT 7,TEMP,34]>>,LDB (7 BITS - POS 34) TAKES
ENTR 448,<<DPB [POINT 7,TEMP,6]>>,DPB (7 BITS - POS 6) TAKES
ENTR 449,<<DPB [POINT 7,TEMP,13]>>,DPB (7 BITS - POS 13) TAKES
ENTR 450,<<DPB [POINT 7,TEMP,20]>>,DPB (7 BITS - POS 20) TAKES
ENTR 451,<<DPB [POINT 7,TEMP,27]>>,DPB (7 BITS - POS 27) TAKES
ENTR 452,<<DPB [POINT 7,TEMP,34]>>,DPB (7 BITS - POS 34) TAKES
ENTR 453,<<LDB [POINT 6,TEMP,5]>>,LDB (6 BITS - POS 5) TAKES
ENTR 454,<<LDB [POINT 6,TEMP,11]>>,LDB (6 BITS - POS 11) TAKES
ENTR 455,<<LDB [POINT 6,TEMP,17]>>,LDB (6 BITS - POS 17) TAKES
ENTR 456,<<LDB [POINT 6,TEMP,23]>>,LDB (6 BITS - POS 23) TAKES
ENTR 457,<<LDB [POINT 6,TEMP,29]>>,LDB (6 BITS - POS 29) TAKES
ENTR 458,<<LDB [POINT 6,TEMP,35]>>,LDB (6 BITS - POS 35) TAKES
ENTR 459,<<DPB [POINT 6,TEMP,5]>>,DPB (6 BITS - POS 5) TAKES
ENTR 460,<<DPB [POINT 6,TEMP,11]>>,DPB (6 BITS - POS 11) TAKES
ENTR 461,<<DPB [POINT 6,TEMP,17]>>,DPB (6 BITS - POS 17) TAKES
ENTR 462,<<DPB [POINT 6,TEMP,23]>>,DPB (6 BITS - POS 23) TAKES
ENTR 463,<<DPB [POINT 6,TEMP,29]>>,DPB (6 BITS - POS 29) TAKES
ENTR 464,<<DPB [POINT 6,TEMP,35]>>,DPB (6 BITS - POS 35) TAKES
ENTR 46,JFCL,JFCL TAKES
ENTR 47,CAI,CAI NO-OP TAKES
ENTR 471,<<CAIN 3,0>>,CAI THAT DOESN'T SKIP TAKES
ENTR 472,<<CAIE 3,0>,1>,CAI THAT SKIPS TAKES
ENTR 473,CAM,CAM NO-OP TO AC TAKES
ENTR 474,<<CAMN 3,3>>,CAM TO AC THAT DOESN'T SKIP TAKES
ENTR 475,<<CAME 3,3>,1>,CAM TO AC THAT SKIPS TAKES
ENTR 476,CAM TEMP,CAM NO-OP TO MEMORY TAKES
ENTR 477,<<CAMN 3,TEMP>>,CAM TO MEMORY THAT DOESN'T SKIP TAKES
ENTR 478,<<CAME 3,TEMP>,1>,CAM TO MEMORY THAT SKIPS TAKES
ENTR 482,<<TLNN 3,2>>,TLN NO SKIP TAKES
ENTR 483,<<TLNE 3,2>,1>,TLN SKIP TAKES
ENTR 484,<<TRNN 3,2>>,TRN NO SKIP TAKES
ENTR 485,<<TRNE 3,2>,1>,TRN SKIP TAKES
ENTR 486,<<TDNN 3,TEMP>>,TDN NO SKIP TAKES
ENTR 487,<<TDNE 3,TEMP>,1>,TDN SKIP TAKES
ENTR 488,<<TSNN 3,TEMP>>,TSN NO SKIP TAKES
ENTR 489,<<TSNE 3,TEMP>,1>,TSN SKIP TAKES
ENTR 490,<<SKIPN 3>>,SKIP TO AC THAT DOESN'T TAKES
ENTR 491,<<SKIPE 3>,1>,SKIP TO AC THAT DOES TAKES
ENTR 492,<<SKIPN TEMP>>,SKIP TO MEMORY THAT DOESN'T TAKES
ENTR 493,<<SKIPE TEMP>,1>,SKIP TO MEMORY THAT DOES TAKES
ENTR 49,EQV,EQV AC TO AC TAKES
ENTR 50,EQV TEMP,EQV MEMORY TO AC TAKES
ENTR 53,EXCH,EXCHANGE AN AC WITH AN AC TAKES
ENTR 54,EXCH TEMP,EXCHANGE AN AC WITH MEMORY TAKES
ENTR 55,XCT[JFCL],EXECUTE TAKES,LESS(46)
ENTR 56,<<MOVE [TEMP,,TEMP]>,BLT TEMP>,BLT MEMORY TO MEMORY TAKES,LESS(16)
ENTR 57,<<MOVE [0,,TEMP]>,BLT TEMP>,BLT AC TO MEMORY TAKES,LESS(16)