-
Posts
163 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Everything posted by Artoj
-
- 165 replies
-
- 7
-
-
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.
-
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 *
- 165 replies
-
- 3
-
-
-
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
-
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
- 165 replies
-
- 6
-
-
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
-
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
-
Hi All, Here is the complete program as a TEXT file, I will start on the MiniMem version shortly. Regards Arto. TIDraw1a
-
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.
-
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.
-
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.
-
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.
-
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
-
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)
-
Pi Pico[W] Peripheral Expansion Box Side Port Device
Artoj replied to JasonACT's topic in TI-99/4A Development
Great work Jason, fast to act when you got the knack. your card will plug into my MPEB extension board. A definite must have card, regards Arto. -
- 165 replies
-
- 7
-
-
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.
-
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.
-
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.
-
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.
-
Hi All, I have completed the MPEB TI99 /4A Music Card V4.0, while I am waiting for another 3D printer to arrive, I will optimise and tidy this board and all the other boards that will be made. Regards Arto.
- 165 replies
-
- 11
-
-
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.
- 165 replies
-
- 11
-
-
-
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)
- 165 replies
-
- 4
-
-
Hi Speccery, any news on your StrangeCart?
-
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.
- 165 replies
-
- 1
-
