Jump to content

Artoj

Members
  • Posts

    163
  • Joined

  • Last visited

Posts posted by Artoj

  1. Hi Gary,

    I spent sometime looking at your TIM Board, I made a rough copy, lots of unknowns though. I could make it functional if I had a enough time. When you first posted this I was excited as I was looking at making a plugin board using the V9958, so what I did was took my schematic and designed it around your board. I have put a few X pins where I do not know where they go or what they do. If you want me to reproduce your board I would be very happy for any help with the schematics. Regards Arto.

      

    TIM-1Pica1a.png

    • Like 3
    • Thanks 1
  2. 3 hours ago, dhe said:

    Are you going to be taking orders for boards

    I need extra time, my sewerage system at home decided to go sideways, as I am also doing the plumbing, it means less time for board cleanups, regards Arto. Here is my short list (*):

     

    MPEB Boards

    MPEB Jumper Stereo Digitport V1      *

    MPEB Samside  V1                           *

    MPEB Music Card V4

    MPEB 64/64 I/O

    MPEB 2 slot 44

    MPEB 2 slot 60 direct PEB

    MPEB Mega Sram Expander V2.0

    MPEB Pin Header

     

    Mini PE Boards

    Redoing for new form MPEB factor 

     

    Cartridges 

    TI99 EPROMMER V1a (based on H Martin & R Kleinschafer)            *
    EPROM Cart V4 (Based on J Guidry, S Conner, M Brent, T Knerr)     *
    EPROMOX Cart V1 (based on ROMOX)
    TI99 Wopper V1 (based on C A Bowman Whopper)
    TI99-GROMO V1 (based on H Martin)                                           *
    TI99-GROMOStack V1                                                                 *

     

    Joystick Port

    TI99-Joy-RS232 V3
    TI JoyParPort V3 (using EDE300)
    TI99JoyPort V6 (some parts need Testing)                                   *
    TI99JoyPortPlug 1a                                                                    *

     

    Cassette Port

    TI99 Digital Recorder

     

    Internal Boards

    Tango V99

    TI99/4A Keyboard Tester V1                                                      *

    • Like 2
    • Thanks 1
  3. On 5/11/2024 at 12:25 PM, jrhodes said:

    Does anyone have a palette file that i can import into Gimp to limit a image to the exact colors of the TMS9918?

    Using the palette Gary supplied, I colour tested each one in GIMP.

     

    R        0.0     37.3    50.6    32.9    48.6
    G        0.0     77.3    85.1    33.3    46.3
    B        0.0     33.3    51.0    89.4    95.7
    HTML    000000   5fc555  861982  5455e4  7c76f4

    R        77.3    47.5    91.4    93.3    82.0
    G        35.7    91.0    38.0    50.6    76.1
    B        32.2    95.3    35.7    48.6    39.6
    HTML    c55b52   79e8f3  e9615b  ee817c  d1c265

    R        88.6    32.9    73.3    80.0    100
    G        81.2    68.2    38.0    80.0    100
    B        54.1    29.8    71.0    80.0    100
    HTML    e2cf8a   54ae4c  bb6165  cccccc  ffffff


     

    COLORTI1a.png

    • Like 1
    • Thanks 1
  4. Hi All,

    I am still tidying all the MPEB boards, in the mean time here is the 3D printed Box and it's first run, it failed on part of the print, which is fine as this is only to test the board fit when they get made. I caught the Digi bug so it gave me a reason to add the MPEB Jumper boards I was planning to include in the future. These Jumper boards fit on top of a MPEB board and are an addition to the base board underneath, like the one I made here where you can use the TI to create stereo audio output from your digital data. Regards Arto   

    MPEB-BOXv1.JPG

    MPEBJ-TI99-SDigiportv1pic1a.png

    • Like 6
  5. Hi All,

    Back in the day I wrote code everyday and loved it, it was such a joy. Luckily I have found a lot of old printouts, still quite damaged through water and just fading away. Here is a routine I wrote to open and close small windows on the screen, I remember it was part of a suite that was going to be call TIGOS (Texas Instruments Graphic Operating System), I have some parts I am still deciphering, as they were many alteration by pencil on water damaged and faded dot-matrix printouts. I've typed it in and hopefully there are no errors, I hope you enjoy, regards Arto. 

     

    **********************************
    CALL LINK("WOPEN",VAR,X1,X2,Y1,Y2)
    ----------------------------------
    
    VAR	=0 TO 9		TOTAL OF 10 WINDOWS
    X1	=1 TO 32	START COLUMN
    X2	=1 TO 32	END COLUMN
    Y1	=1 TO 24	START ROW
    Y2	=1 TO 24	END ROW
    
    ONLY MINIMAL ERROR CHECKING
    THE LOCATION DECIMAL 32248 HOLDS (>7DF8)
    THE CHARACTER FOR THE WINDOWS BACKPROP
    
    ----------------------------------
    CALL LINK("WCLOSE",VAR)
    
    VAR	=0 TO 9		TOTAL OF 10 WINDOWS
    
    ONLY CLOSE A WINDOW IF IT HAS 
    BEEN PREVIUOSLY BEEN OPENED
    
    ----------------------------------
    
    MINIMAL REQUIREMENTS MINI-MEM + 32K
    
    		BY ARTO 1986
    		
    -------------------------------------------------
    
    7D00	02E0		LWPI >70B8			WORKSPACE
    7D02	70B8
    7D04	C808		MOV R11,@>7DF4		SAVE RETURN [RT]
    7D06	7DF4
    7D08	04C0		CLR R0				NO ARRAY
    7D0A	04C1		CLR R1
    7D0C	06A0		BL @>7DB6			GET 1ST ARGUMENT [FC]
    7D0E	7DB6		
    7D10	C120		MOV @>834A,R4
    7D12	834A	
    7D14	06A0		BL @>7DB6			2ND [FC]
    7D16	7DB6
    7D18	C160		MOV @>834A,R5
    7D1A	834A	
    7D1C	06A0		BL @>7DB6			3RD [FC]
    7D1E	7DB6
    7D20	C1A0		MOV @>834A,R6
    7D22	834A		
    7D24	06A0		BL @>7DB6			4TH [FC]
    7D26	7DB6
    7D28	C1E0		MOV @>834A,R7
    7D2A	834A
    7D2C	06A0		BL @>7DB6			5TH [FC]
    7D2E	7DB6
    7D30	C220		MOV @>834A,R8	
    7D32	834A
    7D34	C244		MOV R4,R9			R9 = LOCATION STORE
    7D36	0A39		SLA R9,3			     FOR VALUE IN	
    7D38	0229		AI R9,>7DFA				 ARGUEMENT [SR]
    7D3A	7DFA
    7D3C	0288		CI R8.>18			CHECK Y2 24	
    7D3E	0018
    7D40	1535		JGT >7DAC			[EX]
    7D42	0286		CI R6,>20			CHECH X2 32
    7D44	0020
    7D46	1532		JGT >7DAC			[EX]
    7D48	0607		DEC R7				ADJUST Y VALUE 
    7D4A	0A57		SLA R7,5			       FOR SCREEN
    7D4C	0608		DEC R8
    7D4E	0A58		SLA R8,5
    7D50	CE45		MOV R5,*R9+			STORE X1
    7D52	CE46		MOV R6,*R9+			      X2
    7D54	CE47		MOV R7,*R9+			      Y1		
    7D56	CE48		MOV R8,*R9+			      Y2
    7D58	1000		NOP
    7D5A	1000		NOP
    7D5C	0209		LI R9,>1111			LOAD FOR COMPARE
    7D62	7DF0
    7D64	0202	RG	LI R2,>0001			R2 = AMOUNT
    7D68	C244		MOV R4,R9			CHANGE VARIABLE
    7D6A	3A60		MPY @>7DF6,R9		    TO MEMORY LOCATION [NM]
    7D6C	7DF6		
    7D6E	C10A		MOV R10,R4
    7D70	0224		AI R4,>2000
    7D72	2000
    7D74	0248		MOV R8,R9			FINISH ROW
    7D76	A246		A R6,R9				FINISH SCREEN
    7D78	C285	NX	MOV R5,R10			COLUMN START
    7D7A	C007		MOV R7,R0			ROW START
    7D7C	A005		A R5,R0				SCREEN LOCATION
    7D7E	C0C0	NT	MOV R0,R3			SCREEN LOCATION TO
    7D80	A0C4		A R4,R3				       MEMORY LOCATION
    7D82	C043		MOV R3,R1			
    7D84	8820		C @>7DF2,@7DF0		COMPARE OPEN OR CLOSE
    7D86	7DF2							[CP CO]
    7D88	7DF0
    7D8A	1304		JEQ >7D94			JMP CLOSE [CC]
    7D8C	0420		BLWP @>6030			READ SCREEN
    7D8E	6030
    7D90	0201		LI R1,>7DF8			CHARACTER FOR WINDOW [SP]
    7D92	7DF8
    7D94	0420	CC	BLWP @>6028			WRITE SCREEN
    7D96	6028
    7D98	0580		INC R0				INCREMENT POSITION
    7D9A	058A		INC R10				INCREMENT COLUMN
    7D9C	0240		C R0,R9				ALL DONE
    7D9E	1306		JEQ >7DAC			[EX]
    7DA0	1505		JGT >7DAC			[EX]
    7DA2	818A		C R10,R6			COLUMN <R COL
    7DA4	11EC		JLT >7D7E			NEXT COLUMN [NT]
    7DA6	0227		AI R7,32			ADD 32 TO START ROW
    7DA8	0020
    7DAA	10E6		JMP >7D78			NEXT ROW [NX]
    7DAC	04E0	EX	CLR @>837C			NO ERROR
    7DAE	837C
    7DB0	02E0		MOV @>7DF4,R11		R11 = RETURN
    7DB2	7DF4
    7DB4	045B		B *R11				RETURN TO BASIC
    7DB6	0581	FC	INC R1				NEXT ARGUEMENT
    7DB8	0420		BLWP @>6044			GET NUMBER
    7DBA	6044
    7DBC	0420		BLWP @>601C			FLOATING POINT TO
    7DBE	601C							         INTEGER
    7DC0	1200		DATA >1200
    7DC2	045B		B *R11				RETURN SUBROUTINE
    7DC4	02E0	CL	LWPI >70B8			CLOSE SUBROUTINE
    7DC6	70B8
    7DC8	C80B		MOV R11,@>7DF4		SAVE RETURN [RT]
    7DCA	7DF4
    7DCC	04C0		CLR R0				NUMBER ARRAY
    7DCE	04C1		CLR R1
    7DD0	06A0		BL @>7DB6			GET WINDOW NUMBER
    7DD2	7D86								USED [FC]
    7DD4	C120		MOV @>834A,R4
    7DD6	834A
    7DD8	C244		MOV R4,R9			CHANGE VARIABLE TO
    7DDA	0A39		SLA R9,3			       TO STORE
    7DDC	0229		AI R9, >7DFA		       LOCATION [SR]
    7DDE	7DFA
    7DE0	C179		MOV *R9+,R5			GET X1
    7DE2	C189		MOV *R9+,R6			GET X2
    7DE4	C1F9		MOV *R9+,R7			GET Y1
    7DE6	C239		MOV *R9+,R8			GET Y2
    7DE8	C820		MOV @>7DF2,@>7DF0	LOAD FOR COMPARE [CP CO]
    7DEA	7DF2
    7DEC	7DF0
    7DEE	10BA		JMP >7D64			JUMP TO REGISTER [RG]
    7DF0	0000	CO	DATA >0000			COMPARE DATA
    7DF2	2222	CP	DATA >2222			
    7DF4	0000	RT	DATA >0000			RETURN
    7DF6	0300	NM	DATA >0300			SCREEN
    7DF8	8080	SP	DATA >8080			WINDOW CHARACTER
    7DFA	0000	SR	BSS 32				STORE VALUES
    7E1A	0000		AORG >701E
    701E	7FE0		DATA >7FE0
    7020	0000		AORG >7FE0
    7FE0	574F		TEXT 'WOPEN'
    7FE2	5045
    7FE4	4E20
    7FE6	7D00		DATA >7D00
    7FE8	5743		TEXT 'WCLOSE'
    7FEA	4C4F
    7FEC	5345
    7FEE	7DC4		DATA >7DC4
    7FE0	4F4C		END
    
    
    
    
    
    
    

     

    • Like 3
  6. Hi All,

    Here is a different HIRES program, it is not the same as the XB version, as I no longer have any other data than the listing, I cannot comment on all it's functions as yet. The paper was torn on one number but I figured it was a 2 by the left over parts, Line 10030, the "2" was at second from the end. I hope it works OK, if some one dissembles it, that should clear up it any issues. Regards Arto.  

    100 REM *****************
    110 REM * HIRES ROUTINE *
    120 REM * MINIMEM +32K  *
    130 REM *****************
    140 REM * BY ARTO HEINO *
    150 REM *   10/3/86     *
    160 REM *****************
    161 REM *VARIABLES USED *
    162 REM * X=1 TO 255    *
    163 REM * Y=1 TO 191    *
    164 REM *SET=1(ON)0(OFF)*
    165 REM * START=MEMLOC  *
    166 REM * FINIS=MEMLOC  *
    167 REM * A,B,Q=SUBRTN  *
    168 REM *****************
    169 REM *DO NOT INCLUDE *
    170 REM *ANY REMS OR ANY*
    171 REM *STRINGS IN YOUR*
    172 REM *PROGRAM*********
    173 CALL CLEAR
    180 REM *INITIALIZE LINK*
    190 GOSUB 10000
    200 REM *SCREEN MEM LOCT*
    210 START=9216
    220 FINIS=15360
    230 REM *CLR SCREEN MEM.*
    240 GOSUB 11000
    250 REM *POINT  X,Y,SET *
    260 X=128
    270 Y=100
    280 SET=1
    290 GOSUB 12000
    300 REM * LINK ROUTINE  *
    310 CALL LINK(HIRES")
    320 REM * PRESS FUNC 9  *
    330 REM *RETURN TO BASIC*
    340 REM *RESTORE CURSOR *
    350 CALL POKEV(1008,255,129,129,129,129,129,129,255)
    360 END
    9999 GOTO 9999
    10000 CALL LOAD(28702,127,224,"",32736,72,73,82,69,83,32,125,0)
    10010 CALL LOAD(32000,2,224,112,184,2,0,0,2,4,32,96,52,2,0,2,6,4,32,96,52,2,0,3,255)
    10020 CALL LOAD(32024,4,32,96,52,2,0,4,3,4,32,96,52,2,0,5,54,4,32,96,52,2,0,7,15)
    10030 CALL LOAD(32048,4,32,96,52,2,0,24,0,4,194,4,193,4,32,96,36,5,128,2,33,1,0,2,129)
    10040 CALL LOAD(32072,0,0,22,248,5,130,2,130,0,3,22,243,4,192,4,193,4,32,96,36,5,128,2,128)
    10050 CALL LOAD(32096,24,0,22,250,2,0,32,0,2,1,79,79,4,32,96,36,5,128,2,128,56,0,22,250)
    10060 CALL LOAD(32120,2,0,27,0,2,1,208,0,4,32,96,36,2,0,0,0,2,1,36,0,2,2,24,0)
    10070 CALL LOAD(32144,4,32,96,40,4,224,131,116,4,32,96,32,192,96,131,117,2,129,0,15,22,249,2,0)
    10080 CALL LOAD(32168,0,0,4,32,96,52,4,224,131,124,4,91)
    10090 RETURN
    11000 FOR CLR=STRART TO FINIS STEP 32
    11010 CALL LOAD(CLR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
    11020 NEXT CLR
    11030 RETURN
    12000 A=INT(X/8)*8+INT(Y/8)*256+(Y-INT(Y/8)*8)
    12010 B=X-INT(X)/8)*8
    12020 B=-(B=0)*128-(B=1)*64-(B=2)*32-(B=3)*16-(B=4)*8-B=5)*4-(B=6)*2-(B=7)
    12030 CALL PEEK(A+START,Q)
    12040 B=B-((Q+B<256)*(SET=1))*Q+((Q-B>-1)*(SET=0))*Q-((Q+B>255)*(SET=1))*(255-B)
    12050 CALL LOAD(A+STSRT,B)
    12060 RETURN
     

     

    TIDrawMM1a

    • Like 1
  7. 10 hours ago, arcadeshopper said:

    TIPI has a nice color epson emulation

    If there is emulation, then I might include it, give me some time, I am deciphering each line in zoom mode LOL. I also found a MiniMem version as well, it looks like I rewrote it with more parameters, it needs to be disassembled at some point. Regards Arto.    

    • Like 1
  8. 3 minutes ago, OLD CS1 said:

    Most printers from the era are in some way Epson-compatible.  Did you design for specific Epson printers or functionality?

    Yes, a Brother M1109/M1009 I think, I have it stored somewhere, the EPROM died a slow death. I used it mainly for my program listings so I could change and add improvements by hand. All my software disks has vanished into the Ether a long time ago. I hope to get a lot of my printed programs back to life over time. I wrote some stuff for the MicroBee as well. Regards Arto.

     

     

  9. Hi All,

    I have decided not to include the CALL DUMP routine, it was made for only for the EPSON type dot matrix printer, with a bucket load of control characters. 

     

    I have spotted an error in one of the previous lines:

     

    31100 M=AM :: P1$=SEG$("RL DUE FGH",AM,1):: IF P2$<>P1$ THEN Z$=STR$(H):: P$(A)=P$(A)&P2$&RPT$("0",2-LEN(Z$))&Z$

     

    Here is the Demo part of the program:

    99 ! CALL DRAW DEMO - SELF PORTAIT
    100 CALL DRAW(75,141,"E01R02E02R01E01R01E04U01E01R01E02R01U06E01U01E01U01E01U01E01U21H01U10E01U09E01U02E01U02E01U01E01U01E06",S)
    110 CALL DRAW(107,58,"E05R01E01R01E01R09F01R06F01R02F02R01F05D01F01D01F01D01F03D02F02D01F01D01F01D14",S)
    120 CALL DRAW(102,64,"G01D03G01D25F01D01F01D06F01D03F02D01F04R01F04R02F01R08E01R03E01R01E06R01E03U03E01U04",S)
    130 CALL DRAW(101,86,"U01E01U06E01U01E02",S):: CALL DRAW(107,76,"R06L02D01L05",S)
    140 CALL DRAW(111,55,"R07F02R01F01D01R04D01F01D01F02D01F02D01F03R02F01R01F01R02F02D01F01D09G01D02F01D03G01D03U03E01U03E01R01D08G01L02D01",S)
    150 CALL DRAW(128,75,"R06L04D01L01D01G01L01G02R01F01E02F01D01G01E01F01R01E01U02L04R05F02L01F01G01",S)
    160 CALL DRAW(114,86,"E02H01L01G01H01E01G01L02H01G01L02E02R01E01R02F01R02F01H01E01H01L01",S)
    170 CALL DRAW(117,82,"D03",S):: CALL DRAW(126,83,"F01R01F01",S):: CALL DRAW(139,75,"F01D03R01D01U02",S)
    180 CALL DRAW(141,92,"D03G01D07",S):: CALL DRAW(137,98,"G01D04G01D01G01D01G01D01G01D02G01",S)
    190 CALL DRAW(118,111,"D02",S):: CALL DRAW(120,111,"F01E01",S):: CALL DRAW(107,113,"D03F01D10F01D08F03H03U04L01H01U02H01U02G01D01G02D01G01",S)
    200 CALL DRAW(102,131,"D04R01F01H02L01H01U03E02U03H02U09H01U01L01U02H01F01E01G01D05G01D01G01",S)
    210 CALL DRAW(92,129,"F01U01E03R01E02",S):: CALL DRAW(117,122,"F01D03F01D01",S):: CALL DRAW(132,118,"D05G01",S)
    220 CALL DRAW(105,101,"D03F01D01F01D02F01D01F02",S):: CALL DRAW(122,56,"F01R01F01",S)
    230 CALL DRAW(141,109,"D01F01D03F01D07F01D03",S):: CALL DRAW(128,56,"F01D03F01D02F01D01R01D01R01D02F02",S)
    240 CALL DRAW(117,88,"D02G02D02R01E01R01F01H01L01G01F03G02L01G01L02G04D01U01L01U01R01U01E02U01R02E02R02",S)
    250 CALL DRAW(123,88,"F02D01U01R01F01D01G02L01H01G01",S):: CALL DRAW(134,66,"F06",S)
    260 CALL DRAW(123.96,"R04F01R01D01R02F01R01D03G02E01U02H01L01H01L01L02H01L01",S)
    270 CALL DRAW(119,100,"R07F-1R02F01G01L03G01L11H01L01E01R01E01R03D01R04",S)
    280 CALL DRAW(118,106,"R05E01R01E01R01",S)
    290 CALL DRAW(149,77,"D05F01D04F01D01F03D01F01D07G01D06F01D01F01D01F04R02F01R02F01R01F01R02F01R04",S)
    300 CALL DRAW(165,127,"H01U01H01U01H01U01H01U02H01G01H03L01H01L01U01L01U07H01U07H01U01",S)
    310 CALL DRAW(152,114,"D04G01D01G01D02G01D01G01D01G01D04G01D04F01D01F01H01U01H01U02H01U07E01U09H01U01H02",S)
    320 CALL DRAW(110,134,"R02F01R01F01D04R01D01F01D01F01D02F01D04F01D04F02D04",S)
    330 CALL DRAW(144,131,"G04D01F03D08G01D02G01D02G01D03F01D02G01D02",S)
    340 CALL DRAW(150,157,"E07D14U09L04R09L02U05D12U03R02L02U02R01",S)
    350 CALL DRAW(164,155,"D04",S):: CALL DRAW(166,159,"U04F03D01U04",S):: CALL DRAW(172,155,"R01F01D02G01L01H01U02",S)
    510 !CALL DUMP(8,24,7,21,6,1)
    9999 GOTO 9999

     

    Regards Arto.

    • Like 1
  10. Here are the main Subroutines, I will spend time with the demo and the dump, which are not as important to the program.

    10000 SUB LINE(X1,Y1.X2.Y2,S):: IF X1<X2 THEN X3=1 :: X4=X2-X1 ELSE IF X2<X1  THEN X3=-1 :: X4=X1-X2
    10010 IF Y1>Y2 THEN Y3=-1 :: Y4=Y1-Y2 ELSE IF Y2>Y1 THEN Y3=1 :: Y4=Y2-Y1
    10020 IF Y4>X4 THEN X5=X4/Y4 :: Y5=1 :: Z1=Y4 ELSE IF X4>Y4 THEN Y5=Y4/X4 :: X5=1 :: Z1=X4 ELSE Z1=Y4 :: X5,X3,Y5,Y3=1
    10030 FOR Z=1 TO Z1 :: CALL LINK("PLOT",Y1,X1,S,C):: X1=X1+X5*X3 :: Y1=Y1+Y5*Y3 :: NEXT Z :: SUBEND
    
    11000 SUB DRAW(X,Y,A$,S):: FOR M=1 TO LEN(A$)STEP 3 :: DR$=SEG$(A$,M,1):: PX=VAL(SEG$(A$,M+1,2)
    11010 V=0 :: ON POS("RLDUEFGH",DR$,1)GOSUB 12000,12100,12200,12300,12400,12500,12600,12700
    11020 NEXT M :: GOTO 13000
    12000 X1=X+PX :: FOR Z=X TO X1 :: CALL LINK("PLOT",Y,Z,S,C):: NEXT Z :: X=X1 :: RETURN
    12100 X1=X-PX :: FOR Z=X TO X1 STEP -1 :: CALL LINK("PLOT",Y,Z,S,C):: NEXT Z :: X=X1 :: RETURN
    12200 Y1=Y+PX :: FOR Z=Y TO Y1 :: CALL LINK("PLOT",Y,Z,S,C):: NEXT Z :: Y=Y1 :: RETURN
    12300 Y1=Y-PX :: FOR Z=Y TO Y1 STEP -1 :: CALL LINK("PLOT",Z,X,S,C):: NEXT Z :: Y=Y1 :: RETURN
    12400 X1=X+PX :: Y1=Y-PX :: FOR Z=X TO X1 :: CALL LINK("PLOT",Y+V,Z,S,C):: V=V-1 :: NEXT Z :: Y=Y1 :: X=X1 :: RETURN
    12500 X1=X+PX :: Y1=Y+PX :: FOR Z=X TO X1 :: CALL LINK("PLOT",Y+V,Z,S,C):: V=V+1 :: NEXT Z :: Y=Y1 :: X=X1 :: RETURN
    12600 X1=X-PX :: Y1=Y+PX :: FOR Z=Y TO Y1 :: CALL LINK("PLOT",Y+V,Z,S,C):: V=V-1 :: NEXT Z :: Y=Y1 :: X=X1 :: RETURN
    12700 X1=X-PX :: Y1=Y-PX :: FOR Z=Y TO Y1 STEP -1 :: CALL LINK("PLOT",Y+V,Z,S,C):: V=V-1 :: NEXT Z :: Y=Y1 :: X=X1 :: RETURN
    13000 SUBEND
    
    20000 SUB CIRCLE(X1,Y1,R,Q,S):: L=INT(Q):: G=(Q-L)*10 :: IF L>G THEN L1-1 :: G1=1/L ELSE IF G>L THEN G1=1 :: L1=1/G ELSE G1,L1=1
    20010 FOR N=1 TO 4*R :: Y=Y1+(R*SIN(N/(R*2)*PI))*L1 :: X=X1+(R*COS(N/(R*2)*PI))*G1 :: CALL LINK("PLOT",Y,X,S,C):: NEXT N :: SUBEND
    
    25000 SUB THREEDIM(@,S):: N.M=8 :: X0,Y0=-40 :: X1,Y1=40 :: N0=(X1-X0)/N :: M0=(Y1-Y0)/M
    25010 A-112 :: B=112 :: A1=0.52359878 :: S12=SIN(A1) :: C1=COS(A1)
    25020 FOR Y2=Y0 TO Y1 STEP M0 :: FOR X2=X0 TO X1 :: ON @ GOSUB 26010,26020,26030,26040,26050,26060,26070
    25025 GOSUB 27000 :: CALL LINK("PLOT",B-V/2,A+U,S,C):: NEXT X2 :: NEXT Y2
    25030 FOR X2=X0 TO X1 STEP N0 :: FOR Y2-Y0 TO Y1 :: ON @ GOSUB 26010,26020,26030,26040,26050,26060,26070
    25035 GOSUB 27000 :: CALL LINK("PLOT",B-V/2,A+U,S,C):: NEXT Y2 :: NEXT X2 
    25040 GOTO 28000
    26010 Z2=150/((X2*X2/1000_+(Y2*Y2/500)+1):: RETURN
    26020 Z2=SIN(X2/30)*COS(Y2/18)*Y2*X2/30 :: RETURN
    26030 Z2=SQR(X2*X2+Y2*Y2)/4:: RETURN
    26040 Z2=SQR(-X2*X2-Y2*Y2+3200):: RETURN
    26050 Z2=(SIN(X2/25)*COS(Y2/9)*COS(X2/15)*SIN(Y2/17))*40 :: RETURN
    26060 Z2=SIN(X2/4)*X2*Y2/30 :: RETURN
    26070 Z2=SIN(X2/20)*X2*Y2/30 :: RETURN
    27000 U1=X2-Y2*C1 :: V1=Z2+Y2*S1 :: U=INT(U1):: V=INT(V1):: RETURN
    28000 SUBEND
      
    30000 SUB HIRES :: CALL INIT :: CALL LOAD(-31878,0,"",8196,63,248,"",16376,80,76,79,84,32,32,39,20):: MEM=9992
    30010 FOR I=1 TO 412 :: READ X :: CALL LOAD(MEM,X):: MEM=MEM+1 :: NEXT I 
    30020 DATA 0,1,64,65,96,100,128,192,255,191,191,0,194,139,2,0,8,29,4,32,32,40,2,0,8,30
    30030 DATA 4,32,32,32,2,0,8,31,4,32,32,32,4,192,2,1,0,3,6,160,40,42,176,160,39
    30040 DATA 12,152,2,39,14,26,9,152,2,39,18,19,6,112,160,39,9,216,2,39,18,216,2,38,17
    30050 DATA 4,192,2,1,0,1,6,160,40,42,152,2,39,15,26,2,112,160,39,15,208,194,9,51,4
    30060 DATA 192,2,1,0,2,6,160,40,42,9,50,4,196,209,3,6,196,10,84,4,192,208,2,6,192
    30070 DATA 161,0,4,197,6,195,9,83,209,67,6,197,4,199,6,194,9,82,209,194,6,199,5,135,2
    30080 DATA 6,128,0,6,7,19,2,9,22,16,252,192,4,4,32,32,40,4,192,208,1,209,193,6,192
    30090 DATA 10,48,2,1,39,0,2,2,0,8,4,32,32,44,249,70,39,0,152,7,39,17,27,16,184
    30100 DATA 32,39,9,39,18,152,32,39,8,39,18,19,34,209,224,39,18,4,192,208,160,39,18,2,1
    30110 DATA 0,3,6,160,40,100,4,192,208,7,6,192,10,48,2,1,39,0,2,2,0,8,4,32,32
    30120 DATA 36,4,192,2,1,0,4,208,135,6,160,40,100,192,4,208,71,4,32,32,32,194,202,4,192
    30130 DATA 216,0,131,124,4,91,2,0,30,0,4,32,32,52,4,194,4,32,32,12,152,32,131,74,39
    30140 DATA 8,19,6,152,32,131,74,39,10,22,3,208,160,131,75,4,91,152,32,131,74,39,11,22,234
    30150 DATA 4,192,208,32,131,75,6,192,176,160,39,13,6,0,22,252,176,160,131,76,4,91,2,3,0
    30160 DATA 7,216,192,131,74,6,3,22,252,2,3,0,1,112,160,39,12,216,32,39,10,131,74,152,2
    30170 DATA 39,13,26,11,216,32,39,11,131,74,184,32,39,9,131,75,112,160,39,13,2,3,0,2,16
    30180 DATA 242,216,194,131,74,4,32,32,8,4,91
    30185 SUBEND
     
    31000 SUB JOYDRAW(XX,YY,L,XY(,),P$(),A,S):: P2$="R" :: T1=1 :: CALL CHAR(33,"40A040):: CALL SPRITE(#1,33,L,YY,XX)
    31010 CALL KEY(1,K,T):: CALL JOYST(1,X,Y):: Y=-Y :: IF X OR Y OR T THEN 31015 ELSE 31010
    31015 IF K=19 THEN 31200
    31020 XX=XX+X/4 :: YY=YY+Y/4 :: CALL LOCATE(#1,YY,XX)
    31021 IF K=18 AND T=1 THEN A=A+1 :: XY(1,A)=XX :: XY(2,A)=YY :: T1=0 ELSE IF K<>18 THEN T1=1 :: GOTO 31010
    31090 AM=-(X=4)-(X=-4)*2-(Y=4)*4-(Y=-4)*8 :: IF AM=0 THEN 31160 ELSE H=D :: D=D-(M=AM)+(M<>AM)*(D-1)
    31100 M=AM :: P1$=SEG$("RL DUE FGH",AM,1):: IF P2$<>P1$ THEN Z$-STR$(H):: P$(A)=P$(A)&P2$&RPT$("0",2-LEN(Z$))&Z$
    31150 P2$=P1$
    31160 CALL LINK("PLOT",YY,XX,S,C):: GOTO 31010
    31200 CALL DELSPRITE(#1):: SUBEND
    
    31500 SUB JOYDRW(XX,YY,L,S):: CALL CHAR(33,"40A040):: CALL SPRITE(#1,33,L,YY,XX)
    31510 CALL KEY(1,K,T):: CALL JOYST(1,X,Y):: Y=-Y :: IF X OR Y OR T THEN 31515 ELSE 31510
    31515 IF K=19 THEN 31700
    31520 XX=XX+X/4 :: YY=YY+Y/4 :: CALL LOCATE(#1,YY,XX):: IF K<>18 THEN 31510
    31660 CALL LINK("PLOT",YY,XX,S,C):: GOTO 31510
    31700 SUBEND 

     

    The CALL JOYDRAW was made to record the CALL DRAW string parameters, so it can be turned into data code for use in a program. This is how I traced my features (DEMO) into the strings. Regards Arto.

    • Like 2
  11. Hi All,

    Here is the CALL LINK("PLOT",Y,X,S,C) routine.

     

    30000 SUB HIRES :: CALL INIT :: CALL LOAD(-31878,0,"",8196,63,248,"",16376,80,76,79,84,32,32,39,20):: MEM=9992
    30010 FOR I=1 TO 412 :: READ X :: CALL LOAD(MEM,X):: MEM=MEM+1 :: NEXT I 
    30020 DATA 0,1,64,65,96,100,128,192,255,191,191,0,194,139,2,0,8,29,4,32,32,40,2,0,8,30
    30030 DATA 4,32,32,32,2,0,8,31,4,32,32,32,4,192,2,1,0,3,6,160,40,42,176,160,39
    30040 DATA 12,152,2,39,14,26,9,152,2,39,18,19,6,112,160,39,9,216,2,39,18,216,2,38,17
    30050 DATA 4,192,2,1,0,1,6,160,40,42,152,2,39,15,26,2,112,160,39,15,208,194,9,51,4
    30060 DATA 192,2,1,0,2,6,160,40,42,9,50,4,196,209,3,6,196,10,84,4,192,208,2,6,192
    30070 DATA 161,0,4,197,6,195,9,83,209,67,6,197,4,199,6,194,9,82,209,194,6,199,5,135,2
    30080 DATA 6,128,0,6,7,19,2,9,22,16,252,192,4,4,32,32,40,4,192,208,1,209,193,6,192
    30090 DATA 10,48,2,1,39,0,2,2,0,8,4,32,32,44,249,70,39,0,152,7,39,17,27,16,184
    30100 DATA 32,39,9,39,18,152,32,39,8,39,18,19,34,209,224,39,18,4,192,208,160,39,18,2,1
    30110 DATA 0,3,6,160,40,100,4,192,208,7,6,192,10,48,2,1,39,0,2,2,0,8,4,32,32
    30120 DATA 36,4,192,2,1,0,4,208,135,6,160,40,100,192,4,208,71,4,32,32,32,194,202,4,192
    30130 DATA 216,0,131,124,4,91,2,0,30,0,4,32,32,52,4,194,4,32,32,12,152,32,131,74,39
    30140 DATA 8,19,6,152,32,131,74,39,10,22,3,208,160,131,75,4,91,152,32,131,74,39,11,22,234
    30150 DATA 4,192,208,32,131,75,6,192,176,160,39,13,6,0,22,252,176,160,131,76,4,91,2,3,0
    30160 DATA 7,216,192,131,74,6,3,22,252,2,3,0,1,112,160,39,12,216,32,39,10,131,74,152,2
    30170 DATA 39,13,26,11,216,32,39,11,131,74,184,32,39,9,131,75,112,160,39,13,2,3,0,2,16
    30180 DATA 242,216,194,131,74,4,32,32,8,4,91
    30185 SUBEND

     

    • Like 2
  12. Hi All,

    I was looking through my myriad of water damaged XB dot matrix listings and found this gem I wrote back in 1986. I am still deciphering a lot of the printout and it looks like I have the whole lot. It is a XB program that needs 32k to add a CALL LINK("PLOT",Y,X,S,C). This as I remember it was created before I made the assembly versions of all the XB CALLs much later. The most important note here that it is in the standard graphics mode and is uses the characters above 33 to create the drawing, you can check when it runs out of characters, the C option tells you the current CHAR in use. I am still reading and typing the XB code, this might take a while (Large Program Whew!), so I will post it here. I am showing you this in case anyone is interested, I will try and hasten my attempt, otherwise be patient. I will post more on the XB Machine code part first, as I do not have the original Assembly listing here anymore, someone might want to disassemble my code. Regards Arto.   

     

     

    1 !*****PLOT ROUTINES*****
    2 !****FOR EX/BAS+32K*****
    3 !****BY ARTO HEINO******
    4 !*******1986************
    5 !    CALL HIRES
    6 !  LOADS MACHINE CODE
    7 !  SUB ROUTINE INTO MEMORY
    8 !  CALL LINK("PLOT",Y,X,S,C)
    9 !  ALL OTHER XB CALLS
    10 ! REQUIRES THIS 
    11 ! ROUTINE
    12 !************************
    13 !CALL LINK(PLOT",Y,X,S,C)
    14 !	 Y=1 TO 192       *
    15 !     X=1 TO 255       * 
    16 !     S=START CHAR     *
    17 !     C=CURRENT CHAR   *
    18 !***********************
    19 !CALL LINE(X1,Y1,X2,Y2,S)
    20 !	X1=START X CP/ORD *
    21 !    Y1=START Y CO/ORD *
    22 !    X2=FINAL X CO/ORD *
    23 !    Y2=FINAL Y CO/ORD *
    24 !     S=START CGAR     *
    25 !***********************
    26 !CALL CIRCLE(X,Y.R.RA.S)
    27 !   X,Y=CENTER CO/ORD  *
    28 !     R=RADIUS         *
    29 !    RA=RATIO 1.2=OVAL *
    30 !     S=START CHAR     *
    31 !***********************
    32 !CALL THREEDIM(CHC,S)  *
    33 !   CHC=FUNCTION CHOICE*
    34 !     S=START CHAR     *
    35 !***********************
    36 !  CALL DRAW(X,Y.A$,S)  *
    37 !     X=START X CO/ORD *
    38 !     Y=START Y CO/ORD *
    39 !    A$=DIRECTION FOR  *
    40 !       PIXEL MOVEMENT *
    41 !       L=LEFT         *
    42 !       R=RIGHT        *
    43 !       U=UP           *
    44 !       D=DOWN         *
    45 ! E,F,G,H=ANGULAR      *
    46 !     S=START CHAR     *
    47 !***********************
    48 !CALL JOYDRAW(X,Y,L,XY(),P$(),A,S)
    49 !    P$()=RETURN STR$  *
    50 !         ARRAY FOR    *
    51 !         DRAW         *
    52 !       A=ARRAY NUMBER *
    53 !         RETURN       *
    54 !       S=START CGAR   *
    55 !    XY()=RETURN X & Y *
    56 !         LOCATIONS    *
    57 !       L=COLOR OF CURS*
    58 !     X,Y=START L/CTION*
    59 !***********************
    60 !CALL JOYDRW(X,Y,L,S) *
    61 !       S=START CHAR   *
    62 !     X,Y=START CO/ORD *
    63 !       L=COLOR OF CURS*
    64 !***********************
    65 !CALL DUMP)X1,Y2,Y1,Y2,P,C)
    66 !      X1=COLUMN START *
    67 !      X2=COLUMN FINISH*
    68 !      Y1=ROW START    *
    69 !      Y2=ROW FINISH   *
    70 !       P=PRINT MODE   *
    71 !         1=NORMAL     *
    72 !         2=HALF WIDTH *
    73 !         3=QUART WIDTH*
    74 !         4=EIGHT WIDTH*
    75 !         5=DOUBL WIDTH*
    76 !         6=DOUBL SIZE *
    77 !       C=NUM OF COPIES*
    78 !***********************
    89 DIM P$(100),XY(2,100)
    90 S=34 :: CALL CLEAR
    95 FOR X=1 TO 14 :: CALL COLOR(X,5,16):: NEXT X
    99 ! CALL DRAW DEMO - SELF PORTAIT
    100 CALL DRAW(75,141,"E01R02E02R01E01R01E04U01E01R01E02R01U06E01U01E01U01E01U01E
    01U21H01U10E01U09E01U02E01U02E01U01E01U01E06",S)
    110 CALL DRAW
    120 CALL DRAW
    130 CALL DRAW
    140 CALL DRAW
    150 CALL DRAW
    160 CALL DRAW
    170 CALL DRAW
    180 CALL DRAW
    .
    .
    350 CALL DRAW
    
    10000 SUB LINE(X1,Y1.X2.Y2,S):: IF X1<X2 THEN X3=1 :: X4=X2-X1 ELSE IF X2<X1  THEN X3=-1 :: X4=X1-X2
    10010 IF Y1>Y2 THEN Y3=-1 :: Y4=Y1-Y2 ELSE IF Y2>Y1 THEN Y3=1 :: Y4=Y2-Y1
    10020 IF Y4>X4 THEN X5=X4/Y4 :: Y5=1 :: Z1=Y4 ELSE IF X4>Y4 THEN Y5=Y4/X4 :: X5=1 :: Z1=X4 ELSE Z1=Y4 :: X5,X3,Y5,Y3=1
    10030 FOR Z=1 TO Z1 :: CALL LINK("PLOT",Y1,X1,S,C):: X1=X1+X5*X3 :: Y1=Y1+Y5*Y3 :: NEXT Z :: SUBEND
    
    11000 SUB DRAW(X,Y,A$,S)
    
    20000 SUB CIRCLE(X1,Y1,R,Q,S)
    
    25000 SUB THREEDIM(@,S)
    26010 Z2=150/((X2*X2/1000_+(Y2*Y2/500)+1):: RETURN
    26020 Z2=SIN(X2/30)*COS(Y2/18)*Y2*X2/30 :: RETURN
    26030 Z2=SQR(X2*X2+Y2*Y2)/4:: RETURN
    26040 Z2=SQR(-X2*X2-Y2*Y2+3200):: RETURN
    26050 Z2=(SIN(X2/25)*COS(Y2/9)*COS(X2/15)*SIN(Y2/17))*40 :: RETURN
    26060 Z2=SIN(X2/4)*X2*Y2/30 :: RETURN
    26070 Z2=SIN(X2/20)*X2*Y2/30 :: RETURN
      
    30000 SUB HIRES :: CALL INIT :: CALL LOAD(-31878,0,"",8196,63,248,"",16376,80,76,79,84,32,32,39,20):: MEM=9992
    30010 FOR I=1 TO 412 :: READ X :: CALL LOAD(MEM,X):: MEM=MEM+1 :: NEXT I 
    30020 DATA 0,1,64,65,96,100,128,192,255,191,191,0,194,139,2,0,8,29,4,32,32,40,2,0,8,30
    30030 DATA 
    30040 DATA
    30050 DATA
    30060 DATA
    30070 DATA
    30080 DATA
    30090 DATA
    30100 DATA
    30110 DATA
    30120 DATA
    30130 DATA
    30140 DATA
    30150 DATA
    30160 DATA
    30170 DATA
    30180 DATA
    30185 SUBEND
     
    31000 SUB JOYDRAW(XX,YY,L,XY(,),P$(),A,S)
    
    31500 SUB JOYDRW(XX,YY,L,S)
    
    31800 SUB DUMP(X1,X2,Y1,Y2,SZ,CP)

     

    • Like 3
    • Thanks 1
  13. Amazing Speccery, I am using a 3D printer at this moment, tuning it for use in printing TI cartridges and my TI MPEB boxes. In the past I would have made it out of wood or carved it from plastic, I hope to finalise multiple projects using the 3D printer. FREECAD is an excellent program, so much can be designed with great accuracy and easily turned into STL files. At the moment I am using Tinkercad, it has a simple interface but not easy to define edge radii and has limited flexibility. Looking forward to more on Strange cart and your many other designs. Regards Arto.  

    • Like 1
  14. 7 hours ago, Tursi said:

    And any human to create code in a language as old as TI BASIC as quickly as they do -- even someone from here -- feels unlikely. ;)

    Yes I agree, it seems that when pressed to give results it falls back to a pathetic attempt at code. Maybe the AI can only code in a primitive level, while the real coders of maybe 30 to 50 years experience can spot a novice easily and the AI cannot fool those who have real experience. The crux is that AI cannot really create anything and can only dig up relevant code that has been parsed by a forum of solutions to problems that has been described in detail and solved. The idea that AI can leap our tech into new paradigm ground is an illusion, it can only help in the grunge work that takes many iterations, man power and recursions to arrive at some semblance of a solution to a specific problem, a human is always at the helm, we must rely on our creative spirit to find fertile ground.  

    • Like 1
  15. 2 hours ago, Gary from OPA said:

    90% of it's programming knowledge comes scrapped from sites like "stackoverflow" where answers to problems have been upvoted as correct.

       Thanks Gary, it seems that the "Language Model" being used is not based on logic as a real programmer understands that word but the logic of language context and syntax, this being more able to be biased by some algorithm or heuristic plan, ergo "Woke" by design. In computer games this would be a NPC, in the real world we have NPC's that get instructions from Soros, who pays them and all the Cultural Marxist Professors in the Universities. These buffoons are guided by the many "Fake" pseudo facts and have no self awareness, a sad way to apply AI but all too real.

     

    If the current AI is what they claim, it would have been able to program itself, thus have no need of programmers. Again the problem arises, AI cannot create anything, it can only streamline what has been created by man, be it good or evil. Great subject, thanks for posting, regards Arto.                

    • Like 1
    • Thanks 2
  16. I am hearing that some of the AI systems are just a bunch of paid TECHO's getting prompted by a Pseudo-AI Terminal system to get answers and try to reply, this could explain the lack of memorised sessions and the difficulty in interpreting the users input. I have yet to have much confidence in the current Big Techs exaggeration of AI, they boast too much and do not deliver. Where the TMS9900 has been around for 50 years and the AI can barely make a sample better than a beginners code, it should know and understand every Texas Microprocessor and Data book and it's contents, instantly, it seems we are being led by the hype.    

    • Like 1
  17. Hi All,

    I am now pacing myself to get as many MPEB cards ready for PCB prototype production. I have mashed the FORTI Music Clone with the Digitiser and Clock card. I have the card about 80% wired at present and running into issues, I need to take a breather for a couple days so the conglomeration gels in my head space, LOL, here is the card at the moment. Regards Arto.    

    MPEB-TI99-MusicCard-V4pic1a.png

    • Like 10
    • Thanks 1
  18. Hi All,

    While mulling around an open TI motherboard I realised a simple circuit to test for Keyboard problems. I am getting ready to get a few boards made so I need to have as many as possible for my order. Here is the circuit, regards Arto.

     

    15 x 3mm leds

    1 x 9v battery and holder

    1 x 25 ohm resistor

    1 x 15 pin male header with 7mm (9/32") long pins like the mother board.

    1 x pcb board size 3.2" x 2.2" (81.28mm x 56.007mm)

    UTI99-KybdTestv1pic1a.png

    UTI99-KybdTestv1pic2a.png

    UTI99-KybdTestv1pic3a.png

    P1000812.JPG

    • Like 4
  19. 30 minutes ago, HOME AUTOMATION said:

    As for toggling switches w/o a mistake ...Far too easy ...I'll have to replace them with SHIFT REGISTERS, that I can operate with three switches ...then I'll be ready-to-go!

    Great idea!!! It looks like adding a small daughter board might be a good option, I'll look into that at some point, but if you want to modify the circuit to add this option, you are very welcome, keep me posted, regards Arto.

    • Like 1
×
×
  • Create New...