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: 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»