|
|
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 - metrics - download
Length: 13056 (0x3300)
Types: TextFile
Names: »MFSCTT«
└─⟦5ca485322⟧ Bits:30005483 8" CR80 Floppy CR80FD_0201 ( Backup SL Disk-error 2u )
└─⟦46ea90735⟧
└─⟦this⟧ »JAS.MFSCTT«
LIST
;----------------------------------------------------------------------
;
; FRAME SYNCHRONIZER TEST PROGRAM UNDER SYSTEM ONE
;
;----------------------------------------------------------------------
BEGIN USE BASE
MODULE
NOLIST
$S8MXGL
$S8MNAX
LIST
PMASK= TRUE
XPD:= UTILITYLENGTH
NOLIST
$S8MXP1
LIST
OUTCHAR1=OUTCHAR
INCHAR1=INCHAR
BEGIN
EXTERNAL OUTCHAR1, INCHAR1, OUTNL, SETDELAY, WAITEVENT, SETINTERRUPT
EXTERNAL INITDEVICE, SENDANSWER, CURIN, CUROUT, INTERRUPT
EXTERNAL RESUMEEVENT, OUTEND, REGISTERS, DEVPR, OUTTEXTP
EXTERNAL DEVICE, LOCACTION, CAUSE, ENDPROGRAM, WAITINTERRUPT, WAIT
ENTRY FIRST
FRAMESYNC= TRUE
BS1= #1000
;DEVICE DEFINITIONS
OC= 1
IF FRAMESYNC
FSCDEV= 7
FI
BAS:= 8
MODE: 0
CURADR: 0
TOP: 0
STACK: 0
LOCA: LOCAC
SAVE0: 0
IF FRAMESYNC
BUFFSC: 0
BFCFSC: 0
CONT1: 0
FI
USE PROG
IGETADR: GETADR
IINCHAR: INCHAR
IHEXOUT: HEXOUT
ILOADREG: LOADREG
IGETREG: GETREG
;GETADR - GET ADDRESS
; CALL EXIT
;
;R0 DESTROYED
;R1 DESTROYED
;R2 0
;R3 ADDRESS
;R5 LINK DESTROYED
;R6 DESTROYED
;R7 DESTROYED
GETADR: ; GETADR:
MOV R5 STACK ; LINK=>0.STACK;
MOVC 0 R3 ; 0=>VALUE;
G1: ; G1:
JMP S6 INCHAR ; GET CHAR;
JMP S5 HEXIN1 ; TEST IF HEX CHAR;
JMP G1 ; NOT HEX, GOTO G1;
MOV R1 R3 ;
MOVC 3 R2 ; 3=>COUNT;
G0: ; G0:
JMP S5 HEXIN ; GET HEX CHAR;
JMPI STACK ; RETURN(ERROR);
SLL R3 4 ; VALUE*16=>VALUE;
ADD R1 R3 ; CHAR+VALUE=>VALUE;
SOB R2 G0 ; IF DECR(COUNT)<> 0 THEN
; GOTO G0 ;
MOV STACK R5 ; 0.STACK=>LINK;
JMP 1. X5 ; RETURN;
;HEXIN
; CALL EXIT
;
;R0 DESTROYED
;R1 HEX CHAR
;R5 LINK LINK
;R6 DESTROYED
;R7 DESTROYED
HEXIN: ; HEXIN:
JMP S6 INCHAR ; GET CHAR;
HEXIN1: ; HEXIN1:
IGE R1 <:A:> ; IF CHAR < <A>
JMP HEXIN2 ; AND
IGE R1 <:::> ; CHAR >= <:> THEN
JMP 0. X5 ; RETURN(ERROR);
HEXIN2: ;
ADDC -<:A:>+10 R1 ; CHAR-<:A:>+10 => CHAR;
ILT R1 10 ; IF CHAR<10 THEN
ADDC <:A:>-10-<:0:> R1 ; CHAR+<:A:>-10-<:0:> =>CHAR;
SGEP R1 16 ; IF CHAR<16 OR
SLT R1 0 ; >=0 THEN
JMP 1. X5 ; RETURN ELSE
JMP 0. X5 ; RETURN(ERROR);
;HEXOUT
; CALL EXIT
;R1 DESTROYED
;R2 DESTROYED
;R4 BIN VALUE DESTROYED
;R5 LINK LINK
;R6 DESTROYED
;R7 DESTROYED
HEXOUT: ; HEXOUT:
MOVC 8#40 R1 ; ASCII(SP) => CHAR;
JMP S6 OUTCHAR ; OUTPUT CHAR;
MOVC 4 R2 ; 4 => COUNT;
H2: SLC R4 4 ; H2:
MOV R4 R1 ;
XTR R1 4 ; HEX(3:4) => VALUE;
ILT R1 10 ; IF VALUE < 10 THEN
ADDC <:0:>-<:A:>+10 R1 ; VALUE+<:0:>-<:A:>+10 =>VALUE
ADDC <:A:>-10 R1 ; VALUE+<:A:>-10 => CHAR;
JMP S6 OUTCHAR ; OUTPUT CHAR;
SOB R2 H2 ; IF DECR(COUNT)<>0 THEN
; GOTO H2;
JMP 0. X5 ; RETURN;
;NEXTLIN
; CALL EXIT
;
;R0 DESTROYED
;R1 DESTROYED
;R2 DESTROYED
;R5 LINK LINK
;R6 DESTROYED
;R7 DESTROYED
NEXTLIN: ; NEXTLIN:
XCH R6 R4 ;
XCH R1 R3 ;
MOV CUROUT-C R4 ;
MON OUTNL ;
XCH R6 R4 ;
XCH R1 R3 ;
JMP 0. X5 ;
;SPACE OUTPUT A SPACE;
; CALL EXIT
;
;R0 DESTROYED
;R1 DESTROYED
;R6 LINK DESTROYED
;R7 DESTROYED
SPACE: ; SPACE:
MOVC <: :> R1 ;
JMP OUTCHAR ; OUTPUT(<SP>);
INCHAR: ; INCHAR:
XCH R4 R0 ;
XCH R1 R3 ;
MOV CURIN-C R4 ;
MON INCHAR1 ;
XCH R1 R3 ;
XCH R0 R4 ;
JMP 0. X6 ;
OUTCHAR: ; OUTCHAR:
XCH R4 R0 ;
XCH R1 R3 ;
MOV CUROUT-C R4 ;
MON OUTCHAR1 ;
XCH R1 R3 ;
XCH R0 R4 ;
JMP 0. X6 ;
;
;GETREG
; CALL EXIT
;R0 DESTROYED
;R1 DESTROYED
;R3 VALUE
;R4 REG. NO. REG. NO
;R6 LINK LINK
GETREG: ; GETREG:
MOV R4 R0 ; REG. NO. => RGN;
SLL R0 6 ; RGN*64 => RGN;
ADD DEVICE-C R0 ; RGN+DEVICE => RGN;
MOV MODE R1 ; 0.MODE => M;
IBNP R1 1 ; IF M(1:1) = 1 THEN
SIO R3 R0 ; SENSE (VALUE,RGN)
JMP GETREG1 ; ELSE
RIO R3 R0 ; READ (VALUE,RGN);
GETREG1:IBN R1 0 ; IF M(0:1) = 1 THEN
INV R3 ; INVERT (VALUE);
JMP 0. X6 ; RETURN;
;
;LOADREG
; CALL EXIT
;R0 DESTROYED
;R1 DESTROYED
;R3 VALUE VALUE
;R4 REG. NO REG. NO
;R6 LINK LINK
LOADREG: ; LOADREG:
MOV R4 R0 ; REG. NO => RGN;
SLL R0 6 ; RGN*64 => RGN;
ADD DEVICE-C R0 ; RGN+0.DEVICE => RGN;
MOV MODE R1 ; 0.MODE => M;
IBN R1 0 ; IF M(0:1) = 1 THEN
INV R3 ; INVERT (VALUE);
IBNP R1 1 ; IF M(1:1) = 1 THEN
CIO R3 R0 ; CONTROL(VALUE,RGN)
JMP LOADR1 ; ELSE
WIO R3 R0 ; WRITE(VALUE,RGN);
LOADR1: IBN R1 0 ; IF M(1:0) = 1 THEN
INV R3 ; INVERT(VALUE);
JMP 0. X6 ; RETURN;
;
;
;
FIRST: ; INIT INTERRUPTS:
MOV LOCACN-C R0 ;
MOV LOCA R1 ;
MOV R1 LOCACN-C ;
MOV R0 LOCA ;
F1: ; DEVICE NO:
JMP S6 INCHAR ; INCHAR;
INE R1 10 ; IF CHAR <> NL THEN
JMP F1 ; GOTO DEVICE NO;
JMP S5 NEXTLIN ; NEWLINE;
JMP S6 F1TEXT ;
<:ENTER DEVICE NO:<0>:>
F1TEXT: MOV CUROUT-C R4 ;
MON OUTTEXTP ; WRITE (<:ENTER DEVICE NO::>);
MOVC <: :> R3 ;
MON OUTEND ; WRITE (<: :>);
JMP S5 GETADR ; GET ADDRESS;
JMP F1 ; ERROR: GOTO DEVICE NO;
IGE R3 64 ; IF DEVICE NO > 63 THEN
JMP F1 ; GOTO DEVICE NO;
MOV R3 DEVICE-C ; ADDRESS => 0.DEVICE;
SLL R3 2 ;
MOV R3 R0 ;
MOV R0 DEVPR-C ;
MON INITDEVICE ;
START: ; START:
JMP S5 NEXTLIN ; NEW LINE;
MOVC <:>:> R3 ;
MOV CUROUT-C R4 ;
MON OUTEND ;
STR1: ; STR1:
JMP S6 INCHAR ; GET COMMAND;
;
IF FRAMESYNC
IEQ R1 <:O:> ; O - SEND DATA
JMP SENDDATA ;
FI
IEQ R1 <:X:> ; X - EXIT
MON ENDPROGRAM ;
IEQ R1 <:D:> ; D - MEMDUMP;
JMP MEMDUMP ;
IEQ R1 <:C:> ; C - CONTINUE MEMDUMP;
JMP CMEMDUMP ;
IEQ R1 <:P:> ; P - LOAD DATA;
JMP LOADDATA ;
IEQ R1 <:Q:> ; Q - INSERT SAVE-LOAD PATCH;
JMP PATCH ;
IF FRAMESYNC
IEQ R1 <:A:> ; A - DEFINE DATA
JMP FSCDATADF ;
IEQ R1 <:G:> ; G - DUMP REGISTER IN FSC
JMP FSCREGDMP ;
IEQ R1 <:L:> ; L - LOAD REGISTER IN FSC
JMP FSCREGLOD ;
IEQ R1 <:W:> ; W - WAIT INTERRUPT
JMP WAITFSTT ;
IEQ R1 <:E:> ; E - REPETITIVE LOAD
JMP CONTLOAD ;
IEQ R1 <:F:> ; F - REPETITIVE SENSE
JMP CONTDUMP ;
IEQ R1 <:T:> ; T - MEASURE INTERRUPT TIME
JMP INTTIME ;
IEQ R1 <:I:> ; I - INVERTED DEVICE COMM.
JMP INVERT ;
IEQ R1 <:N:> ; N - NONINVERTED DEVICE COMM.
JMP NONINVERT ;
IEQ R1 <:R:> ; R - READ-WRITE DEVICE COMM.
JMP READWRITE ;
IEQ R1 <:S:> ; S - SENSE-CONTROL DEVICE COMM.
JMP SENSECNTRL ;
FI
;
IEQ R1 <: :> ; IF CHAR = <SP> THEN
JMP STR1 ; GOTO STR1;
IEQ R1 10 ; IF CHAR = NL THEN
JMP STR1 ; GOTO STR1;
ERROR: ; ERROR:
MOVC <:?:> R1 ;
JMP S6 OUTCHAR ; OUTPUT ?;
JMP START ; GOTO START;
;
;
IF FRAMESYNC
;
;
SENDDATA: ; SEND DATA-AREA TO FSC:
MOV BUFFSC R2 ;
MOV BFCFSC R3 ; GET AREASIZE ;
MOVC 7<6 R0 ;
ADD DEVICE-C R0 ;
IEQ R2 0 ; IF STARTADR = 0 THEN
JMP ERROR ; GOTO ERR;
;
SENDD0: ; ADDRESS := STARTADDRESS ;
MOV X2 R1 ; FOR I := 1 UNTIL AREASIZE DO
INV R1 ;
SWP R1 ; BEGIN
CIO R1 R0 ; WRITE (FSC,HIGHBYTE(ADR)) ;
SWP R1 ;
CIO R1 R0 ; WRITE (FSC,LOWBYTE(ADR)) ;
ADDC 1 R2 ; INCR (ADR) ;
SOB R3 SENDD0 ; END ;
;
JMP START ;
FI
;
LOADDATA: ; LOADDATA:
JMP S5 GETADR ; GETADDRESS;
JMP ERROR ; IF ERROR THEN GOTO ERROR;
SUB BAS R3 ;
LD0: ; LD0:
JMP S6 INCHAR ; GET CHARACTER;
IEQP R1 <:L:> ; L - DECR(RE.ADDRESS);
ADDC -1 R3 ;
JMP LD0 ; GOTO LD0;
IEQ R1 <:S:> ; S - STOP INPUT;
JMP START ; GOTO START;
JMP S5 HEXIN1 ; CONVET TO HEX;
JMP LD0 ; NO HEX CHAR: GOTO LD0;
MOV R1 R2 ;
MOVC 3 R4 ; 3 => COUNT;
LD1: ; LD1:
JMP S5 HEXIN ; GET HEX CHAR;
JMP ERROR ; IF ERROR THEN GOTO ERROR;
SLL R2 4 ; HEX*16 => HEX;
ADD R1 R2 ; CHAR+HEX => HEX;
SOB R4 LD1 ; IF DECR(COUNT) <> 0 THEN
; GOTO LD1;
MOV R2 0. X3 ; SAVE WORD;
ADDC 1 R3 ; INCR(RE.ADDRESS);
JMP LD0 ; GOTO NEW DATA(LD0);
;
;
MEMDUMP: ; MEMDUMP:
JMP S5 GETADR ; GET START ADDRESS;
JMP ERROR ; IF ERROR THEN GOTO ERROR;
MOV R3 CURADR ;
MOVC #FFFF R3 ;
MOV R3 TOP ; ADDRESS => 0.TOP;
;
CMEMDUMP: ; CONTINUE MEMDUMP:
JMP S5 NEXTLIN ; NEW LINE;
MOV CURADR R4 ; 0.0.CURADR => RE.ADR;
JMP S5 HEXOUT ; OUTPUT RE.WORD;
MOVC <:L:> R1 ;
JMP S6 OUTCHAR ;
L1: ; NEXT:
MOV CURADR R3 ; 0.CURADR => RE.WORD;
MOV TOP R4 ; 0.TOP => TOPADDRESS;
ILO R4 R3 ; IF TOPADDRESS <CURADR THEN
JMP START ; GOTO START;
MOVC 0 R0 ;
MON SETDELAY ;
MON WAITEVENT ;
JMP ON ;
JMP MDANSW ;
MON SENDANSWER ;
JMP START ;
MDANSW: ;
MON RESUMEEVENT ;
JMP START ;
ON: ;
MOV R3 R4 ;
MODN BAS ;
MOV 0. X4 R4 ; 0.CURADR => WORD;
JMP S5 HEXOUT ; OUTPUT WORD;
ADDC 1 R3 ; INCR(RE.WORD);
MOV R3 CURADR ; RE.WORD => 0.CURADR;
XTR R3 3 ; IF RE.WORD(2:3)<>0
INE R3 0 ; THEN
JMP L1 ; GOTO NEXT;
JMP CMEMDUMP ; GOTO CONTINUE MEMDUMP;
;
PATCH: ; PATCH:
JMPI S5 IGETADR ; GET ADDRESS;
JMP ERROR ; IF ERROR THEN GOTO ERROR;
SUB BAS R3 ;
MOVC #20BE R0 ; SVP
MOV R0 0. X3 ;
MOV BAS R0 ;
SWP R0 ;
XTR R0 8 ;
SWP R0 ;
ADDC #56 R0 ;
MOV R0 1. X3 ;
MOVC #0048 R0 ;
MOV R0 2. X3 ;
MOVC #40BC R0 ; LDN R0
MOV R0 3. X3 ;
JMP START ; GOTO START;
IF FRAMESYNC
;
;
FSCREGLOAD: ; LOAD REGISTER IN FSC:
JMPI S5 IGETADR ; GET REGISTERNUMBER;
JMP FSCRED ;
MOV R3 R4 ; REG := REGNUMBER;
JMP S6 INCHAR ; IF NEXTCHAR <> <SP>
INE R1 <: :> ; THEN
JMP ERROR ; GOTO ERROR ;
JMPI S5 IGETADR ; GET REGISTERCONTENT ;
JMP ERROR ; IF ERROR THEN GOTO ERROR ;
JMP S6 LOADREG ; LOADREGISTER;
JMP START ; GOTO START ;
;
;
FSCREGDUMP: ; DUMP REGISTER IN FSC:
JMPI S5 IGETADR ; GET REGISTER NUMBER ;
JMP FSCREGDMP ;
MOV R3 R4 ; REGISTERNUMBER => REGN;
JMP S6 GETREG ; GETREGISTER;
JMP S6 SPACE ; WRITE(<SP>) ;
MOV R3 R4 ; VALUE => BINVALUE;
JMPI S5 IHEXOUT ; WRITE (CONTENT) ;
JMP START ;
;
;
FSCDATADEF: ; DEFINE DATA TO FSC:
JMPI S5 IGETADR ; GET STARTADR ;
JMP ERROR ; IF ERROR THEN GOTO ERROR;
JMPI S6 IINCHAR ; CHECK
INE R1 <: :> ; SPACE
JMP ERROR ; SEPARATOR ;
MOV R3 R4 ; SAVEST := STARTADR ;
JMPI S5 IGETADR ; GET AREASIZE ;
JMP ERROR ; IF ERROR THEN GOTO ERROR ;
IEQ R3 0 ; IF AREASIZE = 0 THEN
JMP ERROR ; GOTO ERROR;
SUB BAS R4 ; ADJUST STARTADR TO RELATIVE;
MOV R4 BUFFSC ; SAVE (STARTADR) ;
MOV R3 BFCFSC ; SAVE (AREASIZE) ;
JMP START ;
;
;
;
WAITFT: ; WAITINTERRUPT:
MOV INTERRUPT-C R1 ;
MOVC 0 R0 ; 0 => DELAY;
MON WAITINTERRUPT ; WAITINTERRUPT;
JMP TIME ; TIMEOUT: GOTO NOINT;
JMP S6 WAITTX ; INTERRUPT: CONTINUE;
<:DEVICE <0>:> ;
<: PRIORITY <0>:> ;
WAITTX: MOV CUROUT-C R4 ;
MON OUTTEXTP ; WRITE (<:DEVICE :>);
MOV DEVICE-C R4 ;
MOV R6 R3 ;
JMPI S5 IHEXOUT ; WRITE ( DEVICE );
MOV R3 R6 ;
MOV CUROUT-C R4 ;
MON OUTTEXTP ; WRITE (<: PRIORITY :>);
MOV DEVPR-C R3 ;
XTR R3 2 ;
ADDC <:0:> R3 ;
MON OUTCHAR1 ; WRITE ( PRIORITY );
MON OUTNL ; WRITE ( <10> );
MON WAIT ; WAIT (SHARE);
JMP WAITFT ; GOTO WAITINTERRUPT;
;
TIME: ; NOINT:
MOVC 0 R0 ;
MON SETDELAY ; 0 => DELAY;
MON WAITEVENT ; WAITEVENT;
JMP WAITFT ; TIMEOUT: GOTO WAITINTERRUPT;
JMP MDANSW ; ANSWER: RESUME AND GOTO START;
WAIMES: MON SENDANSWER ; MESSAGE: ANSWER AND GOTO START;
JMP START ;
;
;
;
CONTLOAD: ; REPETITIVE LOAD:
JMPI S5 IGETADR ; GET REG NUMBER;
JMP CONTLOAD ;
MOV R3 R4 ; REG := REGNUMBER;
JMPI S6 IINCHAR ; CHECK
INE R1 <: :> ; SPACE
JMP ERROR ; SEPARATOR;
JMPI S5 IGETADR ; GET REG CONT1;
JMP ERROR ;
MOV R3 CONT1 ; SAVECONT1 := REG CONT1;
JMPI S6 IINCHAR ; CHECK
INE R1 <: :> ; SPACE
JMP ERROR ; SEPARATOR;
JMPI S5 IGETADR ;
JMP ERROR ;
MOVC #FFFF R5 ;
MOV R3 R2 ; SAVE REG CONT2;
CLLOOP: ; LOADAGAIN:
MOV CONT1 R3 ; REG CONT1 => VALUE;
JMPI S6 ILOADREG ; LOADREGISTER;
MOV R2 R3 ; REG CONT2 => VALUE;
JMPI S6 ILOADREG ; LOADREGISTER;
SOB R5 CLLOOP ;
MOVC 0 R0 ;
MON SETDELAY ;
MON WAITEVENT ;
JMP TIMEOUT ;
JMP MDANSW ;
MON SENDANSWER ;
JMP START ;
TIMEOUT: ;
MOVC #FFFF R5 ;
JMP CLLOOP ;
;
;
;
CONTDUMP: ; REPETITIVE SENSE:
JMPI S5 IGETADR ; GET REG NUMBER;
JMP CONTDUMP ;
MOV R3 R4 ; REG NUMBER => REGN;
MOVC #FFFF R5 ;
CDLOOP: ; DUMPAGAIN:
JMPI S6 IGETREG ; GETREGISTER;
SOB R5 CDLOOP ;
MOVC 0 R0 ;
MON SETDELAY ;
MON WAITEVENT ;
JMP CDTIMEOUT ;
JMP MDANSW ;
MON SENDANSWER ;
JMP START ;
CDTIMEOUT: ;
MOVC #FFFF R5 ;
JMP CDLOOP ;
;
;
;
;
INTTIME: ; MEASURE INTERRUPT TIME:
JMPI S5 IGETADR ; GET NO OF INTERRUPTS;
JMP ERROR ;
WINT: ; NEW INTERRUPT:
MOVC 255 R0 ; 2.55 SEC => DELAY;
MOV INTERRUPT-C R1 ;
MON WAITINTERRUPT ; WAITINTERRUPT;
JMP INTSLOW ; TIMEOUT: GOTO SLOW;
SOB R3 WINT ; INTERRUPT: IF DECR(COUNT)>0 THEN
; GOTO NEW INTERRUPT
JMP START ; ELSE GOTO START;
INTSLOW: ; SLOW:
JMP S6 INTTXT ;
<:TOO SLOW INTERRUPT RATE<0>:>
INTTXT: MOV CUROUT-C R4 ;
MON OUTTEXTP ;
JMP START ;
;
;
;
INVERT: ; SET INVERTED DEVICE COMM.:
MOVC MODE R0 ; MODE => ADR;
MOVC #FFFF R1 ; #FFFF => BITS;
MODC #0001 ; #0001 => MASK;
PUT R1 X0 ; PUT BITS MASKED INTO 0.ADR;
JMP START ; GOTO START;
;
;
NONINVERT: ; SET NONINVERTED DEVICE COMM.:
MOVC MODE R0 ; MODE => ADR;
MOVC 0 R1 ; 0 => BITS;
MODC #0001 ; #0001 => MASK;
PUT R1 X0 ; PUT BITS MASKED INTO 0.ADR;
JMP START ; GOTO START
;
;
READWRITE: ; SET READWRITE DEVICE COMM.:
MOVC MODE R0 ; MODE => ADR;
MOVC 0 R1 ; 0 => BITS;
MODC #0002 ; #0002 => MASK;
PUT R1 X0 ; PUT BITS MASKED INTO 0.ADR;
JMP START ; GOTO START;
;
;
SENSECONTROL: ; SET SENSECONTROL DEVICE COMM.:
MOVC MODE R0 ; MODE => ADR;
MOVC #FFFF R1 ; #FFFF => BITS;
MODC #0002 ; #0002 => MASK;
PUT R1 X0 ; PUT BITS MASKED INTO 0.ADR;
JMP START ; GOTO START;
FI
LOCAC: ;
MOV R0 SAVE0 ;
MOV CAUSE-C R0 ;
IEQP R0 0 ;
MOV SAVE0 R0 ;
JMPI LOCA ;
JMP S6 LOCTXT ;
<:<10>CAUSE:<0>:>
LOCTXT: ;
MOV CUROUT-C R4 ;
MON OUTTEXTP ;
MOV R0 R4 ;
JMPI S5 IHEXOUT ;
MOVC 0 R0 ;
LDS R0 ;
MOV SAVE0 R0 ;
JMP START ;
NOP ;
USE BASE
END
XPRPC= FIRST
XREFS=2
XBUFS=2
NOLIST
$S8MXP2
LIST
END
«eof»