32 00073'030753 DSPIR: LDA 2,DSPDT ;RESTORE DCT FOR RTOS 33 00074'034416 LDA 3,IR3 ;AND RETURN ADDRESS 34 00075'077777 .UIEX ;USER INTERRUPT EXIT 35 36 00076'022744 DSPB: LDA@ 0,LSTA ;GET NEXT IN LIST 37 00077'062056 DOB 0,DSP ;HAND IT TO RAMTEK 38 00100'010742 ISZ LSTA ;POINT TO NEXT ITEM 39 00101'063456 SKPBN DSP ;NOWWAIT SOME 40 00102'000762 JMP DSPIL ;TO SEE IF THE RAMTEK 41 00103'063456 SKPBN DSP ;WILL EAT THE WORD 42 00104'000760 JMP DSPIL ;RIGHT AWAY 43 00105'063456 SKPBN DSP 44 00106'000756 JMP DSPIL 45 00107'063456 SKPBN DSP 46 00110'000754 JMP DSPIL 47 00111'000762 JMP DSPIR ;WE LOSE.RAMTEK WINS 48 49 00112'000000 IR3: 0 ;INTERRUPT RETURN 50 00113'000114'XMTWA: +1 ;MESSAGE ADDRESS 51 00114'000000 XMTWD: 0 ;MESSAGE WORD 52 @ 0003 RMTK 01 RMTKW - WAIT FOR END OF DISPLAY LIST LOAD 02 03 00115'040721 RMTKW: STA 0,R0 SAVE AC'S 04 00116'044721 STA 1,R1 05 00117'050721 STA 2,R2 06 00120'054721 STA 3,R3 07 00121'020772 LDA 0,XMTWA 08 00122'077777 .REC 09 00123'020713 LDA 0,R0 RESTORE AND RETURN 10 00124'024713 LDA 1,R1 11 00125'030713 LDA 2,R2 12 00126'034016 LDA 3,USP 13 00127'002712 JMP@; R3 14 15 .END 0004 RMTK CMND 000062' 1/29 1/42 2/18 DSP 000056 1/15 1/43 1/46 2/11 2/27 2/37 2/39 2/41 2/43 2/45 DSPB 000076' 2/26 2/36 DSPDT 000046' 1/36 2/12 2/32 DSPDV 000045' 1/35 2/11 DSPIL 000064' 2/25 2/40 2/42 2/44 2/46 DSPIR 000073' 2/32 2/47 DSPIS 000063' 2/15 2/24 DSPM 000100 1/16 2/14 DSSAV 000052' 2/13 2/16 ERR 000034' 1/39 1/53 FTFLG 000044' 1/31 1/34 2/09 IDDN 000020' 1/33 1/40 IR3 000112' 2/24 2/33 2/49 LSTA 000042' 1/25 1/44 1/45 2/07 2/36 2/38 LSTC 000043' 1/27 2/00 2/25 R0 000036' 1/24 1/47 2/03 3/03 3/09 R1 000037' 1/26 1/48 2/04 3/04 3/10 R2 000040' 1/28 1/49 2/05 3/05 3/11 R3 000041' 1/30 1/51 2/06 3/06 3/13 RMTKL 000000' 1/24 RMTKW 000115' 3/03 XMTWA 000113' 2/29 2/50 3/07 XMTWD 000114' 1/41 2/51 .CPYL 000001$X .FRET 000002$X .IXMT 000071'X 2/30 .REC 000122'X 3/08 .UIEX 000075'X 2/34 0001 DSQ 01 DSQ.SR -- DISPLAY SQUARE ON RAMTEK 02 FOR GX1000 DISPLAY 03 04 CALLING SEQUENCE: 05 06 CALL DSQ (INT, IX, IY, IW, IH) 7 INT NT t INTENSITY (0-127) 09 @X = X START POSITION (0-319) 10 Y = Y START POSITION (0-255) 11 W = WIDTH OF SQUARE 12 H = HEIGHT OF SQUARE 13 14 .TITL DSQ 15 .ENT DSQ 16 .EXTN RMTKL, RMTKW 17 .EXTD .CPYL, .FRET 18 .NREL 19 20 RAMTEK DISPLAY COMMANDS 21 22 016000 LCM=16000 23 000400 BK=400 24 000000 AN = 0 25 000006 GC=6 26 004000 SDC=04000 27 000001 C0 = 1 28 000002 C1 = 2 29 006000 SSC=06000 30 000001 S0 = 1 31 000002 S1 = 2 32 000004 S2 = 4 33 000010 S3 = 10 34 046000 SSM=46000 35 022000 LE1=22000 36 032000 LL1=32000 37 024000 LE2=24000 38 034000 LL2=34000 39 002000 BLK= 2000 40 001000 TM = 1000 41 012000 ERS=12000 42 43 FORTRAN STACK ARGUMENT DISPLACEMENTS 44 45 177611 INT = -167 46 177612 IX = INT+1 47 177613 IY = IX+1 48 177614 IW = IY+1 49 177615 IH = IW+1 50 000005 FS. = IH-INT+1 0001 CNVBA 01 .TITL CNVBA 02 03 CONVERT BINARY TO ASCII 04 05 CALLING SEQUENCE 06 07 CALL CNVBA (NUM,NAD) 08 09 NUM = NUMBER TO BE CONVERTED 18 NAD I ADDRESS FOR THE ASCIE CHARACTERS 11 12 .ENT CNVBA 13 14 .EXTD .CPYL ;FORTRAN PUSH ROUTINE 15 .EXTD .FRET ;FORTRAN RETURN ROUTINE 16 17 .NREL 18 19 DEFINE FORTRAN STACK DISPLACEMENTS 20 177611 NUM = -167 21 177612 NAD = NUM+1 22 000002 .FS = NAD-NUM+1 23 24 00000'000002 .FS 25 00001'006001@CNVBA:: JSR 0.CPYL ;PUSH THE STACK 26 00002'031612 LDA 2,NAD,3 ;PICK UP THE ADDRESS FOR DATA 27 00003'020476 LDA 0,BLANK ;FILL WITH BLANKS 28 00004'041000 STA 0,0,2 29 00005'041001 STA 0,1,2 30 00006'145120 MOVZL 2,1 ;MAKE IT A BYTE POINTER 31 00007,044466 STA 1,BYTP 32 00010'027611 LDA 1,eNUM,3 ;GET THE NUMBER TO CONVERT 33 00011'125005 MOV 1,1,SNR ;ZERO IS SPECIAL 34 00012'000457 JMP ZR ;IT WAS ZERO 35 00013'125113 : MOVL # 1,1,SNC ;IS THE NUMBER POS OR NEG7 36 00014'000405 JMP POS ;POSITIVE 37 00015'020466 LDA 0,MINUS ;NEGATIVE, SO PUT OUT SIGN 38 00016'004425 JSR PUT 39 00017'124400 NEG 1,1 ;COMPLEMENT THE NUMBER 40 00020'000403 JMP CNVT 41 00021'020457 POS : LDA 0,PLUS 42 00022'004421 JSR PUT ;PUT OUT THE PLUS SIGN 43 00023'030453 CNVT:LDA 2,TBLPT ;RESET TABLE POINTER 44 00024'050453 STA 2, TBLE ;TO THE TOP 45 00025'152400 SUB 2,2 ;CLEAR THE SWITCH TO OUTPUT DIGITS 46 00026'050446 STA 2,DGSWT 47 00027'020457 LOOP LDA 0,C60 ;RESET COUNTER 48 00030'032447 LDA 2,@ ;GET POWER OF 10 49 00031'151005 MOY 2,2,SNR ;END OF THE TABLE7 50 00032'006002@ JSR @FRET ;YES, SO RETURN 51 00033'010444 ISZ TBLE ;NO, SO BUMP THE POINTER 52 00034'132032 LP ADCZ# 1,2,SZC ;DOES POWER OF 10 GO IN7 53 00035'000404 .JMP OUT ;NO, SO OUTPUT THE DIGIT 54 00036'146400 SUB 2,1 ;YES, SO SUBTRACT IT OFF 55 00037'101400 INC 0,0 ;COUNT IT 56 00040'000774 JMP LP ;KEEP CHECKING 57 00041'004402 OUT JSR PUT ;TO THE ARRAY 58 00042'000765 JMP LOOP ;TRY IT 59 00043'054441 PUT STA 3,RET ;;SAVE RETURN 0002 CNVBA 01 00044'030430 LDA 2,DGSWT SEE IF WE MAVE PUT OUT ANY DIGITS 02 00045'151004 MOV 2,2,SZR 03 00046'000405 JMP STRE YES, SO STORE THIS ONE 04 00047'034437 LDA 3,060 SEE IF THIS IS A 0 05 00050'162415 SUB@ 3,0,SNR WELL? 06 00051'000416 JMP BLNK YES, SO PUT OUT A BLANK 07 00052'010422 ISZ DGSWT NO, SO SET THE SWITCH 08 00053'030422 STRE LDA 2,BYTP GET THE BYTE POINTER 09 00054'010421 ISZ BYTP BUMP IT 10 00055'151222 MOVZR 2,2,SZC MAKE IT AN INDEX-CHECK FOR RIGHT OR LEFT BUTE 11 00056'000485 JMP RGHT RIGHT 12 00057'176400 SUB 3,3 LEFT SO SET NUMBER TO 0 13 00060'177300 ADDS 0,3 ADD ON THIS VALUE--TO LEFT BYTE 14 00061'055800 STA 3,0,2 STORE IT 15 00062'002422 JMP @;RET RETURN 16 00063'035000 RGHT LDA 3,0,2 GET THE NUMBER 17 00064'117000 ADD 0,3 ADD ON TO RIGHT BYTE 18 00065'055000 STA 3,0,2 RESTORE IT 19 00066'002416 JMP @RET FETWRN 20 00067'020416 BLNK LDA 0,040 21 00070'000763 JMP STRE STORE A BLANK 22 INPUT WAS A ZERO--PUT A ZERO AND BLANK IN THE LAST WORD 23 00071'020411 ZR: LDA 0,ZRBK BLANK VERO IN ASCII 24 00072'041001 STA 0,1,2 INTO LAST PLACE 25 00073'006002$ JSR 0.FRET RETURN 26 27 00074'000000 DGSWT: 0 28 00075'000000 BYTP: 0 29 00076'000107'TBLPT: TBL PERMANENT TABLE POINTER 30 00077'000107'TBLE: TBL POINTER TO CURRENT POWER OF 10 31 00100'000053 PLUS: "+ 32 00101'020040 BLANK: 20040 33 00102'020060 ZRBK: 20060 34 00103'000055 MINUS: "35 00104'000000 RET: 0 36 00105'000040 C40: 40 37 00106'000060 C60: 60 38 00107'000144 TBL: 100.