DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 44160 (0xac80) Types: TextFile Names: »L30ASM«
└─⟦b07da7239⟧ Bits:30005188 8" CR80 Floppy CR80FD_0185 ( CR/D/253 CP L3050 I/F test NIC/558/0-D10200 COPY OF CR/D/315 ) └─⟦ddc1b7150⟧ └─ ⟦this⟧ »L3050.L30ASM«
AU000001 0 0000 LIST ; AU000001 0 0000 ;-----------------------------------------------------------------------; AU000002 0 0000 ; CARD DECK IDENTIFICATION NUMBER: CR/C/0125 ; AU000003 0 0000 ; MODULE IDENTIFICATION: NIC/558 ; AU000004 0 0000 ; VERSION: 02 ; AU000005 0 0000 ; DATED: 771207/FR ; AU000006 0 0000 ; ; AU000007 0 0000 ; COMMUNICATIONS PROCESSOR TEST DRIVE SYSTEM ; AU000008 0 0000 ; ; AU000009 0 0000 ; CPTDS - L3050 I/F TEST PROGRAM ; AU000010 0 0000 ; ; AU000011 0 0000 ; 5.3 SPECIAL DRIVER NARRATIVE. ; AU000012 0 0000 ; ------------------------------ ; AU000013 0 0000 ; THIS MODULE OF THE CP TEST DRIVE SYSTEM (CPTDS) WILL BE USED TO ; AU000014 0 0000 ; LOOP ON SELECTED COM'DS IN ORDER TO VERIFY THE FUNCTION OF THE ; AU000015 0 0000 ; L3050 I/F. THE MODULE WILL REPLACE THE SUPERVISOR OF THE ; AU000016 0 0000 ; CP TEST DRIVE COMPUTER PROGRAM. ALL OTHER APPLICATION MODULES ; AU000017 0 0000 ; WILL NOT BE USED. ; AU000018 0 0000 ; THE IOX SIMULATOR (OR L3050 I/F MODULE TESTER) SHOULD HAVE THE ; AU000019 0 0000 ; DEVICE ADDRESS #06. ; AU000020 0 0000 ; ; AU000021 0 0000 ; THE PROGRAM WILL ASK THE OPERATOR FOR THE INPUT REQUIRED TO ; AU000022 0 0000 ; DETERMINE WHICH COM'D SEQUENCE TO LOOP UPON. ; AU000023 0 0000 ; UPON DETECTION OF A LINE FEED THE PROGRAM WILL START SERVICING ; AU000024 0 0000 ; THE CP WITH DEVICE ADDRESS #40 FOLLOWED BY CP WITH ADDR #80. ; . 0 0000 ; THIS WILL BE REPEATED ENDLESSLY AS LONG AS THE PROGRAM IS ACTIVE; AU000025 0 0000 ; THE PROGRAM IS ABLE LOOPING ON ALL VALID COMMANDS. ; AU000026 0 0000 ; ; AU000027 0 0000 ; A.ADDRESSING. ; AU000028 0 0000 ; AU000029 0 0000 ; THE SPECIAL DRIVER SHALL BE ACTIVATED BY THE MONITOR UPON ; AU000030 0 0000 ; INITIALIZATION OF THE SYSTEM. ; AU000031 0 0000 ; ; AU000032 0 0000 ; B.ENTRY CONDITION. ; AU000033 0 0000 ; THE SPECIAL DRIVER SHALL BE ENTERED AS A CONSEQUENCE OF IT ; AU000034 0 0000 ; ACTIVATING ITSEFF DURING THE INITIALIZATION PHASE. ; AU000035 0 0000 ; ; AU000036 0 0000 ; C.EXIT CONDITIONS. ; AU000037 0 0000 ; THE MODULE WILL NEVER GIVE UP CPU TIME OR CONTROL TO ANY OTHER ; AU000038 0 0000 ; PROCESS IN THE SYSTEM IF IT HAS BEEN ACTIVATED. ; AU000039 0 0000 ; ; AU000040 0 0000 ; D.SPECIAL STORAGE. NONE. ; AU000041 0 0000 ; ; AU000042 0 0000 ; E.PROCCESSING. ; AU000043 0 0000 ; E1.INITIALIZATION. ; AU000044 0 0000 ; INITIATE: THE SPECIAL DRIVER IS CREATED, I.E. MADE KNOWN TO ; AU000045 0 0000 ; THE MONITOR (MON) AS IF IT WAS THE SUPERVISOR MODULE. ; AU000046 0 0000 ; LOCAL DATA AREAS ARE CLEARED. ; 0 0000 ; READOC: UPON WRITING '>' ON THE OC THE PROGRAM EXPECTS DATA; AU000047 0 0000 ; TO BE ENTERED AS DESCRIBED BELOW. A CARRIAGE ; AU000048 0 0000 ; RETURN SHALL FLAG END OF CONTROL COM'D. ; AU000049 0 0000 ; E2.LOOP MODE. ; AU000050 0 0000 ; CPDRIVER: ; AU000051 0 0000 ; THE SPECIAL DRIVER IS CONTROLLED THROUGH THE CHARACTERS ; AU000052 0 0000 ; KEYED IN BY THE OPERATOR VIA THE OC KEYBOARD. THE BELOW ; AU000053 0 0000 ; DESCRIBE INPUT AND ACTION BY PROGRAM. ; AU000054 0 0000 ; ; AU000055 0 0000 ; 1) OI: OFR INVALID ; AU000056 0 0000 ; A LOOP WILL BE SET UP ON AN INVALID OFR COM'D. ; AU000057 0 0000 ; THE STATUS WILL BE PRINTED AS FOR 5 (SEE BELOW). ; AU000058 0 0000 ; ; AU000059 0 0000 ; 2) DM: DEV MASTER CLEAR. ; AU000060 0 0000 ; DI: DEV INTERRUPT PERMIT. ; AU000061 0 0000 ; A LOOP IS SET UP ON THE RECEIVED DEV COM'D. ; AU000062 0 0000 ; THE DISTANCE BETWEEN THE COM'DS ISSUED TO THE CP ; AU000063 0 0000 ; WILL BE ABOUT 150 USECS. ; AU000064 0 0000 ; ; AU000065 0 0000 ; 3) E : EOB ; AU000066 0 0000 ; LOOP ON EOB (H/W). EN EOB COMMAND WILL BE ISSUED ; AU000067 0 0000 ; TO THE L3050 I/F EACH 150 USEC. ; AU000068 0 0000 ; ; AU000069 0 0000 ; 4) DS: DEVICE STOP ; AU000070 0 0000 ; LOOP ON DEVICE STOP (H/W) - ELSE AS 2 ; AU000071 0 0000 ; ; AU000072 0 0000 ; 5) O0: OFR 0 ; AU000073 0 0000 ; O1: OFR 1 ; AU000074 0 0000 ; O2: OFR 2 ; AU000075 0 0000 ; O3: OFR 3 ; AU000076 0 0000 ; A LOOP IS SET UP ON A SET OF OFR COM'DS ALL OF ; AU000077 0 0000 ; WHICH INVOLVE DATA TO BE TRANSFERRED TO AND FROM ; AU000078 0 0000 ; THE L3050 I/F OF THE CP SYSTEM. TWO OFRS WITH ; AU000079 0 0000 ; NON-IDENTICAL DATA TO BE TRANSFERRED SHALL BE USED ; AU000080 0 0000 ; WHILE THE REVERSE WILL BE IDENTICAL. ; AU000081 0 0000 ; THE OFRS USED ARE ALL BUILT-IN THE PROGRAM. ; AU000082 0 0000 ; EACH LOOP IS INITIATED BY A MASTER RESET COM'D ; AU000083 0 0000 ; TO BE FOLLOWED WITHIN 1 MSEC BY THE OFR COM'D. ; AU000084 0 0000 ; THE BUILT-IN OFR COM'D WILL BE SENT TO THE CP AND ; AU000085 0 0000 ; AFTER 1 MSEC THE DMA REQUESTS BE SERVED BY ENBL CP ; AU000086 0 0000 ; READ IF ANY INTR'PTS PENDING AND IF NOT SERVE THE ; AU000087 0 0000 ; AUTO OUTPUT TO THE MP I/F SIMULATOR. THE DMA WILL ; AU000088 0 0000 ; BE COMPLETED BY THE CP ACKNOWLEDGE INTERRUPT. ; AU000089 0 0000 ; HERE UPON A REVERSE BOOT (OFR COM'D TYPE 8) IS ; 0 0000 ; STARTED BY SENDING THE COM'D TO THE CP, WAIT 1 MSEC; AU000090 0 0000 ; AND THEN SERVE THE DMA REQUESTS UNTIL THE RECEIPT ; AU000091 0 0000 ; OF THE CP ACKNOWLEDGE INTR'PT. ; AU000092 0 0000 ; A COMPARISON BETWEEN THE REVEIVED DATA AND THOSE ; AU000093 0 0000 ; ACTUALLY SENT ARE PERFORMED. THE STATUS OF THIS ; AU000094 0 0000 ; COMPARISON WILL BE SAVED FOR EACH RUN. ; AU000095 0 0000 ; AFTER LOOPCNT-1 (DEFAULT 1000) TEST RUNS THE ; AU000096 0 0000 ; RESULT WILL BE PRINTED AND THE INDICATORS RESET. ; AU000097 0 0000 ; THIS WILL BE REPEATED INDEFINITELY. ; AU000098 0 0000 ; ; AU000099 0 0000 ; IT MUST BE NOTED THAT THE PROGRAM DOES NOT USE THE ; AU000100 0 0000 ; INTERRUPT GENERATED BY THE INDICATOR AND REQUEST ; AU000101 0 0000 ; OF THE MP I/F SIMULATOR H/W BUT IN THE EVENT OF ; AU000102 0 0000 ; OF A MISSING REQUEST A LOOP OF 5 MES IS SET UP ; AU000103 0 0000 ; TO TAKE CARE OF THIS. ; AU000104 0 0000 ; ; AU000105 0 0000 ; IF THE NUMBER ENTERED AFTER THE 'OFR' IS NON-ZERO ; AU000106 0 0000 ; AN EOB WILL BE SENT TO THE CP SYSTEM WHEN 7 DATA ; AU000107 0 0000 ; (CP-)WORDS ARE LEFT TO BE TRANSFERRED. 1 WILL ; AU000108 0 0000 ; INTODUCE AN EOB IN THE MP TO CP TRANSFER (AUTO ; AU000109 0 0000 ; OUTPUT) WHILE 2 WILL INTRODUCE AN EOB IN THE CP TO ; AU000110 0 0000 ; MP TRANSFER (AUTO INPUT MODE). ; AU000111 0 0000 ; 3 WILL INTRODUCE EOBS IN BOTH DIRECTIONS. ; AU000112 0 0000 ; THE EOBS ARE SENT SUCH THAT THE LAST 7 CP-WORDS ; AU000113 0 0000 ; WILL NEVER BE TRANSMITTED. ; AU000114 0 0000 ; ; AU000115 0 0000 ; 6) MR: MASTER RESET. ; AU000116 0 0000 ; LOOP ON MASTER RESET (AS FOR 4). ; AU000117 0 0000 ; ; AU000118 0 0000 ; 7) MC: MASTER CLEAR. ; AU000119 0 0000 ; A SINGLE DEV MASTER CLEAR COM'D IS SENT TO BOTH ; AU000120 0 0000 ; CPS. UPON THIS THE PROGRAM WILL ASK FOR FURTHER ; AU000121 0 0000 ; DATA. ; AU000122 0 0000 ; ; AU000123 0 0000 ; ; AU000124 0 0000 ; 5.3.3. SPECIAL DRIVER INTERFACES. ; AU000125 0 0000 ; --------------------------------- ; AU000126 0 0000 ; A.INPUT DATA. ; AU000127 0 0000 ; WHEN THE PROCESS HAS BEEN ACTIVATED CONTROL IS NOT LEFT OVER ; AU000128 0 0000 ; TO ANY OTHER PROCESS. ; AU000129 0 0000 ; ; AU000130 0 0000 ; ; AU000131 0 0000 ; B.OUTPUT ; AU000132 0 0000 ; WHEN LOOPING ON NON-OFR COM'DS NO OUTPUT WILL BE DONE EXCEPT ; AU000133 0 0000 ; THE COM'DS SENT TO THE CP SYSTEM. ; AU000134 0 0000 ; THE OFR LOOP WILL AFTER EACH RUN HAVE ITS STATUS PRINTED ON THE ; AU000135 0 0000 ; LINE PRINTER: ; AU000136 0 0000 ; ; 0 0000 ; ...1.... BINARY PATTERN DESCRIBING A NUMBER OF CONDITIONS; 0 0000 ; WHICH ARE CHECKED DURING EACH TEST LOOP. HIGH MEANS; AU000137 0 0000 ; THAT THE CORRESPONDING CONDITION HAS BEEN PRESENT. ; AU000138 0 0000 ; THE BIT PATTERN IS TO BE INTERPRETED AS FOLLOWS: ; AU000139 0 0000 ; 0 WORD RECEIVED NOT MATCHING THAT SENT ; AU000140 0 0000 ; 4 REQUEST RECEIVED IN INTERVAL 105 USEC - 5 MEC. ; AU000141 0 0000 ; 5 NO REQUEST RECEIVED AFTER 5 MSECS. ; AU000142 0 0000 ; 6 OVERRUN, I.E. TOO MANY REQ'S RECEIVED. ; AU000143 0 0000 ; ; AU000144 0 0000 ; DDDDD TOTAL NUMBER OF REQUESTS RECOGNIZED BY THE PROCESS ; AU000145 0 0000 ; DURING THE TOTAL LOOP. THIS WILL HAVE TO EQUAL ; AU000146 0 0000 ; 2*(NO OF LOOPS)*(2+(WORDCOUNT/2)+1+1) ; AU000147 0 0000 ; WORDCOUNT BEING THE NO OF DATA WORDS INVOLVED ; AU000148 0 0000 ; IN THE BOOT LOADING USED - OFR 2/8. ; AU000149 0 0000 ; ; AU000150 0 0000 ; 2*HHHH HEX DUMP OF THE INTEGRATED CP ACKNOWLEDGE INTR'PT ; AU000151 0 0000 ; RECEIVED AFTER EACH DMA TRANSFER. THE FIRST WILL ; AU000152 0 0000 ; FOR THE AUTO OUTPUT (MP->CP) WHILE THE SECOND IS ; AU000153 0 0000 ; FOR THE AUTO INPUT (CP->MP) DATA TRANSFER. ; AU000154 0 0000 ; ; AU000155 0 0000 ; 8*DDDD COUNTERS ASSOCIATED WITH THE BIT PATTERN DESCRIBED ; AU000156 0 0000 ; ABOVE.. EACH TIME THE SPECIFIC CONDITION HAS BEEN ; AU000157 0 0000 ; PRESENT THE ASSOCIATED COUNTER WILL BE INCREASED ; AU000158 0 0000 ; BY ONE. ; AU000159 0 0000 ; ; AU000160 0 0000 ; HHHH HEX DUMP OF INTEGRATED STATUS BEFORE ENABLE ; AU000161 0 0000 ; HHHH HEX DUMP OF STATUS FOR MP -> CP AFTER ENABLE ; AU000162 0 0000 ; HHHH HEX DUMP OF STAUTS FOR CP -> MP AFTER ENABLE ; AU000163 0 0000 ; ; AU000164 0 0000 ; ; AU000165 0 0000 ; THE PROGRAM CAN BE PATCHED IN THE PROCEDURE 'XFERERR' TO PRINT ; AU000166 0 0000 ; FAULTY DATA RECEIVED BY THE CP SYSTEM. NOTE THAT IN THIS PRINT ; AU000167 0 0000 ; -OUT DATA MATCHING IN FRONT OF WORD-IN-ERROR WILL ALL HAVE BEEN ; AU000168 0 0000 ; ZEROED. ALSO ONE LINE WILL BE PRINTED FOR EACH ERROR DETECTED. ; AU000169 0 0000 ; ; AU000170 0 0000 ; LARGE PARTS OF THE PROGRAM HAS BEEN DIRECTLY COPIED FROM THE ; AU000171 0 0000 ; CPTDS MODULE 'MP I/F DRIVER'. ; AU000172 0 0000 ; ; 0 0000 ;-----------------------------------------------------------------------; AU000173 0 0000 BEGIN MODULE #3007 ; AU000174 0 0000 NOLIST ; AU000373 0 0000 LIST ; AU000373 AU000374 0 0000 REQST= #0, INDIC= #1 ; MP I/F STATUS BITS ; AU000375 0 0000 ; ; AU000376 0 0000 DEVCTL=BIT7+BIT4 ; AU000377 0 0000 EOBCTL=BIT7+BIT1 ; AU000378 0 0000 OFRCTL=BIT7+BIT3 ; AU000379 0 0000 STPCTL=BIT7+BIT0 ; AU000380 0 0000 ; ; AU000381 0 0000 ; ; AU000382 0 0000 COMDXFER= BIT3 ; AU000383 0 0000 ENBLXFER= BIT4 ; AU000384 0 0000 BYTEXFER= BIT5 ; AU000385 0 0000 CLRSETUP= COMDXFER+ENBLXFER ; AU000386 0 0000 DEVSETUP= COMDXFER+BYTEXFER+2 ; AU000387 0 0000 ENBSETUP= ENBLXFER+BYTEXFER+0 ; AU000388 0 0000 EOBSETUP= COMDXFER+BYTEXFER+1 ; AU000389 0 0000 OFRSETUP= COMDXFER+BYTEXFER+5 ; AU000390 0 0000 STPSETUP=EOBSETUP ; AU000391 0 0000 XFERSETUP=BYTEXFER+3 ; AU000392 0 0000 ; ;PRCGEN1 ; 0 0000 ;-----------------------------------------------------------------------; AU000393 0 0000 ; GENERATE PROCESS DESCRIPTOR FOR FIRST PROCESS. ; 0 0000 ;-----------------------------------------------------------------------; AU000394 0 0000 NOLIST ; AU000442 0 0016 LIST ; AU000442 AU000443 0 0016 ; ; AU000444 0 0016 L3050CTL: <: :> ; RECEIVED CONTROL CHARACTERS ; AU000445 0 0017 0 ; FIRST RECEIVED CHAR (RIGHTMOST) ; AU000446 0 0018 0 ; SECND RECEIVED CHAR (RIGHTMOST) ; AU000447 0 0019 ; ; AU000448 0 0019 COMD: 0 ; AU000449 0 001A ; ; AU000450 0 001A BOOT: BOOT2 ; AU000451 0 001B BOOT2: 0, 0, 0, 0 ; FIRST FOUR WORDS (LETTER DUMMY) ; AU000452 0 001F 1, 21, 2, PRIBUF ; OFR COM'D BOOT CP FROM MP ; AU000453 0 0023 BOOT2S: 0, 0, 0, 0, 1, 21, 2, SECBUF ; AU000454 0 002B BOOT8: 0, 0, 0, 0, 1, 21, 1*#100+8, INBUF ; AU000455 0 0033 ; ; AU000456 0 0033 ; ; AU000457 0 0033 IOXSIMADDR: #06 ; DEVICE ADDRESS OF THE IOX SIMULATOR MODULE ; AU000458 0 0034 DEVICEADDR: #80 ; VALID CP ADDRESSES #40 & #80 ; AU000459 0 0035 ; ; AU000460 0 0035 USEC: 75 ; COUNTER FOR 150 USEC DELAY ; AU000461 0 0036 MSEC1: 500 ; COUNTER FOR 1 MSEC DELAY ; AU000462 0 0037 MSEC2: 1000 ; 2 MSEC DELAY ; AU000463 0 0038 MSEC5: 2500 ; 5 MSEC DELAY ; AU000464 0 0039 MSEC20: 10000, 60000 ; 20 AND 120 MSECS DELAY ; 0 003B ;-----------------------------------------------------------------------; AU000465 0 003B ; ; AU000466 0 003B 1000 ; NO OF LOOP BETWEEN PRINT-OUTS ; AU000467 0 003C LOOPCNT:0 ; AU000468 0 003D ; ; AU000469 0 003D REQSTS: 0 ; NO OF REQ'STS RECEIVED ; AU000470 0 003E CPINTRPT:0 ; INTEGRATED STATUS FROM CP, MP TO CP TRANSFER ; AU000471 0 003F 0 ; - CP TO MP (DUMP) ; AU000472 0 0040 ; ; AU000473 0 0040 ERROR: #0000 ; NON ZERO MEANS ERROR DETECTED ; AU000474 0 0041 COUNT: 0 ; BIT 0 NO OF WORDS RECEIVED MISMATCHING SENT ; AU000475 0 0042 0 ; BIT 1 COUNT ; AU000476 0 0043 0 ; BIT 2 COUNT ; AU000477 0 0044 0 ; BIT 3 COUNT ; AU000478 0 0045 0 ; BIT 4 NO OF MISSING REQUESTS ; AU000479 0 0046 0 ; BIT 5 MISSING REQUEST AFTER 2 MSECS ; AU000480 0 0047 0 ; BIT 6 TOO MANY REQUESTS RECEIVED,I.E. EOB ; AU000481 0 0048 0 ; BIT 7 ; AU000482 0 0049 ; ; AU000483 0 0049 STBYTE: 0 ; IOX SIMULATOR STATUS BEFORE ENABLE ; AU000484 0 004A ; ; IOX STATUS AFTER ENABLE ; AU000485 0 004A 0 ; IF MP -> CP ; AU000486 0 004B 0 ; IF CP -> MP ; AU000487 0 004C ; ; AU000488 0 004C 0, REPEAT 53 ; FORCE PROGR AM TO START AT #3100 ; AU000489 0 0082 0, REPEAT 10 ; ; AU000490 0 008D STACK: 0 ; AU000491 0 008E ; ; AU000492 0 008E HEADER: BYTES ; AU000493 0 008F <:<13> ID STATUS REQ'S INTR'T - OVER MS'N:> ; AU000494 0 00AB <:G LONG - - - MATCH ENBL MP-CP CP-MP<13>:> ; AU000495 0 00C4 BYTES=2*(LOC-1-HEADER) ; AU000496 0 00C4 ; ; AU000497 0 00C4 PRIBUF: #1000, #F00, #0FF, 16 ; START ADDR, SECTION, BASE, COUNT ; AU000498 0 00C8 #0101, #1010, #2222, #3333, #4444, #5555, #6666, #7777 ; AU000499 0 00D0 #8888, #9999, #AAAA, #BBBB, #CCCC, #DDDD, #EEEE, #FFFF ; AU000500 0 00D8 #FFF8, 0 ; CORRESPONDING CHECKSUM ; AU000501 0 00DA ; ; AU000502 0 00DA SECBUF: #0FF8, #0F0, #F00, 16 ; START ADDR, SECTION, BASE, COUNT ; AU000503 0 00DE #FEEF, #EDDE, #DCCD, #CBBC, #BAAB, #A99A, #9889, #8778 ; AU000504 0 00E6 #7667, #6556, #5445, #4334, #3223, #2112, #1001, #0FF7 ; AU000505 0 00EE #FFFF, 0 ; CORRESPONDING CHECKSUM ; AU000506 0 00F0 ; ; AU000507 0 00F0 ; ;PRCGEN2 ; AU000508 0 00F0 NOLIST ; AU000510 0 00F0 LIST ; AU000510 AU000511 0 00F0 LOGMSG: LOC=LOC+1 ; ALLOCATE FOR NO OF CHARS TO BE PRINTED ; AU000512 0 00F1 LOC=LOC+100 ; ALLOCATE FOR PRINT BUFFER ; AU000513 0 0155 HEXDUMP:LOC=LOC+1 ; 6 BYTES IN EACH HEX WORD ; AU000514 0 0156 ; ; AU000515 0 0156 LOC=LOC+6 ; ALLOCATE FOR HEX DUMP ; AU000516 0 015C INBUF: LOC=LOC+128 ; AU000517 0 01DC ; ;PRCGEN3 ; AU000518 0 01DC NOLIST ; AU000520 0 01DC LIST ; AU000520 AU000521 0 01DC USE PROG ; AU000522 1 0000 LOC=0 ; 1 0000 ;-----------------------------------------------------------------------; AU000523 1 0000 INITIALIZE: ; AU000524 1 0000 MOV PRCID R3 ; OWN PROCESS LOGICAL NO ; AU000525 1 0002 MOV BAS R4 ; ; AU000526 1 0003 MON CRP ; AU000527 1 0004 MON ERR ; AU000528 1 0005 MOVC ORD R0 ; ACTIVATE OWN PROCESS ; AU000529 1 0006 MON INQ, MON ERR ; AU000530 1 0008 ; ; AU000531 1 0008 MON WPSTLP ; AU000532 1 0009 10,<:DRV SPECIAL 771207<13>:> ; AU000532 1 000A**************** A ******************************************************** MODE-WRN 302 , AU000533 1 0014 MON RTI ; AU000534 1 0015 ; ; AU000535 1 0015 MOVC <:<13>:> R0 ; AU000536 1 0016 MON WSCOC ; AU000537 1 0017 ; ; AU000538 1 0017 MOVC LOGMSG R4 ; POINT START OUTPUT AREAS ; AU000539 1 0018 MOVC <: :> R0 ; ; AU000540 1 001A MOVC INBUF-LOGMSG R2 ; FOR I:=1 UNTIL AREA CLEARED ; AU000541 1 001B INIT5: MOV R0 X4 ; BLANK OFF OUTPUT AREA ; AU000542 1 001C ADDC 1 R4 ; POINT NEXT ; AU000543 1 001D SOB R2 INIT5 ; END FOR UNTIL; ; AU000544 1 001E MOVC LOGMSG R4 ; POINT START OUTPUT BUFFER ; AU000545 1 001F MOVC 4+3*6+2+8*6+3*6+1 X4 ; PREPARE BYTE COUNT ; 1 0021 ;-----------------------------------------------------------------------; AU000546 1 0021 ; ; AU000547 1 0021 ; THE BELOW CODE WILL READ DATA FROM THE OC AND CODE THE RECEIVED ; AU000548 1 0021 ; DATA AS FOLLOWS: THE FIRST CHAR WILL BE MERGED WITH THE FIRST ; AU000549 1 0021 ; CHARACTER AFTER A SPACE. THIS WILL MAKE UP THE KEY TO BE USED ; AU000550 1 0021 ; WHEN DETERMINING THE LOOP TO BE SET UP: ; AU000551 1 0021 ; O0, O1, O2, O3, OI, DM, DI, E , DS, MR, MC. ; AU000552 1 0021 ; THE CONTROL WORD IS SAVED IN L3050CTL ; AU000553 1 0021 ; ; 1 0021 ;-----------------------------------------------------------------------; AU000554 1 0021 CPCLEAR: ; AU000555 1 0021 MOVC <:>:> R0 ; AU000556 1 0022 MON WSCOC ; AU000557 1 0023 MOVC <: :> R0 ; AU000558 1 0024 MOVC 128 R5 ; FOR I:=1 UNTIL 128 ; AU000559 1 0025 CPCL5: ; DO ; AU000560 1 0025 MOV R0 INBUF-1.X5 ; RESET INCOMING DATA AREA ; AU000561 1 0027 SOB R5 CPCL5 ; END FOR UNTIL INBUF CLEARED; ; AU000562 1 0028 ; ; AU000563 1 0028 MOVC INBUF R4 ; DO UNTIL CHAR <CR> MET ; AU000564 1 002A READOC: MON RSCOC ; GET SINGLE CHAR FROM OC ; AU000565 1 002B MON WSCOC ; ; AU000566 1 002C MON WSCLP ; REPEAT ON LP; ; AU000567 1 002D MOV R0 X4 ; SAVE ENTERED CHAR ; AU000568 1 002E INEP R0 <:<13>:> ; IF <CR> THEN ; AU000569 1 002F ADDC 1 R4 ; POINT NEXT OUTPUT ADDR ; AU000570 1 0030 JMP READOC ; END DO UNTIL <CR>; ; AU000571 1 0031 ; ; AU000572 1 0031 MOVC <: :> X4 ; ELIMINATE THE <CR>; ; AU000573 1 0033 MOVC INBUF R4 ; DO UNTIL FIRST SPACE MET ; AU000574 1 0035 REA10: INEP X4 <: :> ; ; AU000575 1 0037 ADDC 1 R4 ; POINT NEXT RECEIVED CHAR ; AU000576 1 0038 JMP REA10 ; END DO UNTIL SPACE; ; AU000577 1 0039 ; ; AU000578 1 0039 MOV 1. X4 R0 ; GET FIRST CHAR AFTER SPECE; ; AU000579 1 003A MOV R0 L3050CTL+2 ; SAVE SECOND READ CHAR ; AU000580 1 003B SLL R0 8 ; SET UP AS MOST SIGNIFICANT ; AU000581 1 003C MOV INBUF R1 ; GET FIRST RECEIVED CHAR ; AU000582 1 003E MOV R1 L3050CTL+1 ; AU000583 1 003F IOR R1 R0 ; MERGE ; AU000584 1 0040 MOV R0 L3050CTL ; AND SAVE AS LOOP CONTROL; ; AU000585 1 0041 ; ; AU000586 1 0041 MOVC 128 R5 ; FOR I:=1 UNTIL 128 ; AU000587 1 0042 REA80: ; DO ; AU000588 1 0042 CLR INBUF-1.X5 ; RESET INCOMING DATA AREA ; AU000589 1 0044 SOB R5 REA80 ; END FOR UNTIL INBUF CLEARED; ; AU000590 1 0045 ; ; AU000591 1 0045 ; ; AU000592 1 0045 ; PRINT HEADER FOR TEST OUTPUT ; AU000593 1 0045 ; ; AU000594 1 0045 CPDRIVER: ; AU000595 1 0045 MOVC HEADER R6 ; POINT TO HEADER ; AU000596 1 0046 IEQ X6 0 ; IF NOT FIRST TIME ; AU000597 1 0047 JMP CPD80 ; THEN SKIP HEADER; ; AU000598 1 0048 MOV L3050CTL+1 R0 ; ; AU000599 1 0049 INE R0 <:O:> ; IF NON-OFR ; AU000600 1 004B JMP CPD80 ; AU000601 1 004C MOVC <:<13>:> R0 ; AU000602 1 004D MON WSCOC ; LINE FEED ON CR & LP; ; AU000603 1 004E MON WSCLP ; AU000604 1 004F MON WDSTLP ; GO PRINT HEADER ON LP ; AU000605 1 0050 MOVC <:-:> R0 ; AU000606 1 0051 MOV HEADER R2 ; FOR I:=1 UNTIL HEADER LENGTH ; AU000607 1 0052 CPD50: MON WSCLP ; DO ; AU000608 1 0053 SOB R2 CPD50 ; PRINT BARS UNDERNEATH; ; AU000609 1 0054 MOVC HEADER R6 ; AU000610 1 0055 CLR 0. X6 ; FLAG END ; AU000611 1 0056 CPD80: ; AU000612 1 0056 MOV DEVICEADDR R5 ; GET CURRENT CP DEVICE ADDR ; AU000613 1 0057 IEQ R5 #80 ; IF OLD DEVICE ADDR IN COM'D #80 ; AU000614 1 0059 MOVC #00 R5 ; THEN RESET; ; AU000615 1 005A ADDC #40 R5 ; DETERMINE NEXT CP DEVICE ADDR; ; AU000616 1 005B MOV R5 DEVICEADDR ; ; AU000617 1 005C ; ; AU000618 1 005C MOV L3050CTL R7 ; POINT CONTROL LETTER ; AU000619 1 005D IEQ R7 <:O0:>, JMP OFRLOOP; OFR NORMAL ; AU000620 1 0061 IEQ R7 <:O1:>, JMP OFRLOOP; OFR, EOB MP TO CP ; AU000621 1 0065 IEQ R7 <:O2:>, JMP OFRLOOP; OFR, EOB CP TO MP ; AU000622 1 0069 IEQ R7 <:O3:>, JMP OFRLOOP; OFR, OEB BOTH DIRECTIONS ; AU000623 1 006D IEQ R7 <:OI:>, JMP OFRLOOP; OFR INVALID ; AU000624 1 0071 IEQ R7 <:DI:>, JMP DEVCMD ; DEV INTERRUPT PERMIT ; AU000625 1 0075 IEQ R7 <:DM:>, JMP DEVCMD ; DEV MASTER CLEAR ; AU000626 1 0079 IEQ R7 <:DS:>, JMP STPCMD ; DEVICE STOP ; AU000627 1 007D IEQ R7 <:E :>, JMP EOBCMD ; EOB ; AU000628 1 0081 IEQ R7 <:MR:>, JMP CLRCMD ; MASTER RESET ; AU000629 1 0085 INE R7 <:MC:>,JMP CPCLEAR ; ILLIGAL ID ; AU000630 1 0089 ; ; AU000631 1 0089 ; MASTER CLEAR BOTH CPS AND RETURN FOR MORE DATA; ; AU000632 1 0089 MOVC #40<8 R1 ; CP DEVICE ADDRESSS ; 1 008B MOVC #C0<8+DEVCTL R2 ; FOLLOWED BY COM'D AND DATA BYTE;; AU000633 1 008D MOVC DEVSETUP R3 ; SET UP MP I/F CONTROL BYTE ; AU000634 1 008E JMP S5 FILLIF ; AU000635 1 008F MOVC #80<8 R1 ; CP DEVICE ADDRESSS ; 1 0091 MOVC #C0<8+DEVCTL R2 ; FOLLOWED BY COM'D AND DATA BYTE;; AU000636 1 0093 MOVC DEVSETUP R3 ; SET UP MP I/F CONTROL BYTE ; AU000637 1 0094 JMP S5 FILLIF ; AU000638 1 0095 JMP CPCLEAR ; AU000639 1 0096 ; ; 1 0096 ;-----------------------------------------------------------------------; AU000640 1 0096 ; ; AU000641 1 0096 ; LOOP ON SINGLE COM'D ; AU000642 1 0096 ; ; 1 0096 ;-----------------------------------------------------------------------; AU000643 1 0096 ; ; AU000644 1 0096 CLRCMD: ; COM'D&ENBL LINE HIGH AT SAME TIME ; AU000645 1 0096 MOVC CLRSETUP R3 ; SET UP FOR MASTER RESET OF CP ; AU000646 1 0097 JMP SIN90 ; AU000647 1 0098 ; ; AU000648 1 0098 DEVCMD: ;ADDR, COM'D, DATA (1) ; AU000649 1 0098 MOV DEVICEADDR R1 ; DEVICE ADDR ; AU000650 1 0099 SLL R1 8 ; FIRST TO BE SENT; ; AU000651 1 009A MOVC #C0<8+DEVCTL R2 ; FORCE MASTER CLEAR ; AU000652 1 009C MOV L3050CTL R7 ; GET CONTROL ; AU000653 1 009D IEQ R7 <:DI:> ; IF INTERRUPT PERMIT ; AU000654 1 00A0 MOVC #A0<8+DEVCTL R2 ; THEN CHANGE DAT1 FIELD ; AU000655 1 00A2 MOVC DEVSETUP R3 ; SETUP MP SIM GO COM'D ; AU000656 1 00A3 JMP SIN90 ; AU000657 1 00A4 ; ; AU000658 1 00A4 EOBCMD: ;ADDR, COM'D ; AU000659 1 00A4 MOV DEVICEADDR R2 ; AU000660 1 00A5 ADDC EOBCTL<8 R2 ; CONTROL BYTE SECOND ; AU000661 1 00A7 MOVC EOBSETUP R3 ; SETUP MP SIM GO COM'D ; AU000662 1 00A8 JMP SIN90 ; AU000663 1 00A9 ; ; AU000664 1 00A9 STPCMD: ;ADDR,COM'D ; AU000665 1 00A9 MOV DEVICEADDR R2 ; AU000666 1 00AA ADDC STPCTL<8 R2 ; DEVICE STOP COM'D SETUP ; AU000667 1 00AC MOVC STPSETUP R3 ; SETUP MP SIM GO COM'D ; AU000668 1 00AD ; ; AU000669 1 00AD SIN90: ; AU000670 1 00AD JMP S5 FILLIF ; AU000671 1 00AE MOV USEC R5 ; FOR I:=0 UNTIL 150 USEC ; AU000672 1 00AF SIND5: SOB R5 SIND5 ; DO WAIT; ; AU000673 1 00B0 JMP CPDRIVER ; 1 00B1 ;-----------------------------------------------------------------------; AU000674 1 00B1 ; ; AU000675 1 00B1 ; SECTION FOR LOOPING ON BUILT-IN OFR COM'DS. ; AU000676 1 00B1 ; ; 1 00B1 ;-----------------------------------------------------------------------; AU000677 1 00B1 OFRLOOP: ; AU000678 1 00B1 MOVC STBYTE+8-LOOPCNT R5 ; FOR I:=1 UNTIL AREA SIZE ; AU000679 1 00B2 OFR01: ; DO ; AU000680 1 00B2 CLR LOOPCNT-1.X5 ; CLEAR OFF WORD ; AU000681 1 00B3 SOB R5 OFR01 ; END CLEARING AREA; ; AU000682 1 00B4 ; ; AU000683 1 00B4 MOVC STACK R7 ; AU000684 1 00B5 MOV BOOT R5 ; FIRST XFER MODE BEING MP TO CP ; AU000685 1 00B6 ; ; AU000686 1 00B6 OFR10: ; AU000687 1 00B6 MOV R5 COMD ; SAVE POINTER TO XFER 'LETTER' ; AU000688 1 00B7 ; ; AU000689 1 00B7 ; SEND MASTER RESET (MASTER CLEAR IF PATCHED) TO THE CP ; AU000690 1 00B7 MOVC CLRSETUP R3 ; RISE COM'D AND ENBL LINE AT ; AU000691 1 00B8 JMP OFR15 ;*** SKIP THE DEV MASTER CLEAR *** ; AU000692 1 00B9 MOV DEVICEADDR R1 ; ADDR, COM'D, DATA BYTE ; AU000693 1 00BA SLL R1 8 ; DEVICE ADDRESS FIRST ; AU000694 1 00BB MOVC #C0<8+DEVCTL R2 ; FORCE A DEV MASTER CLEAR ; AU000695 1 00BD MOVC DEVSETUP R3 ; SETUP FOR A DEV COM8D TO GO ; AU000696 1 00BE JMP S5 FILLIF ; GO SEND COM'D ; AU000697 1 00BF MOV MSEC20 R5 ; FOR I:=1 UNTIL 20 MSEC ; AU000698 1 00C0 JMP MPD20 ; DO ; AU000699 1 00C1 OFR15: ; AU000700 1 00C1 JMP S5 FILLIF ; SIMULTANEOUSLY ; AU000701 1 00C2 MOV MSEC1 R5 ; FOR I:=0 UNTIL 1 MSEC ; AU000702 1 00C3 MPD20: SOB R5 MPD20 ; DO WAIT; ; AU000703 1 00C4 ; ; AU000704 1 00C4 ; SEND THE OFR TO THE CP ; AU000705 1 00C4 ; ; AU000706 1 00C4 MOV DEVICEADDR R2 ; 1 00C5 MOVC OFRCTL<8 R0 ; OFR COM'D BYTE SECOND TO BE SENT; AU000707 1 00C7 IOR R2 R0 ; MERGED WITH DEVICE ADDRESS ; AU000708 1 00C8 MOV COMD R5 ; THEN GET BUILT-IN OFR'S; ; AU000709 1 00C9 MOVL LTMS2. X5 R12 ; ; AU000710 1 00CA SWP R1 ; R1:= DAT FIELDS ; AU000711 1 00CB MOV L3050CTL+2 R5 ; GET TYPE CONTROL ; AU000712 1 00CC IEQ R5 <:I:> ; IF INVALID OFR ; AU000713 1 00CE MOVC #25 R2 ; THEN FORCE SO; ; AU000714 1 00CF MOVC OFRSETUP R3 ; AU000715 1 00D0 JMP S5 FILLIF ; AU000716 1 00D1 MOV MSEC1 R5 ; FOR I:=0 UNTIL 1 MSEC ; AU000717 1 00D2 MPD30: SOB R5 MPD30 ; DO WAIT; ; AU000718 1 00D3 ; ; AU000719 1 00D3 MOV COMD R5 ; POINT TO SIM'S LETTER ; AU000720 1 00D4 MOV LTMS4. X5 R6 ; POINT ASSICIATED BUFFER ; AU000721 1 00D5 MOV LTMS2. X5 R4 ; SET UP LOOP COUNT ; AU000722 1 00D6 ;------------------------------------------------------ ; AU000723 1 00D6 ; ; AU000724 1 00D6 ; WAIT FOR REQUEST, SEND ENABLE, SEND/RECEIVE DATA ; AU000725 1 00D6 ; ; AU000726 1 00D6 ;------------------------------------------------------ ; AU000727 1 00D6 OFR40: ; FOR I:=1 UNTIL INTR'PT RECEIVED ; AU000728 1 00D6 MOVC 0 R5 ; AU000729 1 00D7 MOV IOXSIMADDR R2 ; AU000730 1 00D8 SIO R0 R2 ; AU000731 1 00D9 SBZ R0 REQST ; IF REQUEST FROM CP MISSING ; AU000732 1 00DA JMP OFR50 ; THEN ; AU000733 1 00DB MOV ERROR. X5 R1 ; GET FLAGS ; AU000734 1 00DD SETS R1 4 ; AU000735 1 00DE MOV R1 ERROR. X5 ; SAVE STATUS; ; AU000736 1 00E0 INC COUNT+4.X5 ; UPDATE NO OF MISSING ; AU000737 1 00E2 MOV MSEC5 R0 ; DO UNTIL 5 MSECS ELAPSED ; AU000738 1 00E3 MPD45: SOB R0 MPD45 ; WAIT; ; AU000739 1 00E4 SIO R0 R2 ; GET INDICATORS ; AU000740 1 00E5 SBZ R0 REQST ; IF REQUEST STILL MISSING ; AU000741 1 00E6 JMP OFR50 ; THEN ; AU000742 1 00E7 SETS R1 5 ; FLAG MISSING REQST ; AU000743 1 00E8 MOV R1 ERROR. X5 ; SAVE STATUS ; AU000744 1 00EA INC COUNT+5. X5 ; UPDATE NO OF NOGO'S; ; AU000745 1 00EC JMP OFR90 ; NO MORE WORK THIS LOOP; ; AU000746 1 00ED OFR50: ; END LOOK FOR REQ'ST ; AU000747 1 00ED INC REQSTS.X5 ; INDICATE NEW REQUEST SEEN BY MP ; AU000748 1 00EE MOV STBYTE R1 ; GET OLD I/F STATUS ; AU000749 1 00EF IOR R0 R1 ; INTEGRATE WITH NEW ONE ; AU000750 1 00F0 MOV R1 STBYTE ; AND SAVE ; ; AU000751 1 00F1 ; ; AU000752 1 00F1 MODC BIT12+BIT13 ; AU000753 1 00F2 SIO R0 R2 ; CLEAR STATUS AND COUNT ; AU000754 1 00F3 MOV DEVICEADDR R2 ; AU000755 1 00F4 SLL R2 8 ; AU000756 1 00F5 MOVC ENBSETUP R3 ; AU000757 1 00F6 JMP S5 FILLIF ; AU000758 1 00F7 ; ; AU000759 1 00F7 MOV IOXSIMADDR R2 ; ; AU000760 1 00F8 SIO R0 R2 ; GET STATUS OF IOX SIM I/F ; AU000761 1 00F9 SBZ R0 INDIC ; IF NO INDICATOR ; AU000762 1 00FA JMP OFR80 ; THEN ; AU000763 1 00FB MOV COMD R5 ; POINT SIM'S LETTER ; AU000764 1 00FC MOV LTMS3. X5 R5 ; AU000765 1 00FD SBZ R5 8 ; IF MP TO CP MODE ; AU000766 1 00FE JMP CPELSE ; THEN ; AU000767 1 00FF CPTHEN: ; AU000768 1 00FF MOV STBYTE+1 R1 ; GET OLD I/F STATUS ; AU000769 1 0100 IOR R0 R1 ; INTEGRATE WITH NEW ONE ; AU000770 1 0101 MOV R1 STBYTE+1 ; AND SAVE ; ; AU000771 1 0102 MOVL 0. X6 R12 ; AU000772 1 0103 MOVC XFERSETUP R3 ; AU000773 1 0104 JMP S5 FILLIF ; AU000774 1 0105 JMP CPDONE ; AU000775 1 0106 CPELSE: ; ELSE SERVE CP TO MP MODE ; AU000776 1 0106 MOV STBYTE+2 R1 ; GET OLD I/F STATUS ; AU000777 1 0107 IOR R0 R1 ; INTEGRATE WITH NEW ONE ; AU000778 1 0108 MOV R1 STBYTE+2 ; AND SAVE ; ; AU000779 1 0109 MODC #300 ; AU000780 1 010A RIO R0 R2 ; AU000781 1 010B MODC #200 ; AU000782 1 010C RIO R1 R2 ; AU000783 1 010D SRL R1 8 ; AU000784 1 010E SRLL R0 8 ; AU000785 1 010F ; ; AU000786 1 010F MODC #100 ; AU000787 1 0110 RIO R1 R2 ; AU000788 1 0111 MODC #000 ; AU000789 1 0112 RIO R2 R2 ; AU000790 1 0113 SRL R2 8 ; AU000791 1 0114 SRLL R1 8 ; AU000792 1 0115 MOVL R01 0. X6 ; AU000793 1 0116 ; ; AU000794 1 0116 CPDONE: ; AU000795 1 0116 INE R4 11 ; IF TIME TO CHECK IF EOB TO GO ; AU000796 1 0117 JMP OFR70 ; THEN ; AU000797 1 0118 MOV L3050CTL+2 R0 ; GET OFR CONTROL TYPE ; AU000798 1 0119 XTR R0 2 ; ISOLATE EOB CONTROL BITS; ; AU000799 1 011A MOV COMD R2 ; GET TYPE OF OFR LOOP; ; AU000800 1 011B SEQP R2 BOOT8 ; IF DURING MP TO CP DMA ; AU000801 1 011D IBN R0 0 ; AND EOB TO BE INTRODUCED ; AU000802 1 011E SETS R0 2 ; ; AU000803 1 011F SNEP R2 BOOT8 ; OR DURING CP TO MP DMA ; AU000804 1 0121 IBN R0 1 ; AND EOB TO BE INTROD ; AU000805 1 0122 SETS R0 2 ; ; AU000806 1 0123 IBZ R0 2 ; ; AU000807 1 0124 JMP OFR70 ; THEN ; AU000808 1 0125 MOV DEVICEADDR R2 ; SET UP DEVICE ADDRESS, ; AU000809 1 0126 ADDC EOBCTL<8 R2 ; CONTROL BITS FOR CP ; AU000810 1 0128 MOVC EOBSETUP R3 ; SETUP TO BE EOB ; AU000811 1 0129 JMP S5 FILLIF ; GO SEND TO CP ; AU000812 1 012A OFR70: ; END TIME TO SEND EOB; ; AU000813 1 012A ; ; AU000814 1 012A ADDC 2 R6 ; POINT NEXT LOCATION IN BUFF ; AU000815 1 012B ADDC -2 R4 ; UPDATE NO OF WORDS LEFT IN XFER ; AU000816 1 012C SLT R4 -1 ; IF NO MORE DATA LEFT THEN EOB ; AU000817 1 012E JMP OFR40 ; AU000818 1 012F MOVC 0 R5 ; ; AU000819 1 0130 MOV ERROR. X5 R0 ; AU000820 1 0132 SETS R0 6 ; FLAG EOB ERROR ; AU000821 1 0133 INC COUNT+6.X5 ; ; AU000822 1 0135 MOV R0 ERROR. X5 ; AU000823 1 0137 JMP OFR40 ; END DO WHILE REQUESTS FROM CP; ; AU000824 1 0138 ;------------------------------------------------------ ; AU000825 1 0138 ; ; AU000826 1 0138 ; READ THE INTR'PT BYTE FROM THE CP ; AU000827 1 0138 ; ; AU000828 1 0138 ;------------------------------------------------------ ; AU000829 1 0138 OFR80: ; INTR'PT RECEIVED FROM CP ; AU000830 1 0138 MODC #300 ; AU000831 1 0139 SIO R0 R2 ; ; AU000832 1 013A MOVC CPINTRPT R1 ; POINT MP TO CP STATUS WORD ; AU000833 1 013B MOV COMD R5 ; GET CURRENT TYPE OF TRANSFER ; AU000834 1 013C IEQ R5 BOOT8 ; IF AUTO INPUT (CP TO MP DUMP) ; AU000835 1 013E ADDC 1 R1 ; THEN POINT THAT STATUS WORD; ; AU000836 1 013F IOR R0 X1 ; INTEGRATE STATUS INTO OLD ONE; ; AU000837 1 0140 ; ; AU000838 1 0140 OFR90: ; AU000839 1 0140 MODC BIT12+BIT13 ; AU000840 1 0141 SIO R0 R2 ; RESET COUNTER ANS STATUS ; AU000841 1 0142 MOV COMD R5 ; AU000842 1 0143 INEP R5 BOOT8 ; IF LAST WAS MP TO CP BOOT LOAD ; AU000843 1 0145 MOVC BOOT8 R5 ; THEN REVERSE ; AU000844 1 0146 JMP OFR99 ; AU000845 1 0147 ; ELSE CHECK IF XFER OK ; AU000846 1 0147 MOV BOOT R4 ; POINT MP->CP BOOT LETTER ; AU000847 1 0148 MOV LTMS4. X4 R4 ; START OF OUTBOUND BUFFER; ; AU000848 1 0149 MOVC BOOT8 R6 ; POINT CP->MP BOOT LETTER ; AU000849 1 014A MOV LTMS2. X6 R3 ; NO OF DATA RECEIVED ; AU000850 1 014B MOV LTMS4. X6 R6 ; START INBOUND BUFFER; ; AU000851 1 014C MOVC 0 R5 ; COMPENSATE OWN BASE ; AU000852 1 014D MOV ERROR. X5 R1 ; AU000853 1 014F OFR95: ; DO UNTIL ALL XFER'D COMPARED ; AU000854 1 014F MOV 0. X4 R0 ; GET OUTBOUND ; AU000855 1 0150 XOR X6 R0 ; COMPARE TO RECEIVED ONE ; AU000856 1 0151 INEP R0 0 ; IF NOT MATCHING ; AU000857 1 0152 JMP S5 XFERERR ; THEN GO FLAG SO; ; AU000858 1 0153 MOVC 0 R5 ; AU000859 1 0154 MOV R5 X6 ; RESET RECEIVE FIELD ; AU000860 1 0155 INCD R4 R6 ; AU000861 1 0156 SOB R3 OFR95 ; END DO UNTIL; ; AU000862 1 0157 MOV R1 ERROR ; AU000863 1 0158 ; ; AU000864 1 0158 INC LOOPCNT.X5 ; AU000865 1 0159 ; ; AU000866 1 0159 MOV BOOT R0 ; GET CURRENT TYPE OF BOOT COM'D ; AU000867 1 015A MOVC BOOT2 R5 ; POINT PRIMARY BOOT LETTER ; AU000868 1 015B IEQ R0 R5 ; IF CURRENT IDENTICAL TO PRIMARY ; AU000869 1 015C MOVC BOOT2S R5 ; THEN FORCE SECONDARY NEXT; ; AU000870 1 015D MOV R5 BOOT ; SAVE POINTER MP TO CP LETTER; ; AU000871 1 015E ; ; AU000872 1 015E ; CHECK IF TIME TO PRINT STATUS ; AU000873 1 015E ; ; AU000874 1 015E MOV LOOPCNT R0 ; GET LOOPCOUNT ; AU000875 1 015F MOV LOOPCNT-1 R1 ; FLAG WHEN TIME TO RRINT ; AU000876 1 0160 IEQ R0 R1 ; IF NO OF LOOP MATCHES ; AU000877 1 0161 JMP LOGDATA ; THEN GO LOG STATUS; ; AU000878 1 0162 OFR99: ; END SETTING MODE UP; ; AU000879 1 0162 JMP OFR10 ; GO PERFORM NEXT TEST LOOP; ; 1 0163 ;-----------------------------------------------------------------------; AU000880 1 0163 ; ; AU000881 1 0163 ; PROCEDURE PREPARE THE MP IOX SIMULATOR BUFFERS AND SEND DATA TO L3050 ; AU000882 1 0163 ; ; AU000883 1 0163 ; PLEASE REFER NIC/557 - IOX SIM DRIVER ; AU000884 1 0163 ; ; AU000885 1 0163 FILLIF: ; AU000886 1 0163 STC 3 ; AU000887 1 0164 MOV IOXSIMADDR R1 ; GET PROPER DEVICE ADDRESS ; AU000888 1 0165 ADDC #500 R1 ; ; AU000889 1 0167 MOVC 4 R2 ; AU000890 1 0168 FILLLOOP: ; AU000891 1 0168 CIO X7 R1 ; AU000892 1 0169 ADDC 1 R7 ; AU000893 1 016A ADDC #100 R1 ; AU000894 1 016C SOB R2 FILLLOOP ; AU000895 1 016D JMP X5 ; AU000896 1 016E ; ; 1 016E ;-----------------------------------------------------------------------; AU000897 1 016E ; ; AU000898 1 016E ; PROCEDURE FOR LOGGING AND RESETTING THE STATUS INDICATORS ; AU000899 1 016E ; ; AU000900 1 016E ; RETURN: ; AU000901 1 016E ; CPDRIVER ; AU000902 1 016E ; ; AU000903 1 016E LOGDATA: ; AU000904 1 016E MOVC <:<10>:> R0 ; AU000905 1 016F MON WSCLP ; FORCE NEW LINE ; AU000906 1 0170 MOVC 4 R0 ; SET UP HEX BUFFER CHAR COUNT ; AU000907 1 0171 MOV R0 HEXDUMP ; AU000908 1 0173 MOV DEVICEADDR R0 ; GET CURRENT CP DEVICE ; AU000909 1 0174 MOVC HEXDUMP+1 R5 ; POINT FIRST CHAR ; AU000910 1 0176 JMP S6 HEX00 ; AU000911 1 0177 MOVC HEXDUMP R6 ; GO TO PRINT ; AU000912 1 0179 MON WDSTLP ; ON LP; ; AU000913 1 017A ; ; AU000914 1 017A MOVC <: :> R0 ; BLANK OFF ; AU000915 1 017B MON WSCLP ; AU000916 1 017C MON WSCLP ; AU000917 1 017D MOV ERROR R1 ; GET ERROR FLAGS ; AU000918 1 017E MOVC 8 R2 ; FOR I:=1 UNTIL 8 ; AU000919 1 017F LOG10: ; DO ; AU000920 1 017F MOVC <:1:> R0 ; DEFAULT HIGH ; AU000921 1 0180 IBZ R1 7 ; IF LOW ; AU000922 1 0181 MOVC <:.:> R0 ; THEN ADJUST ACCORDINGLY; ; AU000923 1 0182 MON WSCLP ; PRINT STATUS ON LP ; AU000924 1 0183 SLL R1 1 ; REMOVE PRINTED BIT; ; AU000925 1 0184 SOB R2 LOG10 ; END FOR UNTIL 16 ; AU000926 1 0185 ; ; AU000927 1 0185 MOVC LOGMSG+3 R5 ; POINT DEDICATED OUTPUT AREA ; AU000928 1 0186 MOV REQSTS R0 ; GET NO OF REQ'STS RECEIVED ; AU000929 1 0187 JMP S6 LOGDEC6 ; AND GO PRINT; ; AU000930 1 0188 MOV CPINTRPT R0 ; AU000931 1 0189 JMP S6 HEX ; GO CONVERT TO HEX ; AU000932 1 018A MOV CPINTRPT+1 R0 ; AU000933 1 018B JMP S6 HEX ; ; AU000934 1 018C MOVC <: :> X5 ; SEPARATE BY BLANK ; AU000935 1 018F ADDC 1 R5 ; AU000936 1 0190 ; ; AU000937 1 0190 MOV COUNT+7 R0 ; AU000938 1 0191 JMP S6 LOGDEC6 ; ; AU000939 1 0192 MOV COUNT+6 R0 ; AU000940 1 0193 JMP S6 LOGDEC6 ; ; AU000941 1 0194 MOV COUNT+5 R0 ; AU000942 1 0195 JMP S6 LOGDEC6 ; ; AU000943 1 0196 MOV COUNT+4 R0 ; AU000944 1 0197 JMP S6 LOGDEC6 ; ; AU000945 1 0198 MOV COUNT+3 R0 ; AU000946 1 0199 JMP S6 LOGDEC6 ; ; AU000947 1 019A MOV COUNT+2 R0 ; AU000948 1 019B JMP S6 LOGDEC6 ; ; AU000949 1 019C MOV COUNT+1 R0 ; AU000950 1 019D JMP S6 LOGDEC6 ; ; AU000951 1 019E MOV COUNT R0 ; ; AU000952 1 019F JMP S6 LOGDEC6 ; ; AU000953 1 01A0 MOV STBYTE R0 ; GET INTEGRATED BEFORE ENBL ; AU000954 1 01A1 JMP S6 HEX ; STATUS CONVERTED TO ASCII ; AU000955 1 01A2 MOV STBYTE+1 R0 ; GET MP -> CP AFTER ENABLE ; AU000956 1 01A3 JMP S6 HEX ; STATUS CONVERTED TO ASCII ; AU000957 1 01A4 MOV STBYTE+2 R0 ; GET CP -> MP AFTER ENABLE ; AU000958 1 01A5 JMP S6 HEX ; STATUS CONVERTED TO ASCII ; AU000959 1 01A6 ; ; AU000960 1 01A6 MOVC LOGMSG R6 ; AU000961 1 01A7 MON WDSTLP ; PRINT CONVERTED NUMBERS ON LP; ; AU000962 1 01A8 JMP CPDRIVER ; GO NEW TEST RUN; ; 1 01A9 ;-----------------------------------------------------------------------; AU000963 1 01A9 ; ; AU000964 1 01A9 ; PROCEDURE FOR CONVERTING A 16-BIT BINARY TO DECIMAL ASCII; ; AU000965 1 01A9 LOGDEC6: ; AU000966 1 01A9 MOVC <: :> X5 ; ALL NUMBERS BELOW 64 KW ; AU000967 1 01AB MOVC 5 R2 ; FIRST BYTE RIGHTMOST ; AU000968 1 01AC MOVC 10000 R3 ; SET UP DIVIDEND ; AU000969 1 01AE MOVC 0 R4 ; AU000970 1 01AF LOGD10: ; AU000971 1 01AF MOVC 0 R1 ; AU000972 1 01B0 DIV R3 R0 ; AU000973 1 01B1 ADDC <:0:> R0 ; AU000974 1 01B2 IBZP R2 #0 ; IF EVEN ; AU000975 1 01B3 MOV R0 X5 ; AU000976 1 01B4 JMP LOGD50 ; AU000977 1 01B5 SWP R0 ; AU000978 1 01B6 IOR R0 X5 ; AU000979 1 01B7 ADDC 1 R5 ; AU000980 1 01B8 LOGD50: ; AU000981 1 01B8 MOV R1 R0 ; AU000982 1 01B9 MOVC 10 R1 ; AU000983 1 01BA DIV R1 R3 ; AU000984 1 01BB SOB R2 LOGD10 ; AU000985 1 01BC JMP X6 ; RETURN TO CALLER; ; AU000986 1 01BD ; ; 1 01BD ;-----------------------------------------------------------------------; AU000987 1 01BD ; PROCEDURE CONVERT FROM BINARY TO HEX ASCII; ; AU000988 1 01BD ; ; AU000989 1 01BD ; REGISTERS CALL EXIT ; AU000990 1 01BD ; R0 BINARY KEPT ; AU000991 1 01BD ; R1,R7 - DESTROYED (WORK) ; AU000992 1 01BD ; R5 POINT OUTPUT SAME+3 (AFTER HEX) ; AU000993 1 01BD ; R6 LINK KEPT ; AU000994 1 01BD ; RETURN ; AU000995 1 01BD ; LINK ; 1 01BD ;-----------------------------------------------------------------------; AU000996 1 01BD HEX: ; AU000997 1 01BD MOVC <: :> X5 ; FIRST TO BE 2 BLANKS ; AU000998 1 01C0 ADDC 1 R5 ; ADDRESS FIRST HEX OUT-CHAR ; AU000999 1 01C1 HEX00: ; AU001000 1 01C1 MOVC 4 R7 ; FOR I:=1 UNTIL 4 ; AU001001 1 01C2 HEX10: ; DO ; AU001002 1 01C2 SLC R0 4 ; POSITION NXT ITEM ; AU001003 1 01C3 MOV R0 R1 ; ; AU001004 1 01C4 XTR R1 4 ; ISOLATE ITEM ; AU001005 1 01C5 IGE R1 10 ; IF 'A-F' ; AU001006 1 01C6 ADDC <:A:>-<:0:>-10 R1 ; THEN COMPENSATE; ; AU001007 1 01C7 ADDC <:0:> R1 ; FORCE ITEM TO ASCII ; AU001008 1 01C8 IBZP R7 #0 ; IF EVEN ; AU001009 1 01C9 MOV R1 X5 ; THEN FIRST CHAR RIGHTMOST ; AU001010 1 01CA JMP HEX90 ; ELSE ; AU001011 1 01CB SWP R1 ; POSITION NEW AS LEFTMOST ; AU001012 1 01CC IOR R1 X5 ; CONCATENATE CHARS; ; AU001013 1 01CD ADDC 1 R5 ; ; AU001014 1 01CE HEX90: SOB R7 HEX10 ; END FOR UNTIL; ; AU001015 1 01CF JMP X6 ; RETURN TO CALLER ; AU001016 1 01D0 ; ; 1 01D0 ;-----------------------------------------------------------------------; AU001017 1 01D0 ; PROCEDURE DATA SENT AND DATA RECEIVED NOT MATCHING ; AU001018 1 01D0 ; ; AU001019 1 01D0 ; THIS PROCEDURE CAN BE PATCHED TO WRITE THE BUFFER EACH TIME ; AU001020 1 01D0 ; AN ERROR IN A TRANSFER HAS BEEN DETECTED; ; AU001021 1 01D0 ; ; AU001022 1 01D0 XFERERR: ; AU001023 1 01D0 SETS R1 0 ; THEN FLAG MISMATCH ; AU001024 1 01D1 MOV COUNT+0 R0 ; GET NO OF ERRORS DETECTED ; AU001025 1 01D2 ADDC 1 R0 ; UPDATE ; AU001026 1 01D3 MOV R0 COUNT+0 ; AU001027 1 01D4 JMP X5 ;*** NOP TO ENABLE PRINT-OUT *** ; AU001028 1 01D5 STC 6 ; SAVE REGS ; AU001029 1 01D6 MOV R7 STACK ; REG 7 AS WELL ; AU001030 1 01D7 MOVC <:<10>:> R0 ; FOR NEW LINE ; AU001031 1 01D8 MON WSCLP ; AU001032 1 01D9 MOVC <: :> R0 ; BLANK OFF ; AU001033 1 01DA MON WSCLP ; AU001034 1 01DB MON WSCLP ; AU001035 1 01DC MON WSCLP ; AU001036 1 01DD MON WSCLP ; AU001037 1 01DE MON WSCLP ; AU001038 1 01DF MON WSCLP ; AU001039 1 01E0 MOVC 4 R0 ; NO OF BYTES INVONVED ; AU001040 1 01E1 MOV R0 HEXDUMP ; PREPARE BUFFER ; AU001041 1 01E3 MOVC INBUF R4 ; POINT FIRST OF RECEIVED DATA ; AU001042 1 01E5 MOVC BOOT8 R5 ; POINT RECEIVE LETTER ; AU001043 1 01E6 MOV LTMS2. X5 R2 ; FOR I:=1 UNTIL NO OF DMA WORDS ; AU001044 1 01E7 XFE10: ; DO ; AU001045 1 01E7 MOVC HEXDUMP+1 R5 ; POINT DEDICATED BUFER ; AU001046 1 01E9 MOV X4 R0 ; GET NEXT ITEM ; AU001047 1 01EA JMP S6 HEX00 ; GO CONVERT BINARY TO ASCII ; AU001048 1 01EB MOVC HEXDUMP R6 ; AU001049 1 01ED MON WDSTLP ; AU001050 1 01EE ADDC 1 R4 ; POINT NEXT BUFFER LOCATION ; AU001051 1 01EF SOB R2 XFE10 ; END FOR UNTIL DONE ; AU001052 1 01F0 MOV STACK R7 ; RE-ESTABLISH STACL POINTER ; AU001053 1 01F1 UNS 6 ; ; AU001054 1 01F2 JMP X5 ; RETURN CALLER; ; AU001055 1 01F3 ;--------------------------------------- ; AU001056 1 01F3 LOCALINT: ; AU001057 1 01F3 MON ERR ; AU001058 1 01F4 USE BASE ; AU001059 0 01DC XNAME1=<:TS:>, XNAME2=<:T:> ; AU001060 0 01DC XPRPC0= INITIALIZE ; AU001061 0 01DC XMASK0= #E000 ; AU001062 0 01DC XERROR0=LOCALINT ; AU001063 0 01DC ; ;PRCGEN4 ; AU001064 0 01DC NOLIST ; AU001073 0 01DC LIST ; AU001073 AU001074 0 01DC ;FF\f ; AU001075 0 01DC END ; Z03007 T32F4 P 3000L 5354 3008L 0054 0001 02D5 00F9 00F4 00F1 01DC 0000 3010L 0000 0000 0000 0000 0000 0000 0000 0000 3018L 0000 0000 0000 0000 0000 E000 0000 01F3 3020L 0000 0000 0000 0000 0000 0000 2020 0000 3028L 0000 0000 001B 0000 0000 0000 0000 0001 3030L 0015 0002 00C4 0000 0000 0000 0000 0001 3038L 0015 0002 00DA 0000 0000 0000 0000 0001 3040L 0015 0108 015C 0006 0080 004B 01F4 03E8 3048L 09C4 2710 EA60 03E8 0000 0000 0000 0000 3050L 0000 0000 0000 0000 0000 0000 0000 0000 3058L 0000 0000 0000 0000 0000 0000 0000 0000 3060L 0000 0000 0000 0000 0000 0000 0000 0000 3068L 0000 0000 0000 0000 0000 0000 0000 0000 3070L 0000 0000 0000 0000 0000 0000 0000 0000 3078L 0000 0000 0000 0000 0000 0000 0000 0000 3080L 0000 0000 0000 0000 0000 0000 0000 0000 3088L 0000 0000 0000 0000 0000 0000 0000 0000 3090L 0000 0000 0000 0000 0000 0000 0000 0000 3098L 0000 0000 0000 0000 0000 0000 006A 200D 30A0L 4449 2020 2020 5453 5441 5355 2020 2020 30A8L 2020 4552 2751 2053 2020 4920 544E 2752 30B0L 2054 2020 2020 2020 202D 2020 4F20 4556 30B8L 2052 534D 4E27 2047 4C20 4E4F 2047 2020 30C0L 202D 2020 2020 202D 2020 2020 202D 2020 30C8L 414D 4354 2048 4520 424E 204C 504D 432D 30D0L 2050 5043 4D2D 0D50 1000 0F00 00FF 0010 30D8L 0101 1010 2222 3333 4444 5555 6666 7777 30E0L 8888 9999 AAAA BBBB CCCC DDDD EEEE FFFF 30E8L FFF8 0000 0FF8 00F0 0F00 0010 FEEF EDDE 30F0L DCCD CBBC BAAB A99A 9889 8778 7667 6556 30F8L 5445 4334 3223 2112 1001 0FF7 FFFF 0000 3100L 01A4 006B 086C 55A6 63A6 0148 70A6 63A6 3108L 5CA6 000A 5244 2056 5053 4345 4149 204C 3110L 3720 3137 3032 0D37 6FA6 0D48 58A6 F04C 3118L 2056 2048 6C4A 8CBB 01CC 03C2 F04C 5BE4 3120L 4050 3E48 58A6 2048 804D 15E5 4B80 03C5 3128L 0156 5C4C 59A6 58A6 5BA6 8CBB 8D3E 01CC 3130L 0758 20E4 4050 0156 5C4C 20E4 C03F 01CC 3138L 0458 0118 1870 88A0 0156 5C69 1771 108D 3140L 1670 804D 15E5 4B27 03C5 8E4E E07D 0ED8 3148L 1768 4FE4 807E 0AD8 0D48 58A6 5BA6 5DA6 3150L 2D48 8E6A 5BA6 02C2 8E4E 8027 346D 80E4 3158L D07C 004D 40CD 3475 166F 3056 4FE4 F07C 3160L 50D8 3156 4FE4 F07C 4CD8 3256 4FE4 F07C 3168L 48D8 3356 4FE4 F07C 44D8 4956 4FE4 F07C 3170L 40D8 4956 44E4 F07C 23D8 4D56 44E4 F07C 3178L 1FD8 5356 44E4 F07C 2CD8 2056 45E4 F07C 3180L 23D8 5256 4DE4 F07C 11D8 4356 4DE4 F07E 3188L 6858 4056 0049 C056 904A 2A4B D4DE 8056 3190L 0049 C056 904A 2A4B CEDE 7558 184B 15D8 3198L 3469 98A0 C056 904A 166F 4956 44E4 F03C 31A0L A056 904A 2A4B 09D8 346A 8256 00CA 294B 31A8L 04D8 346A 8156 00CA 294B B5DE 356D 01C5 31B0L 6C58 154D 7B27 02C5 8D4F 1A6D 1975 184B 31B8L 08D8 3469 98A0 C056 904A 2A4B A4DE 396D 31C0L 02D8 A1DE 366D 01C5 346A 8856 0048 208D 31C8L 196D 4561 61BC 186D 49E4 D07C 254A 2D4B 31D0L 92DE 366D 01C5 196D 471E 451C 004D 336A 31D8L 0A96 00F2 12D8 40E4 4019 14A3 40E4 9DBB 31E0L 45E4 4016 3868 01C0 0A96 00F2 06D8 15A3 31E8L 40E4 9DBB 46E4 4016 53D8 7D16 4969 018D 31F0L 4971 3056 0A96 346A A8A0 304B 6CDE 336A 31F8L 0A96 01F2 3DD8 196D 461D 58F2 07D8 4A69 3200L 018D 4A71 8061 234B 5EDE 10D8 4B69 018D 3208L 4B71 30E5 0A97 20E5 1A97 9824 0825 10E5 3210L 1A97 00E4 2A97 A824 1825 80D0 CB7E 12D8 3218L 1868 02EC 196A 2BE4 A03E 00F2 02A3 2BE4 3220L A03C 01F2 02A3 02F0 05D8 346A 8256 00CA 3228L 294B 39DE 02CE 02AC 01A4 C040 5958 004D 3230L 40E4 4018 06A3 47E4 4016 40E4 8DBB 6258 3238L 30E5 0A96 3E49 196D 2BE4 D07C 01C9 098D 3240L 3056 0A96 196D 2BE4 D03E 2B4D 1BD8 1A6C 3248L 071C 2B4E 851B 871E 004D 40E4 4019 48FB 3250L E0E8 803E 7DDE 004D DEBB 468E 08C3 4071 3258L 7C16 1A68 1B4D 05F8 234D 1A75 3C68 3B69 3260L 01F8 0CD8 AD58 ECBE 3369 0556 00C9 044A 3268L F9D6 01CF 0156 00C9 05C2 40BF 0A48 5BA6 3270L 0448 0156 5570 3468 0156 564D 4ADF 0156 3278L 554E 5DA6 2048 5BA6 5BA6 4069 084A 3148 3280L 17F0 2E48 5BA6 91A0 06C2 F34D 3D68 21DF 3288L 3E68 33DF 3F68 31DF 2056 20E4 5050 01CD 3290L 4868 17DF 4768 15DF 4668 13DF 4568 11DF 3298L 4468 0FDF 4368 0DDF 4268 0BDF 4168 09DF 32A0L 4968 1BDF 4A68 19DF 4B68 17DF F04E 5DA6 32A8L 6459 20E4 5050 054A 2756 104B 004C 0049 32B0L 38EB 30C8 20B0 8DBB 03D8 60BC 0D8D 01CD 32B8L 18BB 0A49 1BEB 0DC2 80BF 2056 20E4 5050 32C0L 01CD 044F 84A2 09BB 14EC 9A40 07C9 30C9 32C8L 70B0 9DBB 03D8 61BC 1D8D 01CD 0DC7 80BF 32D0L 10A3 4168 01C8 4170 40BF E9BE 8D77 0A48 32D8L 5BA6 2048 5BA6 5BA6 5BA6 5BA6 5BA6 5BA6 32E0L 0448 0156 5570 0156 5C4C 2B4D 451A 0156 32E8L 564D 48FB 2A5F 0156 554E 5DA6 01CC 09C2 32F0L 8D6F A9BE 40BF 63A6 S3 MEMORY MAP: AREA 0 3007 AREA 1 3100 12 DIMENSION WARNINGS 1 MODE WARNINGS 77 MODIFIES INSERTED 1 SKIPS PAIR CHANGED 749 WORDS OUTPUT 749 WORDS ASSEMBLED ASSEMBLY OK? «eof»