|
|
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: 14336 (0x3800)
Types: TextFile
Names: »MTDP«
└─⟦d2d5bd9ca⟧ Bits:30005482 8" CR80 Floppy CR80FD_0155 ( Lynetten billeder )
└─⟦ad0a5cc43⟧
└─⟦this⟧ »SL.MTDP«
LIST
; DISK TO DISPLAY DATA TRANSFER PROGRAM.
;
; THE PROGRAM IS INTENDED TO BE USED IN CONNECTION TO
; THE CR80 COLOUR DISPLAY SYSTEM.
; THE PROGRAM READS DATA FROM FLOPPY DISK FILES AND
; OUTPUTS THE DATA TO A AV24 I/F. WHEN OUTPUT OF DATA
; FROM ONE FILE IS FINISHED, THE PROGRAM WILL WAIT 10
; SEC. BEFORE IT CONTINUES OUTPUTTING THE NEXT FILE.
; WHEN ALL FILES HAVE BEEN OUTPUTTED, THE PROGRAM
; WILL START OUTPUTTING THE FIRST FILE AGAIN.
;
; IF THE PROGRAM RECEIVES A X-OFF CHAR. FROM THE
; INTERFACE, IT WILL STOP OUTPUT. IT WILL NOT
; CONTINUE UNTIL A X-ON CHAR. IS RECEIVED.
;
; WHEN THE PROGRAM IS LOADED, THE DISK FILES TO
; BE OUTPUT MUST BE SPECIFIED IN THE INPUT SHARE.
;
; SYNTAX: DISPLAY <FILENAME> <FILENAME> ... <FILENAME>
;
BEGIN MODULE ;
NOLIST
; AU000404 0 0000 LEVEL 1 NAMES:
C= #000D
INPARM= #0068
ENDPRM= #0041
INWORD= #007C
INCOMD= #0086
GIVEUE= #0018
OUTNL= #005D
PROGLH= #000E
BMBYTE= #0004
OUTHEA= #0064
CONTLH= #0005
WAITAR= #000D
BMINPT= #0001
BMWORD= #0000
BMTIMR= #0002
GETINT= #0004
REGISS= #0013
CLOSE= #0054
SETDEY= #0077
WAITET= #000F
BACKSE= #0063
WAITIT= #0005
WAITDY= #0019
OUTCHR= #005F
IDLENH= #0004
INCHAR= #0061
OPEN= #0053
REGREE= #0010
NAMELH= #0003
INIT= #0052
SETINT= #0078
INCOMD= #0086
WAIT= #0059
INITDE= #0042
BMOUTT= #0003
BMEOF= #0040
CLEART= #0000
SENDME= #000B
SENDAR= #000C
RESUMT= #0011
BMREET= #0001
BMDISP= #0001
OUTTEP= #005A
USE BASE
STACKH:= #0005
PROCLH:= #0052
NEXT:= #0002
SACTIN:= #0008
WORK:= #0040
NL:= #000A
WORKAA:= #0295
BFIRST:= #0006
CAUSE:= #001E
NAME:= #0007
WRK:= #004D
UTILIH:= #02A1
WORKIG:= #005E
CURSLH:= #00B2
CURIN:= #005A
DEVPR:= #001F
ENTRYA:= #0275
BUFFEH:= #0008
CURSIN:= #005F
CENTRY:= #005D
INTERT:= #0054
WORKLH:= #000C
CATALH:= #0058
REFLEH:= #0004
LOCACN:= #001C
ENTRYH:= #0020
BNEXT:= #0007
STREAT:= #000A
PROC:= #000D
MCOUNT:= #0001
SMASK:= #0007
BUFLEH:= #0009
CBASE:= #0015
KINDOC:= #0100
SHAREH:= #0022
INTRPT:= #0034
DRIVEH:= #0055
MADDRS:= #0002
SEOFAN:= #0009
CURSWK:= #01C3
CURSOT:= #0111
CUROUT:= #005B
USE PROG
LOCACT:= #822F
USE #0
XPD:= UTILITYLENGTH
IF XPD EQ UTILITYLENGTH OR XPD EQ PROGLENGTH THEN
IF WORDS NE 0 THEN MESSAGE WORDS FI
AREASWITCH=1
USE PROG
LOC=PROG-1
BMREENTRANT
XREFS
XBUFS
XWORDS
XPSIZE
0,1,0,0,0,0
XSIZE
0
XPRPC
IF LOC NE PROGLENGTH THEN MESSAGE <:ERROR: PROG LENGTH:> FI
FI
IF XPD GT PROGLENGTH THEN
USE BASE
LOC=BASE
0,REPEAT 12
IF LOC NE PROC THEN MESSAGE <:ERROR: XPROC LOCATION:> FI
0 REPEAT 7 ; REGISTERS
0,0
XPROGRAM
XPRPC
100
0
0
LOCACT
0
0
XDEVPR
100
0 REPEAT 12 ; TIME0 - FREEAREAS
#FFFF
0,0,0
0 REPEAT 3 ; PRICHN - ADJUST
XREFSX
XBUFSX
IF XPD NE UTILITYLENGTH THEN
XREFS=0
XBUFS=1
FI
0 REPEAT 20 ; RESTING - SAVE19
0,REPEAT CONTLENGTH-1
LOC= LOC-C
IF LOC NE PROCLENGTH-C THEN MESSAGE <:ERROR: XPROC LENGTH:> FI
IF XPD GT PROCLENGTH THEN
0,0,0
IF LOC NE DRIVERLENGTH-C THEN MESSAGE <:ERROR: XDRIVER LENGTH:> FI
IF XPD GT DRIVERLENGTH THEN
0 REPEAT 2 ; ESPECIAL - CATALOG
IF LOC NE CATALOGLENGTH-C THEN MESSAGE <:ERROR: XCATALOG LENGTH:> FI
IF XPD GT CATALOGLENGTH THEN
LOCACT
LOCACT
XCURIN
XCUROUT
XCURWORK
XCENTRY
XWORKING
FI FI FI FI
XLOC= LOC
MESSAGE <:START OF USER MODULE:>
LIST ;
;
FILES: 0,REPEAT 20*5 -1 ; ROOM FOR 20 FILENAMES;
COUNT: 0 ; NUMBER OF FILENAMES;
FADDR: 0 ; FILENAME POINTER;
OENTRY: 0,REPEAT ENTRYLENGTH-1 ; ENTRY AREA;
OWORK: 0,REPEAT WORKLENGTH-1 ; WORKING AREA;
DELAY: 0 ;
LINK: 0 ;
;
DISPIF= 4 ; DISPLAY INTERFACE MODULE ADDR;
XON= #11 ;
XOFF= #13 ;
BNINRDY= 10 ; INPUT READY BIT;
BNOUTRY= 11 ; OUTPUT READY BIT;
USE PROG ;
IDP2: DP2 ;
;
L0: ; INIT:
MOVC FILES R0 ; FILES
MOV R0 FADDR ; =>FADDR;
MOVC 0 R0 ; 0
MOV R0 COUNT ; =>FILECOUNT;
MOVC OENTRY R0 ; ENTRYAREA
MOV R0 CENTRY-C ; =>ENTRY.CUR;
MOVC OWORK R0 ; WORKAREA
MOV R0 WORKING-C ; =>WORKING.CUR;
L1: ; NEXT NAME:
MOV CURIN-C R4 ; CURIN.CUR=>SHARE;
MON INPARAM ; INPARAM(SHARE);
JMP L1 ; ERROR: GOTO NEXT NAME;
JMP L2 ; TERM: GOTO LAST NAME;
JMP L1 ; WORD: GOTO NEXT NAME;
; NAME: CONTINUE;
;###
MOV FADDR R0 ; FADDR=>ADDR;
MODC 5 ;
MOVM X6 X0 ; NAME(0,4)=>ADDR(0,4);
MOV R0 FADDR ; ADDR+5=>FADDR;
INC COUNT -WORK. X7 ; INCR(FILECOUNT);
JMP L1 ; GOTO NEXT NAME;
;
L2: ; LAST NAME:
MOVC DISPIF R0 ;
MOVC 3 R1 ;
CIO R1 R0 ; ENABLE INTERFACE;
SLL R0 2 ; DEVICE<2
MOV R0 DEVPR-C ; =>DEVPR.CUR;
MON INITDEVICE ; INITDEVICE;
MON CLEARINTERRUPT ; CLEARINTERRUPT;
;
MON CLOSE ; CLOSE(SHARE);
;
L3: ; FIRST FILE:
MOVC FILES-5 R0 ; FILES-5
MOV R0 FADDR ; =>FADDR;
MOV COUNT R6 ; FILECOUNT=>COUNT;
L4: ; NEXT FILE:
MOV R6 COUNT ; COUNT=>FILECOUNT;
MOVC CURSLENGTH R0 ; CURSLENGTH=>SIZE;
MOVC 2 R1 ; 2=>BUFFERS;
MOV FADDR R5 ; RE.NAME
ADDC 5 R5 ; +5
MOV R5 FADDR ; =>RE.NAME;
MOV 3. X5 R2 ; IDENT.NAME
XTR R2 14 ; (14:0)=>IDENT;
INE R2 #0300 ; IF IDENT<>BIN THEN
JMP L5 ; GOTO BYTE FILE;
MOVC 64 R2 ; 64=>BUFSIZE;
MOVC BMWORD R3 ; WORD=>MODE;
MON INIT ; INIT(SHAR);
MOVC BMINPUT OR BMWORD R3 ; INPUT OR WORD=>MODE;
MOV FADDR R0 ; FADDR=>RE.NAME;
MON OPEN ; OPEN(MODE,NAME,SHARE);
JMP DP1 ; ERROR: GOTO EOFACT;
MOVC BMEOF R0 ; EOF
MOV R0 STREAT.X4 ; =>TREAT.SHARE;
MOVC DP1 R0 ; EOFACT
MOV R0 SEOFAN.X4 ; =>EOFACTION.SHARE;
JMP BIN ; GOTO BIN;
;###
L5: ; BYTE FILE:
MOVC 128 R2 ; 128=>BUFSIZE;
MOVC BMBYTE R3 ; BYTE=>MODE;
MON INIT ; INIT(SHAR);
MOVC BMINPUT OR BMBYTE R3 ; INPUT OR BYTE=>MODE;
MOV FADDR R0 ; FADDR=>RE.NAME;
MON OPEN ; OPEN(MODE,NAME,SHARE);
JMP DP1 ; ERROR: GOTO EOFACT;
MOVC BMEOF R0 ; EOF
MOV R0 STREAT.X4 ; =>TREAT.SHARE;
MOVC DP1 R0 ; EOFACT
MOV R0 SEOFAN.X4 ; =>EOFACTION.SHARE;
JMP CMD ; GOTO COMMAND DECODE;
;
DP1: ; EOFACT:
MON CLOSE ; CLOSE(SHARE);
MOVC 10000 R0 ;
MOV R0 DELAY ;
DXX: ;
MOVC 0 R3 ;
JMP S5 DP2 ; FILLER;
MOV DELAY R0 ;
ADDC -1 R0 ;
MOV R0 DELAY ;
JON R0 DXX ;
MOV COUNT R6 ; FILECOUNT=>COUNT;
SOB R6 L4 ; IF DECR(COUNT)<>0 THEN
; GOTO NEXTFILE;
JMP L3 ; GOTO FIRST FILE;
;
BIN: ; NEXT WORD:
MON INCHAR ; INCHAR(SHARE)=>DOUBLE;
JMP S5 DP2 ; OUTPUT DOUBLE(7:0);
SWP R3 ;
JMP S5 DP2 ; OUTPUT DOUBLE(15:8);
JMP BIN ; GOTO NEXT WORD;
; ;###
DP2: ; OUTPUT:
MOVC DISPIF R2 ; DISPIF=>DEVICE;
SIO R1 R2 ; SENSE(STATUS,DEVICE);
IBN R1 BNINRDY ; IF STATUS(INPUT READY) THEN
JMP L7 ; READ CHAR;
IBNP R1 BNOUTRDY ; IF STATUS(OUTPUT READY) THEN
WIO R3 R2 ; WRITE(CHAR,DEVICE);
JMP 0. X5 ; RETURN;
MOVC 100 R0 ; 100=>DELAY;
MOV INTERRUPT-C R1 ;
MON WAITINTERRUPT ; WAITINTERRUPT;
JMP DP2 ; TIMEOUT: GOTO OUTPUT;
JMP DP2 ; INTERRUPT: GOTO OUTPUT;
;
L7: ; READ CHAR:
RIO R1 R2 ; READ(CHAR,DEVICE);
XTR R1 7 ;
INE R1 XOFF ; IF CHAR<>XOFF THEN
JMP DP2 ; GOTO OUTPUT;
L8: ; WAIT X-ON:
MOVC 100 R0 ;
MOV INTERRUPT-C R1 ;
MON WAITINTERRUPT ; WAITINTERRUPT(DELAY,INTERRUPT);
NOP ; TIMEOUT: IGNORE;
SIO R1 R2 ; SENSE(STATUS,DEVICE);
IBZ R1 BNINRDY ; IF NOT STATUS(INPUT READY) THEN
JMP L8 ; GOTO WAIT X-ON;
RIO R1 R2 ; READ(CHAR,DEVICE);
XTR R1 7 ;
IEQ R1 XON ; IF CHAR=X-ON THEN
JMP DP2 ; GOTO OUTPUT;
JMP L8 ; GOTO WAIT X-ON;
;###
;----------------------------------------------------------------------
; COMMAND SECTION.
;----------------------------------------------------------------------
GETCOLOUR: ; GET COLOUR:
MOV R6 LINK ; SAVE(LINK);
GC1: MON INCOMMAND ; INCOMMAND;
<:BLACK:> , COL0 ;
<:WHITE:> , COL1 ;
<:RED:>,0 , COL2 ;
<:MAGENA:> , COL3 ;
<:BLUE:>,0 , COL4 ;
<:CYAN:>,0 , COL5 ;
<:GREEN:> , COL6 ;
<:YELLOW:> , COL7 ;
0 , 0 ;
JMP GC1 ; TERM: GOTO GET COLOUR;
JMP GC1 ; ERROR: GOTO GET COLOUR;
JMP GC1 ; NOT FOUND: GOTO GET COLOUR;
;
COL0: MODC 0 - 1 ;
COL1: MODC 1 - 2 ;
COL2: MODC 2 - 3 ;
COL3: MODC 3 - 4 ;
COL4: MODC 4 - 5 ;
COL5: MODC 5 - 6 ;
COL6: MODC 6 - 7 ;
COL7: MOVC 7 + 8 R0 ; COLOUR+NOBLINK=>COLOUR;
MON INCHAR ; INCHAR(BLINK);
IEQ R3 <:+:> ; IF BLINK THEN
ADDC -8 R0 ; COLOUR-NOBLINK=>COLOUR;
INE R3 <:+:> ;
MON BACKSPACE ;
MOV R0 R3 ;
JMPI LINK ; RETURN;
GETPOS: ; GETPOSITION:
MOV R6 LINK ; SAVE(LINK);
GP1: MON INWORD ; INWORD(POSITION);
JMP GP1 ; ERROR: GOTO GETPOSITION;
MOV 0. X6 R3 ;
JMP S5 DP2 ; OUTPUT(LINE);
GP2: ; GET SECOND:
MON INWORD ; INWORD(POS);
JMP GP2 ; ERROR: GOTO GET SECOND;
MOV 0. X6 R3 ;
JMP S5 DP2 ; OUTPUT(POS);
JMPI LINK ; RETURN(GETPOSITION);
CX1: MODC 1 - 2 ;
CX2: MODC 2 - 3 ;
CX3: MODC 3 - 4 ;
CX4: MODC 4 - 5 ;
CX5: MODC 5 - 6 ;
CX6: MODC 6 - 11 ;
CX11: MODC 11 - 16 ;
CX16: MODC 16 - 19 ;
CX19: MODC 19 - 21 ;
CX21: MODC 21 - 22 ;
CX22: MODC 22 - 23 ;
CX23: MODC 23 - 28 ;
CX28: MOVC 28 R3 ; 28=>COMMAND;
JMP S5 DP2 ; OUTPUT(COMMAND);
JMP 0. X6 ; RETURN;
;###
CMD: ; NEXT COMMAND;
MON INCOMMAND ; INCOMMAND(COMMAND);
<:TXT:>,0 , TXT ;
<:ECM:>,0 , CMD1 ;
<:ETM:>,0 , CMD2 ;
<:CUON:>,0 , CMD3 ;
<:CUOFF:> , CMD4 ;
<:CUCOLR:> , CMD5 ;
<:CUPOS:> , CMD6 ;
<:INCON:> , CMD7 ;
<:INCOFF:> , CMD8 ;
<:INCPOS:> , CMD9 ;
<:INCLIE:> , CMD10 ;
<:DECPOS:> , CMD11 ;
<:DECLIE:> , CMD12 ;
<:RESLIE:> , CMD13 ;
<:CUHOME:> , CMD14 ;
<:SPLINE:> , CMD15 ;
<:REPEAT:> , CMD16 ;
<:COLOUR:> , CMD17 ;
<:NEWBLK:> , CMD18 ;
<:NEWFOT:> , CMD19 ;
<:ROLLUP:> , CMD20 ;
<:ROLLDN:> , CMD21 ;
<:ROLLPT:> , CMD22 ;
<:INVERT:> , CMD23 ;
<:RESET:> , CMD25 ;
<:SAVE:>,0 , CMD26 ;
<:RESTOE:> , CMD27 ;
<:GRAPHC:> , CMD28 ;
<:EXIT:>,0 , CMD50 ;
<:NEXT:>,0 , DP1 ;
0 , 0 ;
JMP CMD ; TERM:
JMP CMD ; ERROR:
JMP CMD ; NOT FOUND:
CMD1: MODC 1 - 3 ; ECM;
CMD2: MODC 2 - 3 ; ETM;
CMD3: MODC 3 - 4 ; CUON;
CMD4: MODC 4 - 7 ; CUOFF;
CMD7: MODC 7 - 8 ; INCON;
CMD8: MODC 8 - 9 ; INCOFF;
CMD9: MODC 9 - 10 ; INCPOS;
CMD10: MODC 10 - 11 ; INCLINE;
CMD11: MODC 11 - 12 ; DECPOS;
CMD12: MODC 12 - 13 ; DECLINE;
CMD13: MODC 13 - 14 ; RESLINE;
CMD14: MODC 14 - 15 ; CUHOME;
CMD15: MODC 15 - 20 ; SPLINE;
CMD20: MODC 20 - 21 ; ROLLUP;
CMD21: MODC 21 - 25 ; ROLLDOWN;
CMD25: MODC 25 - 26 ; RESET;
CMD26: MODC 26 - 27 ; SAVE;
CMD27: MOVC 27 R3 ; RESTORE;
JMP S5 DP2 ; OUTPUT(COMMAND);
JMP CMD ; GOTO NEXT COMMAND;
;###
TXT: ; OUTPUT TEXT:
JMP S6 CX2 ; ENTER TEXT MODE;
TXT1: ;
MON INCHAR ; INCHAR(CHAR);
SEQ R3 <:@:> ; IF CHAR = <:@:> OR
IEQP R3 NL ; CHAR=NL THEN
JMP S6 CX1 ; ENTER COMMAND MODE;
JMP CMD ; GOTO NEXT COMMAND;
INE R3 <:_:> ; IF CHAR= _ THEN
JMP TXT2 ; BEGIN
MON INWORD ; INWORD(CHAR);
JMP TXT1 ; ERROR:
MOV 0. X6 R3 ; END;
TXT2: JMPI S5 IDP2 ; OUTPUT(CHAR);
JMP TXT1 ;
CMD5: ; CURSOR COLOUR:
JMP S6 CX5 ; OUTPUT COMMAND;
JMP S6 GETCOLOUR ; OUTPUT(COLOUR);
JMPI S5 IDP2 ; OUTPUT(COLOUR);
JMP CMD ; GOTO NEXT COMMAND;
CMD6: ; CURSOR POSITION:
JMP S6 CX6 ; OUTPOUT COMMAND;
JMP S6 GETPOS ; OUTPUT(POSITION);
JMP CMD ; GOTO NEXT COMMAND;
CMD16: ; REPEAT:
JMP S6 CX16 ; OUTPUT COMMAND;
C161: ;
MON INWORD ; GET COUNT;
JMP C161 ; ERROR:
MOV 0. X6 R3 ; 0.ADDR=>COUNT;
JMPI S5 IDP2 ; OUTPUT(COUNT);
JMP CMD ; GOTO NEXT COMMAND;
CMD17: MODC 17-18 ; NEWCOLOUR:
CMD18: MOVC 18 R3 ; NEWBLINK:
JMPI S5 IDP2 ; OUTPUT(COMMAND);
JMP S6 GETCOLOUR ; GET FOREGROUND;
MOV R3 DELAY ; SAVE(FOREGROUND);
JMP S6 GETCOLOUR ; GET BACKGROUND;
SLL R3 4 ; BACKGROUND<8
ADD DELAY R3 ; +FOREGROUND=>COLOUR;
JMPI S5 IDP2 ; OUTPUT(COLOUR);
JMP CMD ; GOTO NEXT COMMAND;
CMD19: ; NEWFORMAT:
JMP S6 CX19 ; OUTPUT(COMMAND);
MON INCHAR ; INCHAR(CHAR);
INE R3 <:_:> ; IF CHAR= <:_:> THEN
JMP C190 ; BEGIN
MON INWORD ; INWORD(CHAR);
CLR 0. X6 ; ERROR: 0=>CHAR;
MOV 0. X6 R3 ; END;
C190: JMPI S5 IDP2 ; OUTPUT(CHAR);
MOVC 9 R0 ; 9=>COUNT;
;###
C191: ; NEXT PART:
MOV R0 LINK ;
C192: ;
MON INWORD ; INWORD(PART);
JMP C192 ; ERROR:
MOV 0. X6 R3 ;
JMPI S5 IDP2 ; OUTPUT(PART);
MOV LINK R0 ;
SOB R0 C191 ; IF DECR(COUNT)<>0 THEN
; GOTO NEXT PART;
JMP CMD ; GOTO NEXT COMMAND;
;
CMD22: ; ROLL PART:
JMP S6 CX22 ; OUTPUT(COMMAND);
C221: ; GET DIRECTION:
MON INCOMMAND ; INCOMMAND(DIRECTION);
<:CLEAR:> , ROLL0 ; CLEAR;
<:UP:>,0,0 , ROLL1 ; UP;
<:DOWN:>,0 , ROLL2 ; DOWN;
<:LEFT:>,0 , ROLL3 ; LEFT;
<:RIGHT:> , ROLL4 ; RIGHT;
0 , 0 ;
JMP C221 ; TERM:
JMP C221 ; ERROR:
JMP C221 ; NOT FOUND:
;
ROLL0: MODC 0-1 ;
ROLL1: MODC 1-2 ;
ROLL2: MODC 2-3 ;
ROLL3: MODC 3-4 ;
ROLL4: MOVC 4 R3 ;
JMPI S5 IDP2 ; OUTPUT(DIRECTION);
JMP S6 GETPOS ; OUTPUT(FIRST POSITION);
JMP S6 GETPOS ; OUTPUT(SECOND POSITION);
JMP CMD ; GOTO NEXT COMMAND;
CMD23: ; INVERT:
JMP S6 CX23 ; OUTPUT(COMMAND);
JMP S6 GETPOS ; OUTPUT(POSITION);
JMP CMD ; GOTO NEXT COMMAND;
CMD28: ; GRAPHIC MODE:
JMP S6 CX28 ; OUTPUT(COMMAND);
C281: ;
MON INCOMMAND ;
<:ALPHAM:> , GCMD1 ;
<:DISPLY:> , GCMD2 ;
<:NEWINC:> , GCMD3 ;
<:REPEAT:> , GCMD4 ;
<:POSITN:> , GCMD5 ;
<:COLOUR:> , GCMD6 ;
<:INCRET:> , GCMD7 ;
<:INCPOS:> , GCMD9 ;
<:INCLIE:> , GCMD10 ;
<:DECPOS:> , GCMD11 ;
<:DECLIE:> , GCMD12 ;
<:COUNTP:> , GCMD13 ;
0 , 0 ;
JMP C281 ;
JMP C281 ;
JMP C281 ;
;###
GCMD3: ; NEWINCREMENT:
MODC 1 - 2 ;
GCMD5: ; POSITION:
MOVC 2 R3 ;
JMPI S5 IDP2 ; OUTPUT(COMMAND);
GC51: MON INWORD ; INWORD(FIRST);
JMP GC51 ; ERROR:
MOV 0. X6 R3 ;
SRL R3 6 ;
JMPI S5 IDP2 ; OUTPUT(FIRST(7:0));
MOV 0. X6 R3 ;
XTR R3 6 ;
JMPI S5 IDP2 ; OUTPUT(FIRST(15:8));
GC52: MON INWORD ; INWORD(SECOND);
JMP GC52 ; ERROR:
MOV 0. X6 R3 ;
SRL R3 6 ;
JMPI S5 IDP2 ; OUTPUT(SECOND(7:0));
MOV 0. X6 R3 ;
XTR R3 6 ;
JMPI S5 IDP2 ; OUTPUT(SECOND(15:8));
JMP C281 ; GOTO NEXT GRAPHIC;
GCMD1: ; ENTER ALPHANUM:
JMP S6 CX11 ; OUTPUT(COMMAND);
JMP CMD ; GOTO NEXT COMMAND;
GCMD4: ; REPEAT:
JMP S6 CX4 ; OUTPUT(COMMAND);
GC41: MON INWORD ; INWORD(COUNT);
JMP GC41 ; ERROR:
MOV 0. X6 R3 ;
JMPI S5 IDP2 ; OUTPUT(COUNT);
JMP C281 ; GOTO NEXT GRAPHIC;
GCMD6: ; COLOUR:
JMP S6 CX3 ; OUTPUT(COMMAND);
JMP S6 GETCOLOUR ; GET COLOUR;
JMPI S5 IDP2 ; OUTPUT(COLOUR);
JMP C281 ; GOTO NEXT GRAPHIC;
GCMD2: MODC 0 - 5 ; DISPLAY:
GCMD7: MODC 5 - 6 ; INCREMENT:
GCMD9: MODC 6 - 8 ; INCPOS:
GCMD10: MODC 8 - 7 ; INCLINE:
GCMD11: MODC 7 - 9 ; DECPOS:
GCMD12: MODC 9 - 10 ; DECLINE:
GCMD13: MOVC 10 R3 ; COUNTUP:
JMPI S5 IDP2 ; OUTPUT(COMMAND);
JMP C281 ; GOTO NEXT GRAPHIC;
CMD50: ; EXIT:
MON ENDPROGRAM ;
TRP 0 ;
;
XREFS= 1 ;
XBUFS= 3 ;
XPRPC= L0 ;
NOLIST
MESSAGE <:END OF USER MODULE:>
USE PROG
XDEVPR= 0
XPSIZE= LOC
USE BASE
XCURIN= LOC
0,REPEAT CURSOUT-CURSIN-1
XCUROUT= LOC
0,REPEAT 4
XWORKING=0, XPROGRAM=LOC
XWORDS=0, XREFSX=0, XBUFSX=0, XCURWORK=0, XCENTRY=0
XSIZE= LOC+C
USE PROG
IF LOC+XSIZE NE WORDS THEN MESSAGE <:SIZE <> WORDS:>
MESSAGE WORDS
MESSAGE XSIZE
FI
LIST
END ;### ;
«nul»