Jump to content
IGNORED

At least ! DSK image from my collection


rocky007

Recommended Posts

Break-down of mm-games.dsk:mm-load program, basically the inverse of mm-save from earlier in the thread. I am not going to go into flow detail (I am not sure if the program is deliberately convoluted or just shoddy programming,) as it is 1) too late for me to type it out and 2) I just wanted a quick "disassembly."

 

As before, I used mmprogs.dsk:mmdisassem to dump the opcodes starting at >7FE0 as LOAD'ed into place by BASIC then called via CALL LINK("A").

 

This looks like it will be fun to use, and it teaches a little about file loading and saving via ML/ASM/XML. Again, there is a proper way to reserve VDP RAM for buffer and PAB space rather than this static "brute force" method.

 

 

100 CALL CLEAR
110 PRINT " MINI-MEMORY LAADPROGRAMMA   *************************"
120 PRINT ::::::::::
130 DIM KAR(10)
140 CALL LOAD(28702,127,248)
150 CALL LOAD(32760,65,32,32,32,32,32,127,14*16)

>710F (LFAM) >7FF8

>7FF8 "A     ", >7F, >E0

160 GOTO 260
170 CALL LOAD(32736,2,0,33,24,2,1,113,24,2,2,14,200,4,32,96,48,4,91)
180 CALL LINK("A")

LI R0,>2118
LI R1,>7118
LI R2,>0EC8
BLWP @>6030	VMBR
B *R11

Copy V>2118-V>2FE0 to >7118->7FE0 (data areas, only, not workspace, flags, REF/DEF,
or area used for copy/load routine.)

190 TEL1=7*4096+15*256+14*16
32736 >7FE0
200 TEL2=2*4096+15*256+14*16
12256 >2FE0
210 FOR I=TEL2 TO TEL2+31 STEP 11
220 CALL PEEKV(I,W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10)
230 CALL LOAD(I-TEL2+TEL1,W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10)
240 NEXT I

Copy V>2FE0-V>2FFF to >7FE0->7FFF

241 TEL1=7*4096
>7000
242 TEL2=2*4096
>2000
243 TEL3=256+24+TEL2
>2118
244 FOR I=TEL2 TO TEL3 STEP 11
245 CALL PEEKV(I,W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10)
246 CALL LOAD(I-TEL2+TEL1,W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10)
247 NEXT I
250 GOTO 360

Copy V>2000-V>2118 to >7000->7118 (fixes usage workspace usage by utility routines and
temporary program.)

(MiniMemory RAM >7000->7FFF now contains exact copy of dump file.)


260 INPUT "NAAM VAN DE INPUTFILE  ?    DSK1.":A$
270 IF LEN(A$)>10 THEN 260
280 FOR I=1 TO LEN(A$)
290 KAR(I)=ASC(SEG$(A$,I,1))
300 NEXT I
310 CALL POKEV(7936,5,0,32,0,0,0,16,0,0,5+LEN(A$),68,83,75,49,46,KAR(1),KAR(2),KAR(3),KAR(4),KAR(5))
320 CALL POKEV(7956,KAR(6),KAR(7),KAR(,KAR(9),KAR(10))

FN=len(FILENAME), FNx=substr(FN,x)
V>1F00 >05, >00, >20, >00, >00, >00, >10, >00
V>1F08 >00, 5+FN, "DSK1.", FN1
V>1F10 FN2, FN3, FN4, FN5, FN6, FN7, FN8, FN9
V>1F18 FN10

(V>1F00 opcode >05 = load?)

330 CALL LOAD(32736,2,0,31,9,200,0,131,86,4,32,96,56,0,8,4,91)
340 CALL LINK("A")
350 GOTO 170

LI R0,>1F09
MOV R0,@>8356
BLWP @>6038	DSRLNK
DATA >0008
B *R11


360 PRINT "MINI-MEMORY IS NU GELADEN   MET DE FILE :";"DSK1."&A$
370 END

 

 

(BTW, I installed Xvid x64 but Classic 99 does not detect it. Do I need to use the 32-bit codec?)

Link to comment
Share on other sites

To OLD CS1: the attached disk image with my games seems to work better for me.

  • Rock Runner (with Editor/Assembler module):
    2.Editor/Assembler > 5.Run program file > DSK1.ROCK
  • Gridder, Excalibur, Artist (with Mini Memory module):
    1.Basic > OLD DSK1.GRIDDER > RUN, then 3.Mini Memory > 2.Run > Enter

 

Thanks to rocky007 for preserving them. I recently found out that my tapes have become unreadable, so I was afraid they would be lost. Looking at them now, the crisp emulator display does shed a harsh light on the simple graphics.

 

I programmed these games with the Line-by-Line assembler, hex coding and a tape recorder, and I figured out the half-bitmap mode by experimenting (patient teenager). The technical analyses by Thierry Nouspikel and by Tursi are awesome.

Lafortune.zip

  • Like 3
Link to comment
Share on other sites

To OLD CS1: the attached disk image with my games seems to work better for me.

Excellent, thank you!

 

Thanks to rocky007 for preserving them. I recently found out that my tapes have become unreadable, so I was afraid they would be lost. Looking at them now, the crisp emulator display does shed a harsh light on the simple graphics.
I always found this to be enlightening. I used to have a black and white TV which did a great job of showing individual pixels. I learned a lot that way.

 

I programmed these games with the Line-by-Line assembler, hex coding and a tape recorder, and I figured out the half-bitmap mode by experimenting (patient teenager). The technical analyses by Thierry Nouspikel and by Tursi are awesome.

 

"Rock Runner" is, IMNSHO, spectacular. It inspires me to pick up a game conversion project I started a long time ago. I am not inclined to mention it here simply because I may not ever get around to it and would rather not stick my neck out just yet.

 

I only made it so far as some basic assembly support routines for BASIC programs. Around the time I got a MiniMemory module I started my move over to the Commodore 64. I was enamored with GEOS and wanted to make something like it for the TI. (Still think TI-GEOS might be pretty cool.) My patience was spent learning 6502 and the internals of the 64, I wonder how far I might have gone with TMS-9900 instead. Never too late for an old dog, and what-not!

 

I am quite impressed with the level of skill around this here forum, and am looking forward to meeting people this November. Hope you stick around here some more; great to have new contributors.

Link to comment
Share on other sites

a compilation of nice mini memory games... it works on real TI99, but don't find a way to run with classic 99

Works fine with Classic99. :)

 

