+mizapf Posted June 2, 2020 Author Share Posted June 2, 2020 That's cool, thanks. When I said "not useful", I actually meant "nothing". ? So I guess this will be really helpful. However, first on the list is to finish the IDE card; I found some flaws in my BQ4847 implementation. I'm also in contact with Fred who was able to fix some parts in his IDEDSR; I guess there will be a new release soon. 3 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 5, 2020 Share Posted June 5, 2020 Discovered a little factoid using the MAME 99/8 with hexbus & DSSD disk. the 99/8 won't load an old XB TI-99/4a program saved in INT/VAR format. PROGRAM format is just fine though. if the file is too big I guess you'll have to split it up and re-merge (which I haven't tried) on the 99/8. Quote Link to comment Share on other sites More sharing options...
globeron Posted June 6, 2020 Share Posted June 6, 2020 On 6/5/2020 at 7:52 AM, hloberg said: Discovered a little factoid using the MAME 99/8 with hexbus & DSSD disk. the 99/8 won't load an old XB TI-99/4a program saved in INT/VAR format. PROGRAM format is just fine though. if the file is too big I guess you'll have to split it up and re-merge (which I haven't tried) on the 99/8. Not sure, but on the normal TI's you could do CALL FILES(1) (and CALL FILES(2), something like that), before loading larger programs and I remember with Personal Record Keeping (PRK) and Personal Record Generator (PRG) you could load bigger programs as well and some could only be loaded in TI-BASIC (and not in Extended Basic). Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 6, 2020 Author Share Posted June 6, 2020 (edited) Seems as if the HX5102 does not support the long format (I/V254) at all, regardless of the file size. Note that the TI-99/8 has a lot of CPU RAM and, as fas as I could see, does not need to use VDP RAM for disk operations, so it can create longer PRG files. This certainly breaks compatibility with the TI-99/4A. Anyway, things are broken long before; for example, Extended Basic II puts the PAB into CPU RAM, which crashes standard TI disk controllers. Edited June 6, 2020 by mizapf Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 6, 2020 Share Posted June 6, 2020 3 hours ago, mizapf said: Seems as if the HX5102 does not support the long format (I/V254) at all, regardless of the file size. Note that the TI-99/8 has a lot of CPU RAM and, as fas as I could see, does not need to use VDP RAM for disk operations, so it can create longer PRG files. This certainly breaks compatibility with the TI-99/4A. Anyway, things are broken long before; for example, Extended Basic II puts the PAB into CPU RAM, which crashes standard TI disk controllers. so the work around is to split the ti99/4 files then MERGE them back. a pain, if works, should, but doable. Quote Link to comment Share on other sites More sharing options...
RXB Posted June 6, 2020 Share Posted June 6, 2020 5 hours ago, mizapf said: Seems as if the HX5102 does not support the long format (I/V254) at all, regardless of the file size. Note that the TI-99/8 has a lot of CPU RAM and, as fas as I could see, does not need to use VDP RAM for disk operations, so it can create longer PRG files. This certainly breaks compatibility with the TI-99/4A. Anyway, things are broken long before; for example, Extended Basic II puts the PAB into CPU RAM, which crashes standard TI disk controllers. Hmm this sounds like a Broken Flag problem in XB? [2105] 8D24 00,1C,00 PAB3 BYTE >00,>1C,>00,>00,>FE,>00,>00,>00,OFFSET * IV254 8D27 00,FE,00 8D2A 00,00,60 [2168] *********************************************************** [2169] * SAVE STATEMENT [2170] * SAVE "NAME", MERGE : Save in crunched form in program [2171] * into a file one line at at time with the line number. [2172] * File opened with sequential accessed, variable-length [2173] * records (161 max), display type & output mode, move one [2174] * line number and one in text to the crunch buffer then [2175] * write to the file one line at a time. [2176] * A normal SAVE : When ERAM not exist or the size of the [2177] * program and line number table in ERAM can fit in VDP [2178] * (can be moved into VDP from ERAM once), then the save [2179] * statement saves a program image to an external device, [2180] * including all the information the system needs for [2181] * rebuilding the program image on a machine with a [2182] * different memory size, also included is a checksum for [2183] * rudimentary error checking and for PROTECTION VIOLATION [2184] * A sequential SAVE : Maximum-length records are performed [2185] * to write the file and each record is copied into the VDP [2186] * from ERAM before it is written. [2187] *********************************************************** [2188] 8DB8 DA,45,80 SAVE CLOG >80,@FLAG * PROTECTION VIOLATION [2189] 8DBB 57,DB BR ERRPV [2190] 8DBD 06,92,35 CALL GPNAME This will also close all file [2191] * Check SAVE "NAME", MERGE or SAVE "NAME", PROTECTED first [2192] 8DC0 86,A3,B9 CLR V@SAPROT Clear "PROTECTED" flag [2193] 8DC3 0F,79 XML PGMCHR [2194] 8DC5 8E,42 CZ @CHAT EOL? [2195] 8DC7 6E,2B BS SAZ1 Yes, no need to check any opt [2196] 8DC9 D6,42,B3 CEQ COMMAZ,@CHAT Has to be a comma here [2197] 8DCC 41,09 BR ERRSYN [2198] 8DCE D7,B0,2C DCEQ >C805,V*PGMPTR Unquoted string with length 5 8DD1 C8,05 [2199] * has to be MERGE at this time [2200] 8DD3 4D,F4 BR G8DF4 [2201] 8DD5 D7,E0,02 DCEQ >4D45,V@2(@PGMPTR) "ME" of MErge 8DD8 2C,4D,45 [2202] * RXB PATCH CODE OPTION ADDED IV254 FOR SAVE 2015 ********* [2203] * SAVE "DSK#.FILENAME",MERGE ! SAVE MERGE FORMAT [2204] * SAVE "DSK#.FILENAME",IV254 ! SAVE IV254 PROGRAM FORMAT [2205] * SAVE "DSK#.FILENAME" ! NORMAL PROGRAM FORMAT OR IV254 [2206] * BR ERRSYN If not : SYNTAX ERROR [2207] 8DDB 5F,7C BR CIV254 CHECK FOR IV254 OPTION [2208] 8DDD D7,E0,04 DCEQ >5247,V@4(@PGMPTR) "RG" of meRGe 8DE0 2C,52,47 [2209] 8DE3 41,09 BR ERRSYN If not : SYNTAX ERROR [2210] 8DE5 D6,E0,06 CEQ >45,V@6(@PGMPTR) "E" of mergE 8DE8 2C,45 [2211] 8DEA 41,09 BR ERRSYN If not : SYNTAX ERROR [2212] 8DEC 8E,E0,07 CZ V@7(@PGMPTR) Check for EOL 8DEF 2C [2213] 8DF0 41,09 BR ERRSYN Not EOL : SYNTAX ERROR [2214] 8DF2 4F,76 BR SAVMG Go to handle this option 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0039 FLMGR-359 [2215] * Has to be PROTECTED option here, crunched as unquoted str [2216] 8DF4 D7,B0,2C G8DF4 DCEQ >C809,V*PGMPTR Unquoted string with length 9 8DF7 C8,09 [2217] * has to be PROTECTED [2218] 8DF9 41,09 BR ERRSYN [2219] 8DFB D7,E0,02 DCEQ >5052,V@2(@PGMPTR) "PR" of PRotected 8DFE 2C,50,52 [2220] 8E01 41,09 BR ERRSYN If not : SYNTAX ERROR [2221] 8E03 D7,E0,04 DCEQ >4F54,V@4(@PGMPTR) "OT" of prOTected 8E06 2C,4F,54 [2222] 8E09 41,09 BR ERRSYN If not : SYNTAX ERROR [2223] 8E0B D7,E0,06 DCEQ >4543,V@6(@PGMPTR) "EC" of protECted 8E0E 2C,45,43 [2224] 8E11 41,09 BR ERRSYN If not : SYNTAX ERROR [2225] 8E13 D7,E0,08 DCEQ >5445,V@8(@PGMPTR) "TE",of protecTEd 8E16 2C,54,45 [2226] 8E19 41,09 BR ERRSYN If not : SYNTAX ERROR [2227] 8E1B D6,E0,0A CEQ >44,V@10(@PGMPTR) "D" of protecteD 8E1E 2C,44 [2228] 8E20 41,09 BR ERRSYN If not : SYNTAX ERROR [2229] 8E22 8E,E0,0B CZ V@11(@PGMPTR) Check EOL 8E25 2C [2230] 8E26 41,09 BR ERRSYN [2231] 8E28 90,A3,B9 INC V@SAPROT [2232] *********************************************************** [2233] 8E2B 8E,80,84 SAZ1 CZ @RAMTOP If ERAM NOT present then [2234] 8E2E 4E,42 BR G8E42 [2235] ***** CLEAR THE BREAKPOINT IN VDP ALONE TO SPEED UP ******* [2236] 8E30 BD,52,30 DST @STLN,@FAC8 End of line # buffer [2237] 8E33 B2,B0,52 G8E33 AND >7F,V*FAC8 Clear the breakpoint 8E36 7F [2238] 8E37 A3,52,00 DADD 4,@FAC8 Move to the next one 8E3A 04 [2239] 8E3B C5,52,32 DCH @ENLN,@FAC8 Until done [2240] 8E3E 4E,33 BR G8E33 [2241] 8E40 4E,69 BR VSAVZ [2242] 8E42 06,A0,20 G8E42 CALL UBSUB Clear the breakpoint in ERAM [2243] 8E45 BD,02,80 DST @RAMTOP,@MNUM Top of memory in ERAM 8E48 84 [2244] 8E49 A5,02,30 DSUB @STLN,@MNUM [2245] 8E4C 91,02 DINC @MNUM # of bytes total in ERAM [2246] 8E4E BD,00,70 DST @HIVDP,@VAR0 Top of memory in VDP [2247] 8E51 A5,00,02 DSUB @MNUM,@VAR0 [2248] 8E54 91,00 DINC @VAR0 [2249] * Check is there enough memory in VDP to move the program [2250] * text and line number table from ERAM to VDP [2251] 8E56 0A GT Not enough memory in VDP for sur [2252] 8E57 4E,B7 BR GSAVE [2253] 8E59 BF,10,0A DST VRAMVS+64+256,@VAR5 * 64 bytes are for safety b 8E5C 98 [2254] [2255] * DSR routine give file error when loading a program which [2256] * VDP maximum size and was saved from VDP to be a program [2257] * on disk when ERAM not exist. In order to fix this proble [2258] * restrict the program memory to be 256 bytes less then th [2259] * real space in VDP when ERAM not exist. [2260] 8E5D C9,00,10 DCHE @VAR5,@VAR0 Not enough memory in VDP, do [2261] * sequential file save [2262] 8E60 4E,B7 BR GSAVE [2263] 8E62 A7,10,00 DSUB 10,@VAR5 * 10 bytes for control informat 8E65 0A [2264] 8E66 06,8F,4A CALL GVMOV Enough memory in VDP, move it [2265] * over and do the normal save l [2266] **************** Without ERAM, or after GVMOV ************* 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0040 FLMGR-359 [2267] **************** do the normal save ************* [2268] 8E69 BD,0A,40 VSAVZ DST @FREPTR,@STADDR Store additional control info [2269] 8E6C 93,0A DDEC @STADDR Back up some more for 2 byte [2270] 8E6E BD,B0,0A DST @>8370,V*STADDR First current top of memory 8E71 70 [2271] 8E72 97,0A DDECT @STADDR [2272] 8E74 BD,B0,0A DST @STLN,V*STADDR Then STLN 8E77 30 [2273] 8E78 97,0A DDECT @STADDR [2274] 8E7A BD,B0,0A DST @ENLN,V*STADDR Then ENLN 8E7D 32 [2275] 8E7E 97,0A DDECT @STADDR Then [2276] 8E80 BD,B0,0A DST @STLN,V*STADDR 8E83 30 [2277] 8E84 B9,B0,0A DXOR @ENLN,V*STADDR STLN XORed with ENLN 8E87 32 [2278] 8E88 D6,A3,B9 CEQ 1,V@SAPROT Check is there PROTECTED opti 8E8B 01 [2279] 8E8C 4E,91 BR G8E91 [2280] 8E8E 83,B0,0A DNEG V*STADDR Negate the CHECKSUM to indica [2281] * LIST/EDIT protection [2282] 8E91 BD,E0,06 G8E91 DST @STADDR,V@BUF(@PABPTR) Save start address in P 8E94 04,0A [2283] 8E96 93,0A DDEC @STADDR [2284] 8E98 BD,E0,0A DST @>8370,V@RNM(@PABPTR) Compute # of bytes used 8E9B 04,70 [2285] 8E9D A5,E0,0A DSUB @STADDR,V@RNM(@PABPTR) and store that in PAB 8EA0 04,0A [2286] 8EA2 8E,80,84 CZ @RAMTOP If ERAM exists then [2287] 8EA5 6E,AD BS G8EAD [2288] 8EA7 BD,30,0C DST @BBB1,@STLN Restore the original STLN, EN [2289] 8EAA BD,32,08 DST @CCC1,@ENLN which points to ERAM [2290] 8EAD 06,97,5E G8EAD CALL IOCALL Call Device Service Routine f [2291] 8EB0 06 BYTE CZSAVE * SAVE operation [2292] 8EB1 06,60,22 LRTOPL CALL KILSYM Release string space/symbol t [2293] 8EB4 05,60,12 B TOPL15 Go back to toplevel [2294] *********************************************************** [2295] * Open the sequential file, set the PAB [2296] * File type : sequential file [2297] * Mode of operation : output [2298] * Data type : internal [2299] * Record type : variable length records [2300] * Logical record length : 254 maximum [2301] 8EB7 31,00,09 GSAVE MOVE 9,G@PAB3,V@4(@PABPTR) Build the PAB 8EBA E0,04,04 8EBD 8D,24 [2302] 8EBF 96,E0,05 DECT V@FLG(@PABPTR) Put in the correct I/O mode : 8EC2 04 [2303] * Compute the data buffer address [2304] 8EC3 BD,4A,70 DST @>8370,@FAC [2305] 8EC6 A7,4A,00 DSUB 253,@FAC 8EC9 FD [2306] 8ECA BD,E0,06 DST @FAC,V@BUF(@PABPTR) 8ECD 04,4A [2307] 8ECF BD,58,4A DST @FAC,@EEE1 Save it for later use in GVWITE [2308] 8ED2 06,97,6B CALL CDSR Call device service routine to o [2309] 8ED5 57,94 BR ERRZ2B Return with ERROR indication in [2310] * Put 8 bytes control info at the [2311] * beginning of the data buffer [2312] 8ED7 BF,B0,4A DST >ABCD,V*FAC >ABCD indentifies a program f 8EDA AB,CD [2313] 8EDC 95,4A DINCT @FAC when doing LOAD later [2314] 8EDE BD,B0,4A DST @STLN,V*FAC Save STLN in control info 8EE1 30 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0041 FLMGR-359 [2315] 8EE2 95,4A DINCT @FAC [2316] 8EE4 BD,B0,4A DST @ENLN,V*FAC ENLN too 8EE7 32 [2317] 8EE8 95,4A DINCT @FAC [2318] 8EEA BD,B0,4A DST @STLN,V*FAC 8EED 30 [2319] 8EEE B9,B0,4A DXOR @ENLN,V*FAC Save the checksum 8EF1 32 [2320] 8EF2 D6,A3,B9 CEQ 1,V@SAPROT Check is there PROTECTED opti 8EF5 01 [2321] 8EF6 4E,FB BR G8EFB [2322] 8EF8 83,B0,4A DNEG V*FAC Negate the CHECKSUM to indica [2323] * the LIST/EDIT protection [2324] 8EFB 95,4A G8EFB DINCT @FAC [2325] 8EFD BD,B0,4A DST @RAMTOP,V*FAC Save the top of memory info 8F00 80,84 [2326] 8F02 BE,E0,09 ST 10,V@CNT(@PABPTR) Set the caracter count in PAB 8F05 04,0A [2327] 8F07 06,97,5E CALL IOCALL Call device service routine [2328] 8F0A 03 BYTE CZWRIT * With I/O opcode : write, to s [2329] * the control info for the first reco [2330] * Now start to use maximum-length record to write the file [2331] * and each record is copied into the VDP from ERAM bofore i [2332] * is written [2333] 8F0B BD,54,30 DST @STLN,@DDD1 Starting address on ERAM [2334] * DST @>8370,@EEE1 @EEE1 has been set up before [2335] * DST 253,@EEE1 Starting address of the data [2336] * buffer on VDP [2337] 8F0E BD,08,80 DST @RAMTOP,@CCC1 8F11 84 [2338] 8F12 A5,08,30 DSUB @STLN,@CCC1 [2339] 8F15 91,08 DINC @CCC1 [2340] 8F17 BE,E0,09 ST 254,V@CNT(@PABPTR) Set the character count of P 8F1A 04,FE [2341] 8F1C BF,56,00 G8F1C DST 254,@FFF1 @FFF1 byte count 8F1F FE [2342] 8F20 0F,8B XML GVWITE Move data from ERAM to VDP [2343] 8F22 06,97,5E CALL IOCALL Call device service routine [2344] 8F25 03 BYTE CZWRIT [2345] 8F26 A3,54,00 DADD 254,@DDD1 Update the source addr on ERA 8F29 FE [2346] 8F2A A7,08,00 DSUB 254,@CCC1 # of bytes left to move 8F2D FE [2347] 8F2E 6F,44 BS GSAV1 No more bytes to save [2348] 8F30 CB,08,00 DCHE 254,@CCC1 Leave the last record alone 8F33 FE [2349] 8F34 6F,1C BS G8F1C [2350] * Move the last @CCC1 bytes from ERAM to VDP [2351] 8F36 BD,56,08 DST @CCC1,@FFF1 @FFF1 : Byte count [2352] 8F39 0F,8B XML GVWITE Write data from ERAM to VDP [2353] 8F3B BC,E0,09 ST @CCC1+1,V@CNT(@PABPTR) Update the character cou 8F3E 04,09 [2354] * in PAB [2355] 8F40 06,97,5E CALL IOCALL Call device service routine [2356] 8F43 03 BYTE CZWRIT [2357] 8F44 06,97,5E GSAV1 CALL IOCALL [2358] 8F47 01 BYTE CZCLOS * Close the file [2359] 8F48 4E,B1 BR LRTOPL Continue [2360] *********************************************************** [2361] * Move the program text & line # table to VDP, and relocate [2362] 8F4A BD,0C,30 GVMOV DST @STLN,@BBB1 Save STLN, ENLN for later use [2363] 8F4D BD,08,32 DST @ENLN,@CCC1 [2364] 8F50 BD,54,30 DST @STLN,@DDD1 Source addr on ERAM [2365] 8F53 BD,58,10 DST @VAR5,@EEE1 Destination addr on VDP 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0042 FLMGR-359 [2366] 8F56 BD,0A,58 DST @EEE1,@STADDR Use later for RELOCA [2367] 8F59 BD,56,80 DST @RAMTOP,@FFF1 8F5C 84 [2368] 8F5D A5,56,30 DSUB @STLN,@FFF1 # of bytes to move [2369] 8F60 91,56 DINC @FFF1 @FFF1 : byte count for GVWITE [2370] 8F62 0F,8B XML GVWITE Move from ERAM to VDP [2371] 8F64 BD,A3,BC DST @RAMTOP,V@OLDTOP Set up @RAMTOP for old top 8F67 80,84 [2372] * of memory [2373] 8F69 BD,A3,BE DST @>8370,V@NEWTOP Set up @>8370 for new top 8F6C 70 [2374] * of memory [2375] 8F6D 06,8D,36 CALL RELOCA Relocate the program [2376] 8F70 BD,40,30 DST @STLN,@FREPTR Set up @FREPTR [2377] 8F73 93,40 DDEC @FREPTR [2378] 8F75 00 RTN [2379] *********************************************************** [2380] * Save the crunched form of a program into a file. [2381] * Move the line number and text to the crunch buffer, then [2382] * write to the file one line at a time. [2383] *********************************************************** [2384] * Open the file with: [2385] * I/O opcode : OPEN [2386] * File type : SEQUENTIAL file [2387] * Mode of operation : OUTPUT [2388] * Data type : DISPLAY type data [2389] * Record type : VARIABLE LENGTH records [2390] * Data buffer address : Crunch buffer address [2391] * Logical record length : 163 (length of curnch buffer + 2 [2392] * bytes for line #) maximum [2393] 8F76 31,00,09 SAVMG MOVE 9,G@PAB1,V@4(@PABPTR) Build PAB 8F79 E0,04,04 8F7C 8F,F9 [2394] 8F7E 06,97,65 CALL IOCLZ1 Call the DSR routine to open fil [2395] 8F81 BD,50,32 DST @ENLN,@FAC6 Start from the first line # [2396] 8F84 A7,50,00 DSUB 3,@FAC6 @FAC6 now points to the 1st line 8F87 03 [2397] * Write to the file from crunch bu [2398] * one line at a time [2399] 8F88 86,00 G8F88 CLR @VAR0 Make it a two byte later [2400] 8F8A 8E,80,84 CZ @RAMTOP If ERAM exists then [2401] 8F8D 6F,B6 BS G8FB6 [2402] 8F8F BD,54,50 DST @FAC6,@DDD1 Write the 4 bytes (line # and [2403] * line pointer) from ERAM to [2404] * crunch buffer [2405] * @DDD1 : Source address on ERA [2406] 8F92 BF,58,08 DST CRNBUF,@EEE1 @EEE1 : Destination address 8F95 20 [2407] * on VDP [2408] 8F96 BF,56,00 DST 4,@FFF1 @FFF1 : byte count 8F99 04 [2409] 8F9A 0F,8B XML GVWITE Write data from ERAM to VDP [2410] 8F9C BD,54,A8 DST V@CRNBUF+2,@DDD1 Line pointer now points to 8F9F 22 [2411] * length byte [2412] 8FA0 93,54 DDEC @DDD1 Get the length of this line [2413] * @DDD1 : Source address on ERA [2414] 8FA2 91,56 DINC @FFF1 @FFF1 : Byte count, coming ba [2415] * from GVWITE above, =0 [2416] 8FA4 0F,8C XML GREAD1 Read the length byte from ERA [2417] 8FA6 BC,01,58 ST @EEE1,@VAR0+1 @EEE1 : Destination addr on C [2418] 8FA9 BF,58,08 DST CRNBUF+2,@EEE1 Write the text from ERAM to 3 8FAC 22 [2419] * byte of crunch buffer 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0043 FLMGR-359 [2420] * @EEE1 : Destination addr on V [2421] * @DDD1 : Source addr on ERAM [2422] 8FAD 91,54 DINC @DDD1 Back to point to the text [2423] 8FAF BD,56,00 DST @VAR0,@FFF1 @FFF1 : Byte count [2424] 8FB2 0F,8B XML GVWITE Write data from ERAM to VDP [2425] 8FB4 4F,CD BR G8FCD ERAM not exist : line # table [2426] * and text in VDP [2427] 8FB6 BD,A8,20 G8FB6 DST V*FAC6,V@CRNBUF PUT THE LINE # IN 8FB9 B0,50 [2428] 8FBB BD,4C,E0 DST V@2(@FAC6),@FAC2 Get the line pointer out 8FBE 02,50 [2429] 8FC0 93,4C DDEC @FAC2 Line pointer now points to th [2430] * length byte [2431] 8FC2 BC,01,B0 ST V*FAC2,@VAR0+1 Get the length out 8FC5 4C [2432] * Move the text into the crunch buffer [2433] 8FC6 34,00,A8 MOVE @VAR0,V@1(@FAC2),V@CRNBUF+2 8FC9 22,E0,01 8FCC 4C [2434] 8FCD B2,A8,20 G8FCD AND >7F,V@CRNBUF Reset possible breakpoint 8FD0 7F [2435] 8FD1 95,00 DINCT @VAR0 * Total length=text length+line # len [2436] 8FD3 BC,E0,09 ST @VAR0+1,V@CNT(@PABPTR) Store in the cahracter c 8FD6 04,01 [2437] 8FD8 06,97,5E CALL IOCALL Call the device service routi [2438] 8FDB 03 BYTE CZWRIT * Write [2439] 8FDC A7,50,00 DSUB 4,@FAC6 Go to the next line # 8FDF 04 [2440] 8FE0 C9,50,30 DCHE @STLN,@FAC6 Finish moving all [2441] 8FE3 6F,88 BS G8F88 [2442] 8FE5 BF,A8,20 DST >FFFF,V@CRNBUF Set up a EOF for the last rec 8FE8 FF,FF [2443] 8FEA BE,E0,09 ST 2,V@CNT(@PABPTR) Only write this 2 bytes 8FED 04,02 [2444] 8FEF 06,97,5E CALL IOCALL Call the device service routi [2445] 8FF2 03 BYTE CZWRIT * Write [2446] 8FF3 06,97,5E CALL IOCALL Call the device service routi [2447] 8FF6 01 BYTE CZCLOS * Close the file [2448] 8FF7 4E,B1 BR LRTOPL Go back to top level [2449] 8FF9 00,12,08 PAB1 BYTE >00,>12,>08,>20,>A3,>00,>00,>00,>60 * DV163 8FFC 20,A3,00 8FFF 00,00,60 [2450] * >0820 = CRNBUF [2451] * >A3 = 163 [2452] * >60 = OFFSET Look at >8C6C to >8C96 several flags and control flags may be not set or no longer compute correctly due to changes. Quote Link to comment Share on other sites More sharing options...
Casey Posted June 6, 2020 Share Posted June 6, 2020 I haven’t tried it yet, but the 99/8 is supposed to be able to “OLD” programs that were LISTed to a device. Can you do a LIST “DSK1.FILE” on the 99/4A of the INT/VAR program and then OLD it on the 99/8? Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 6, 2020 Share Posted June 6, 2020 2 hours ago, Casey said: I haven’t tried it yet, but the 99/8 is supposed to be able to “OLD” programs that were LISTed to a device. Can you do a LIST “DSK1.FILE” on the 99/4A of the INT/VAR program and then OLD it on the 99/8? doesn't seem to work. unfortunately, neither does SAVE"DSK1.FILE",MERGE then on the ti99/8 MERGE"DSK1.FILE" it gives an error I/O error 4. doesn't matter size of file just gives error anyway. thing is, we don't know if TI ever intended to be able to transfer XB files seamlessly from the 99/4 to the 99/8? @senior_falcon has a sub-program in TML that converts PROGRAM files to IV254 format, the opposite of what we want done. something like that might been needed and maybe it was TIs intention to release such? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 6, 2020 Author Share Posted June 6, 2020 You have to consider that a) the engineers were happy to get to an end with the machine with all the pressure behind (and then failing after all) and b) at some time you just do not and cannot care about older systems if you want to exploit the whole potential of a machine. I can also imagine that the engineers noticed that Extended Basic II does not work with the old TI controller, but management required to support the Hexbus ("Hexbus first!", but second came nothing...) Quote Link to comment Share on other sites More sharing options...
Casey Posted June 6, 2020 Share Posted June 6, 2020 (edited) 1 hour ago, hloberg said: doesn't seem to work. unfortunately, neither does SAVE"DSK1.FILE",MERGE then on the ti99/8 MERGE"DSK1.FILE" it gives an error I/O error 4. doesn't matter size of file just gives error anyway. thing is, we don't know if TI ever intended to be able to transfer XB files seamlessly from the 99/4 to the 99/8? @senior_falcon has a sub-program in TML that converts PROGRAM files to IV254 format, the opposite of what we want done. something like that might been needed and maybe it was TIs intention to release such? It seemed to work ok for me, but with some issues. I don't have any Extended BASIC programs large enough to be saved as INT/VAR 254. But I do have a few large TI BASIC programs from the Oldies but Goodies Games I cassette that I played around with. Word Scramble - I did a LIST "DSK1.WORDLIST" and then NEW and OLD DSK1.WORDLIST - it failed with * Unmatched quotes but it loaded some number of lines before it hit that. I suspect that was due more to the : print separators from TI BASIC messing up Extended BASIC II. Tic Tac Toe - SAVE DSK1.TICTACMRG,MERGE followed by NEW and MERGE DSK1.TICTACMRG worked correctly. I'm using Mame v0.198 for my testing (if it makes a difference). Edited June 6, 2020 by Casey 2 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 6, 2020 Share Posted June 6, 2020 1 minute ago, Casey said: It seemed to work ok for me, but with some issues. I don't have any Extended BASIC programs lsa maybe I did something different. how did you do it? by the way, here are some XB programs I wrote:https://ti99resources.wordpress.com/software/ go down to 'My Games' were i have a bunch BASIC & XB games to test with. 1 Quote Link to comment Share on other sites More sharing options...
Casey Posted June 6, 2020 Share Posted June 6, 2020 (edited) I used your Mille Bourne game to test with. On the 99/4A in Extended BASIC, I exited the game that autostarted, and then did OLD DSK1.MILL34 followed by SAVE DSK1.MILMRG,MERGE I then got into the 99/8 and MERGE DSK1.MILMRG - that seemed to work just fine. SAVE DSK1.MILL34 saved it as INT/VAR 254 as expected. One thing interesting - your disk image shows different file types if it's in the 99/4A or 99/8 when using Disk Manager 3 to display the directory. DM2 shows all 4 of your programs as INT/VAR254. Here are some screen shots. (Remember, I overwrote MILL34): The ones with the very odd LRL values displayed on DM3's output produce I/O error 04 when trying to load them. I suspect there's something odd with how the 99/4A is actually saving these. MILL31, which I did not touch in any way, loads find on the 99/8. MILL32 and MILL33 don't. MILL34 does now because I fixed it by saving it in MERGE format on the 99/4A and then merged it on the 99/8 and saved it again. Edited June 6, 2020 by Casey 2 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 6, 2020 Share Posted June 6, 2020 10 minutes ago, Casey said: I used your Mille Bourne game to test with. On the 99/4A in Extended BASIC, I exited the game that autostarted, and then did OLD DSK1.MILL34 followed by SAVE DSK1.MILMRG,MERGE I then got into the 99/8 and MERGE DSK1.MILMRG - that seemed to work just fine. SAVE DSK1.MILL34 saved it as INT/VAR 254 as expected. One thing interesting - your disk image shows different file types if it's in the 99/4A or 99/8 when using Disk Manager 3 to display the directory. DM2 shows all 4 of your programs as INT/VAR254. Here are some screen shots. (Remember, I overwrote MILL34): The ones with the very odd LRL values displayed on DM3's output produce I/O error 04 when trying to load them. I suspect there's something odd with how the 99/4A is actually saving these. MILL31, which I did not touch in any way, loads find on the 99/8. MILL32 and MILL33 don't. MILL34 does now because I fixed it by saving it in MERGE format on the 99/4A and then merged it on the 99/8 and saved it again. could you upload the .dsk so I can play with it. I would like to know why those files show something other than 254? I never noticed that using TIDIR. 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 6, 2020 Author Share Posted June 6, 2020 49 minutes ago, Casey said: I'm using Mame v0.198 for my testing (if it makes a difference). I did fix some issues after that release; see https://www.mizapf.de/en/ti99/mame/changes (need not be related to the BASIC save topic, though) 1 Quote Link to comment Share on other sites More sharing options...
Casey Posted June 6, 2020 Share Posted June 6, 2020 8 minutes ago, hloberg said: could you upload the .dsk so I can play with it. I would like to know why those files show something other than 254? I never noticed that using TIDIR. Sure. I went back and repeated my test on Mame v0.216 and the behavior was the same, just for the record. MilleBourneV2.dsk 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted June 7, 2020 Share Posted June 7, 2020 (edited) 18 hours ago, hloberg said: doesn't seem to work. unfortunately, neither does SAVE"DSK1.FILE",MERGE then on the ti99/8 MERGE"DSK1.FILE" it gives an error I/O error 4. doesn't matter size of file just gives error anyway. thing is, we don't know if TI ever intended to be able to transfer XB files seamlessly from the 99/4 to the 99/8? @senior_falcon has a sub-program in TML that converts PROGRAM files to IV254 format, the opposite of what we want done. something like that might been needed and maybe it was TIs intention to release such? RXB 2015 documents: SAVE command PAGE S1 ------------------------------------------------------------- Format SAVE DSK3.PRGM SAVE DSK2.PRGM,IV254 Description The SAVE command functions normally to save XB programs. An additional freature is IV254 may be specified after the SAVE command to convert to Internal Variable 254 format. The IV254 format makes it much more easy to tell an XB program from EA programs when cataloging a disk. Internal Variable files do take up one sector more then XB program format. It should be noted that XB programs smaller then 3 sectors can not be saves in IV254 format. Command Saves to DISK 2 in XB program | >SAVE DSK2.TEST image format TEST | | Saves to disk 3 in XB program | >sAVE DSK3.STUFF,IV254 Internal Variable 254 named | STUFF | | Saves to WDS1 in dirctory EXB | >SAVE WDS1.EXB.RB,IV254 XB program Internal Variable | 254 named RB | | | Options Allows better cataloging options for saving XB files. RXB 2015 does not care about XB program size unless it is to small (i.e. less then 2 sectors in size). You can save a 3 sector XB Program Image File as IV254 using: SAVE DSK1.TEST,IV254 Try RXB 2015 to see if it works? Edited June 7, 2020 by RXB comment added 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 21, 2020 Author Share Posted June 21, 2020 You may be glad to hear that in the next MAME release (or the one after it; it may be too late for next Wednesday release) the TI-99/2 will offer an expansion slot and a 32K memory expansion. I never saw it in reality, but let's just assume that it could have existed. mame64 ti99_232 -hexbus hx5102 -flop1 ti992testdssd.dsk -expport ram32k I tested it with some BASIC programs, and it seems as if it actually works; I could load a TI BASIC program of 9 KiB size. There seem to be some issues with larger files, however: The screen space gets overwritten, you see some text on it. Note that you have to give it some time to parse the program; this takes up to 10 seconds and more, showing a blank screen. (I thought it crashed, but the cursor suddenly came back.) 5 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 21, 2020 Share Posted June 21, 2020 7 hours ago, mizapf said: You may be glad to hear that in the next MAME release (or the one after it; it may be too late for next Wednesday release) the TI-99/2 will offer an expansion slot and a 32K memory expansion. I never saw it in reality, but let's just assume that it could have existed. mame64 ti99_232 -hexbus hx5102 -flop1 ti992testdssd.dsk -expport ram32k I tested it with some BASIC programs, and it seems as if it actually works; I could load a TI BASIC program of 9 KiB size. There seem to be some issues with larger files, however: The screen space gets overwritten, you see some text on it. Note that you have to give it some time to parse the program; this takes up to 10 seconds and more, showing a blank screen. (I thought it crashed, but the cursor suddenly came back.) interesting. I wonder if there was a switch to relocate the video ram when the memory was installed? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 22, 2020 Author Share Posted June 22, 2020 It could as well be a bug. You have to consider that we are probably the first people who add a memory expansion to the 99/2. ? 3 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted June 22, 2020 Share Posted June 22, 2020 1 hour ago, mizapf said: It could as well be a bug. You have to consider that we are probably the first people who add a memory expansion to the 99/2. ? that's entirely possible too. BTW did you test it with both ROM versions? Quote Link to comment Share on other sites More sharing options...
+9640News Posted July 9, 2020 Share Posted July 9, 2020 In another topic area, there were files to upload to setup TIPI emulation. Am I correct to assume that MAME can interface if QEMU is properly configured? Assuming that to be the case, is the latest release of MAME able to use the TIPI or is it a matter of waiting for the next release? If so, what is the command line argument to assign it a slot and is there a special string to tie it QEMU? Also, I assume there is a binary needed for the TIPI eprom? What is the filename needed for it to go into the zip file? Trying to get a jumpstart on my questions I know I will have that I have not seen details posted anywhere. Beery Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted July 9, 2020 Share Posted July 9, 2020 In another topic area, there were files to upload to setup TIPI emulation. Am I correct to assume that MAME can interface if QEMU is properly configured? Assuming that to be the case, is the latest release of MAME able to use the TIPI or is it a matter of waiting for the next release? If so, what is the command line argument to assign it a slot and is there a special string to tie it QEMU? Also, I assume there is a binary needed for the TIPI eprom? What is the filename needed for it to go into the zip file? Trying to get a jumpstart on my questions I know I will have that I have not seen details posted anywhere. Beery The only emulator that can work with tipi emulation is js 99erSent from my LM-V600 using Tapatalk Quote Link to comment Share on other sites More sharing options...
+9640News Posted July 9, 2020 Share Posted July 9, 2020 20 minutes ago, arcadeshopper said: The only emulator that can work with tipi emulation is js 99er Sent from my LM-V600 using Tapatalk Thanks. I've got a few questions I will post in the js99er topic area assuming there is one. Beery Quote Link to comment Share on other sites More sharing options...
+hloberg Posted July 9, 2020 Share Posted July 9, 2020 @mizapf did ya'll do something with the hexbus? it now seems a little faster. earlier my i3 on the 99/8 would max to autoskip 10 and start skipping sound. but with this latest version it only goes to max 7 and rarely skips. much better. Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 9, 2020 Author Share Posted July 9, 2020 Nope, I did not touch anything. I sometimes had an effect that MAME performed differently between builds (of the same source code); maybe the compiler creates better code from time to time. (This is not as unlikely as it sounds, since the compilers do heavy optimization, and sometimes building from clean yields better results.) Maybe you had a CPU hog among your processes. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.