Jump to content

LASooner

Members
  • Content Count

    443
  • Joined

  • Last visited

Posts posted by LASooner


  1. I noodled some more with the batch file, and created an auto compile batch, change the paths and files in auto_compile.bat (everything in astericks below)

    And when you run it, it will stay resident and check to see if you have changed the file that you specified.

     

    So run the batch file, edit your tidbit code in whatever editor you use, save it, it will auto compile and get copied to your clipboard. So as long as the batch is running all you have to do is save and paste into C99

    @Echo Off
    Set _Delay=10
    Set _Monitor=[****INPUT PATH****]\input.xb
    Set _Base=%temp%\BaselineState.dir
    Set _Chck=%temp%\ChkState.dir
    Set _OS=6
    Ver|Findstr /I /C:"Version 5">Nul
    If %Errorlevel%==0 Set _OS=5 & Set /A _Delay=_Delay*1000
    :_StartMon
    Call :_SetBaseline "%_Base%" "%_Monitor%"
    :_MonLoop
    If %_OS%==5 (Ping 1.0.0.0 -n 1 -w %_Delay%>Nul) Else Timeout %_Delay%>Nul
    Call :_SetBaseline "%_Chck%" "%_Monitor%"
    FC /A /L "%_Base%" "%_Chck%">Nul
    If %ErrorLevel%==0 Goto _MonLoop
    
    [****PHP PATH****]\php [****TIdBIT PATH****]\tidbit_cmd.php [****INPUT PATH****]\input.xb 100 10 [****OUTPUT PATH****]\output.xb
    
    clip < "[****OUTPUT PATH****]\output.xb"
    
    Goto :_StartMon
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Subroutine
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    :_SetBaseline
    If Exist "%temp%\tempfmstate.dir" Del "%temp%\tempfmstate.dir"
    For /F "Tokens=* Delims=" %%I In ('Dir /S "%~2"') Do (
    Set _Last=%%I
    >>"%temp%\tempfmstate.dir" Echo.%%I
    )
    >"%~1" Findstr /V /C:"%_Last%" "%temp%\tempfmstate.dir"
    Goto :EOF
    

    TIdBIT_batchfiles - auto_compile.zip

    • Like 2

  2. So I'm using TIdBit a lot lately and the workflow was starting to get in my way. Yes it's faster than typing it all in on the TI, but it could be faster with the command line version.

     

    It requires that you have TIdBIT set up locally

     

    I've created 2 batch scripts to help speed up using it

     

    You'll need to edit both to add your own paths to PHP and TIdBIT cmd.

    The "compile" batch is if you're iterating on the same file, the "input compile" is if you want to do a quick compile on some code without editing the compile batch file

    Open the input file

    When you're ready to compile your TIdBIT code,save the source, run the compile batch file
    When you run it, it copies the compiled file to clipboard, post straight to Classic 99
    removes task of copying your source, clearing the web INPUT field, and pasting it, pressing translate, select output, copying output to paste in Classic 99.
    Also one less window you have to have open or deal with because you're not using a browser anymore.

     

    These batch files are going to save some of my sanity.

     

    TIdBIT_batchfiles.zip

    • Like 2

  3. Those players look great! Willing to upload the Magellan file?

    It does seem better to start with a single-directional scrolling field, L/R or U/D. The up/down configuration you have looks great.

     

    Yes, I'll upload it later tonight, use it as you see fit, my programming skills are lacking to take it any further.

    • Like 1

  4.  

    I've invested the time to understand matthew's viewport code from page-4 of this thread. Here's my twist on the whole thing along with comments clarifying what may seem obvious to experienced TI Assembly programmers. The attached Viewport code is over-commented to suit my needs and to encapsulate answers to questions, thread comments, etc:

     

    attachicon.gifViewportFD.zip

     

    This version of the viewport code is American Football themed.

     

    Added feature: I was able to allow for the addition of diagonal joystick moves by removing two JMP PLY10s and adding a JMP PLY03..

     

    Whenever a Left or Right move is detected the code now ALSO checks for Up and DOWN which equals a diagonal move.

    *      Test the joystick via the Communications Register Unit (CRU)
    *                               Com Register Unit on TI-99/4A reads: Keyboard keys, Joysticks, Cassette i/o
    *                                  - Interfaces with TMS9900 via TMS9901 Programmable Systems Interface (PSI)
    *                                       - uses 12 lines of the address bus (3-14), does not use the data bus
    *                                           - addresses 4,096 Input lines and 4,096 output lines
    *                                                    - CRUIN line, CRUOUT line, CRUCLK line
    
    *               Note: Joystick lines are tied high(1), and when a contact is made, they are pulled low.
    *                                       - Making a contact with the joystick connects that contact to 0V & sets CRU bit.
    *
           LI   R12,>0006         * Base CRU address for joystick 1 is placed into R12 for following Test Bit Operation
    *                                    -   0000 0000 0000 0110
    *                                    -    ^^^ ^^^^ ^^^^ ^    <== bits 3-14 yield >0000 ????
    
           TB   1                 * \\\\\\\\\\ LEFT MOVE CHECK \\\\\\\\\\ Jump if LEFT-Joy1 position not selected
    
    *                                   TB 1 = Test Bit 1; Reads CRU bit/line 1 relative to the CRU base address in R12
    *                                           The Equal Status Bit is set to the value of CRU line level, which gets
    *                                           set '1' when the joystick line goes to 0V.
    *                                       E/A Manual, 9.5, p.156
    *                                           Reads the digital input bit on the CRU at the address specified
    *                                           by the sum of the signed displacement (1) + contents of R12, bits 3-14,
    *                                           and set the equal status bit (third MSbit) of Status Reg to the value read
    
    
           JEQ  PLY02             * Jump when Left not selected, test Right next
           MOVB @SLTNAM,R4        * R4 loaded with the Sprite address for the Left moving player Sprite's Top/Left Tile
    *                                    - Player Sprites are four tiles in size
           DEC  R3                * R3 contains P1LOC (top/left)value; updates R3 held tile counter one position less/left
           DEC  R5                * R5 contains P1LOC+88(bottom/left); DEC R5 to update player1 Sprite's bottom-LEFT tile
           MOV  R3,R6             * R6 updates to hold a copy of P1LOC tile counter for the top/LEFT tile
    *                                   - Since this is a LEFT move it's important to use LEFT side Sprite tiles
    *                                     for when we later check move legality.
           DEC  R1                * R1 contains @P1MX value; this updates R1 held P1MX value
           JLT  PLY99             * Left side horizonal bound check; IF P1MX < 0 THEN No_Updating RETURN
    *                                   - Player1 cannot move left beyond column 0
    *                                   - Nothing has been updated above except temp. values held in registers
    *       JMP  PLY10             * PLY10 is where we test the moves before making them permanent/executing them in memory
    *                                   - R1= top/LefT P1MX; R3= P1LOC offset; R4 = char; R5 = bottom/LEFT; R6= P1LOC top/LT
            JMP  PLY03
    
    PLY02  TB   2                 * ////////// RIGHT MOVE CHECK   CRU Bit 2 //////////
           JEQ  PLY03
           MOVB @SRTNAM,R4        * Sprite name
           INC  R3                * R3 contains P1LOC value; updates R3 held tile counter to one position right
           INCT R5                * R5 contains P1LOC+88; adds TWO so R5 now holds counter for Player1 Sprite bottow/RIGHT
    *                                   - had to add TWO here since R5 = Sprite bottom/RIGHT for validity checking
           INC  R6                * R6 contains Sprite top/right tile offset; this updates it one tile to the right
           INCT R1                * R1 contains P1MX value; adds TWO so R1 now holds counter for Player1 Sprite top/RIGHT
    *                                   - right moves dictate right side Sprite tile values here for move validity checks
           C    R1,@MAPW          * Upper horizontal bound check; see if right side of sprite exceeds right edge of map
           JGT  PLY99             * There is no arithmetic >= so make two checks
           JEQ  PLY99             * PLY99 RETURNs without moving
           DEC  R1                * R1 Readjusted to real (left/top) tile counter location, X + 1
    
    *       JMP  PLY10             * R1= P1MX; R3= P1LOC offset; R4= char; R5= bottom/RIGHT; R6= top/RIGHT
    *                               edited to go to PLY03
    
    PLY03  TB   3                 * DOWN MOVE CHECK --- moving down DECREASES P1MY --- Row 0 of the Map is at the bottom
           JEQ  PLY04
           MOVB @SDNNAM,R4        * Sprite name for down
           A    @MAPW,R3          * Adjust the location of P1LOC counter to a row lower
           A    @MAPW,R5          * R5 holds bottom/left tile offset; update to a row lower
           MOV  R5,R6
           INC  R6                * R6 now holds bottom/right sprite tile offset
           INCT R2                * Move down, Y + 2 for bound check
           C    R2,@MAPH          * Upper vertical bound check; compare P1MY to Map Height
           JGT  PLY99             * There is no arithmetic >= so make two checks
           JEQ  PLY99             * RETURN w/o moving
           DEC  R2                * Re-adjust to real location, Y + 1
           JMP  PLY10             * R2= P1MY updated; R3= P1LOC offset; R4 = char; R5 = BOTTOM/Left; R6= BOTTOM/right
    
    PLY04  TB   4                 * UP MOVE CHECK  --- moving up INCREASES P1MY --- Row 39 of the Map is on top
           JEQ  PLY10
           MOVB @SUPNAM,R4        * Sprite name for up
           S    @MAPW,R3          * Adjust the location
           MOV  R3,R5
           S    @MAPW,R6          * R6 was top/right tile which has been update to a row above
           DEC  R2                * Move up, Y - 1
           JLT  PLY99             * Lower vertical bound check 0, If fails RETURN w/o moving
    *                             * R2= P1MY updated; R3 = P1LOC offset; R4 = char; R5 = TOP/left; R6 = TOP/right
    PLY10
    *
    *   PLY10 Checks to make sure the requested Player1 move is to a 'Legal' tile such as a path or bridge
    *
    
    

    attachicon.gifDSK9.zip <===== File "F2O" runs w/ E/A

     

    -

     

    Is this E/A 3? What's the program name?


  5. I know, I know..I'm truly a sadist for using the TI sticks, but I was trying to recreate the experience I had growing up. I plugged in my handy slick stik I've had on my C64 and Amiga for years, and it almost feels like cheating how much easier it is to play games now.

     

    I think if I hadn't been poor, I might never have learned to program, because those Atarisoft ports are pretty good for the era, and I would have just played those all the time instead of trying to make my own games. With the joystick adapter doubly so. All I had growing up was A-maze-ing and Tombstone City.

     

    The proof of this is when I got my C-64 I got a modem and a bunch of BBS numbers and I never learned to program on the C-64 to the level I did on the TI.

     

    EDIT: I posted this in the wrong forum, but don't see the option to delete. Mod please move to the main board

    • Like 2

  6. She has her room, I have mine. As long as none of it leaks out of the room, I can pack it with what I want. Luckily she doesn't include the Mame cabinet as part of that, her only demand was it have a CRT and a trackball for Centipede. It sits in the Family room.

    • Like 1

  7. I talked to Mike Bunyard pretty regularly until a couple of years ago, and I still talk a lot with Blaine Crandall.

     

    Based on the original name: the Dimension 4, I would suppose the name just morphed into the 99/4 when (for whatever reason) they moved away from the Dimension 4 name. I guess they were planning on taking computing to the fourth dimension. . .

     

    If the 4th dimension is time, it's certainly has been good at taking up a lot of that.

×
×
  • Create New...