mm4.gif

 

I'm trying to get these working with my gamebase project via Classic99, I'm not sure what is happening after the mm-load program has loaded the prog after ** DONE ** for it to return to the minimem menu screen - can you explain please? I suspect your doing some warm reset and then selecting from the minimem menu to execute the prog but if that is true I cannot do this with gamebase as 1. I can't trigger a reset 2. If i do reset even manually I just end up running the mm-load program again as Classic99 re-initiates the send-keys script - so is there another way I could run these through Classic99?

 

OX.

Link to comment
Share on other sites

Instead of the boot (after entering BOXING), I tried this

 

CALL LINK("START")

 

mm.png

 

I guess the game itself works fine besides the graphics being messed up. It looks like the VDP registers are in TI BASIC instead of Mini Memory(/EA) standard. I guess one could tweak the MM-LOAD to, of course have the CALL INIT and maybe the BOXING, and set the VDP registers (maybe even just using CALL POKEV) to set things right before the last LINK. Unfortunately I haven't got the time to do the work right now. Think it should "rescue" most of the games.

 

:)

Edited by sometimes99er
Link to comment
Share on other sites

Instead of the boot (after entering BOXING), I tried this

 

CALL LINK("START")

 

mm.png

 

I guess the game itself works fine besides the graphics being messed up. It looks like the VDP registers are in TI BASIC instead of Mini Memory(/EA) standard. I guess one could tweak the MM-LOAD to, of course have the CALL INIT and maybe the BOXING, and set the VDP registers (maybe even just using CALL POKEV) to set things right before the last LINK. Unfortunately I haven't got the time to do the work right now. Think it should "rescue" most of the games.

 

:)

 

Yeah, I'd already tried the Call LINK("START") and got the corrupted graphics on all the games, would something like Funnel Web be able to start these games or could they be converted to run independently of minimem and the loader as I already have some of these games that run from cartridge .bin format?

Edited by OX.
Link to comment
Share on other sites

I'm trying to get these working with my gamebase project via Classic99, I'm not sure what is happening after the mm-load program has loaded the prog after ** DONE ** for it to return to the minimem menu screen - can you explain please? I suspect your doing some warm reset and then selecting from the minimem menu to execute the prog but if that is true I cannot do this with gamebase as 1. I can't trigger a reset 2. If i do reset even manually I just end up running the mm-load program again as Classic99 re-initiates the send-keys script - so is there another way I could run these through Classic99?

 

Try just typing "BYE" after the mm-load program exits? That does a soft reboot from BASIC or XB.

 

Remember you can send a long string of keypresses.

Link to comment
Share on other sites

I'm trying to get these working with my gamebase project via Classic99, I'm not sure what is happening after the mm-load program has loaded the prog after ** DONE ** for it to return to the minimem menu screen - can you explain please? I suspect your doing some warm reset and then selecting from the minimem menu to execute the prog but if that is true I cannot do this with gamebase as 1. I can't trigger a reset 2. If i do reset even manually I just end up running the mm-load program again as Classic99 re-initiates the send-keys script - so is there another way I could run these through Classic99?

 

Try just typing "BYE" after the mm-load program exits? That does a soft reboot from BASIC or XB.

 

Remember you can send a long string of keypresses.

 

Thanks Tursi, that does the trick :)

Link to comment
Share on other sites

  • 2 weeks later...

If you view it with TIDir, you can see that it's an assembly source file.

 

You must add "L1 JMP L1" at the end to actually see something.

 

oh... well... i tried to load this in ea3 or ea5 but always the same error 2.

i do not know assembly at the moment... :( ... you understand if it's a complete program or only a piece ?

 

 

OX.

you must toggle the .zip extension as i explained in my post ;)

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