Jump to content
IGNORED

New MAME release


mizapf

Recommended Posts

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.

  • Like 3
Link to comment
Share on other sites

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.  

 

Link to comment
Share on other sites

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).

 

 

Link to comment
Share on other sites

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 by mizapf
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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? 

Link to comment
Share on other sites

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...)

Link to comment
Share on other sites

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 by Casey
  • Like 2
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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

image.thumb.png.779b6736a1468624ac06f6bdf9924a6b.pngimage.thumb.png.8f4c5f0945997e2fc5d43f4d7d32db49.png

 

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 by Casey
  • Like 2
Link to comment
Share on other sites

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

image.thumb.png.779b6736a1468624ac06f6bdf9924a6b.pngimage.thumb.png.8f4c5f0945997e2fc5d43f4d7d32db49.png

 

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.

  • Like 1
Link to comment
Share on other sites

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 by RXB
comment added
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

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.)

  • Like 5
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

  • 3 weeks later...

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

 

 

Link to comment
Share on other sites

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 99er

Sent from my LM-V600 using Tapatalk

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...