Jump to content

mizapf

Members
  • Content Count

    4,029
  • Joined

  • Last visited

  • Days Won

    3

mizapf last won the day on August 31 2016

mizapf had the most liked content!

Community Reputation

2,974 Excellent

1 Follower

About mizapf

Profile Information

  • Gender
    Male
  • Location
    Germany
  • Interests
    MAME, TIImageTool, Ninerpedia
    Linux advocate (openSUSE/KDE)

Recent Profile Visitors

16,822 profile views
  1. We had this a while ago: Also, see Speech in Alpiner: https://www.ninerpedia.org/index.php?title=Alpiner
  2. I did not mean to replace the current competition; there we can enjoy new fights all over the time. Until all games will have been played. My proposal is to introduce a second event with recurring challenges. I believe many of us have their favorite games which they would like to play again. Often, during the current competition, you finally gained some skills, and then the month is over. I'd like to play Munch Man, Parsec, and TI Invaders again, but we had all of them years ago. I'd find it interesting to have such a fixed collection of games, and maybe one could have another championship with another set of games ("TI Classics", "Atarisoft challenge", "Modern games"). You may have to play two or more games per month to keep your rank in all of these ... which may get a bit stressful, I see. 🙂 We may have to stretch the periods if we don't have 12 games in a category, i.e. just every two months, or every six weeks. Repetition is just the crucial point here, it is not a limitation.
  3. The important point is that the games reappear each year, so you have to defend your last score. Or replace your failure last time with a glorious fight.
  4. Just a (obvious?) tip: If you hold your smartphone in landscape orientation, you could get more of the line on the photo. 🙂
  5. Ah, I finally understood the point. The first program is this RORG >0010 DATA 1 DATA 2 DATA 3 END and the loader loads the data at addresses A010, A012, A014. When I now load RORG >0020 DATA 4 DATA 5 DATA 6 RORG >0030 DATA 7 DATA 8 END the data are put at A036, A038, A03A, A046, A048; just saw it in the MAME debugger. That is the way it should be. The relocatable location counter points to the first free word in the relocatable space, and this is RORG 0. Anything else would not make sense. If you concatenate the sources for a single file, then of course, the location counter is a single one for the concatenated file. If I inserted the second file before the end of the first one, the locations of 4, 5, 6, 7, 8 would be A020 etc.
  6. Can it be read out? It would be interesting for the SGCPU emulation which currently pretends to have a normal TI keyboard.
  7. You mean AORG >B000? (Assuming that the relocatable location counter starts at A000.) Overwriting would be - I'd say - intentional. (Or: The program author just deserves it. ) One more suggestion from the section "1% of the people actually thought about this, but much less actually need it": You could think about including PSEG / CSEG / DSEG for your linker - just in case we discover that we could need that. (I actually included it in TIMT's disassembler. Just in case.)
  8. The first example is as expected; the RORG value is absolute with respect to its location counter (i.e. the value is not an offset, but the relocatable address). I don't see the second result with TASM - or did you mean separately loaded object code (e.g. multiple calls of E/A option 3)? This is RORG1_S: RORG >1000 DATA 1 COPY "RORG2_S" END This is RORG2_S: RORG >2000 DATA 2 RORG >2800 DATA 3 The resulting object code: 01 28 02 20 20 20 20 20 20 20 20 41 10 00 42 00 .(. A..B. 01 41 20 00 42 00 02 41 28 00 42 00 03 46 20 20 .A .B..A(.B..F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 20 39 39 2f 34 41 20 61 6e 64 20 39 36 : 99/4A and 96 34 30 20 43 72 6f 73 73 2d 41 73 73 65 6d 62 6c 40 Cross-Assembl 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er with tags as text: A 1000 B 0001 A 2000 B 0002 A 2800 B 0003 F : 99/4A and 9640 Cross-Assembler I think for compatibility's sake you should allow for RORG <address>.
  9. I guess this is quite unlikely, but do we have the source code of TASM? There is at least one bug that requires a fix: COC is not recognized as a valid mnemonic.
  10. I did not yet assemble GeneveOS/MDOS, but I do have some projects (TIC or assembly language) that have several source files (XModem e.g. has 14 source files, Fractals' executable files use 29K together). If one assembler takes 5 minutes and the other 8 minutes, I don't care, but this is just my personal view, of course. (I admit, at some time I stripped down the set of systems in MAME to the TI family when I built MAME, as I started to get annoyed from waiting 15 minutes every time that I started a build during debugging; now I am down to five minutes.)
  11. These assembler directives are directed at the linking loader (E/A option 3, Extended Basic loader, Geneve LDR). As I once said, what we - in the TI world - disparagingly call "just E/A 3" actually corresponds to Windows EXE files or Linux ELF files. The "E/A option 5" files correspond to the COM files in MSDOS. I know, it is a matter of loading speed for us.
  12. Switch the location pointer to relocatable mode and optionally set its value ("Relocatable origin"). The location pointer is the address pointer used by the assembler and the loader. In contrast, AORG ("Absolute origin") switches to absolute (non-relocatable) mode and places the argument into the location pointer. The code after this directive will be loaded starting from the provided address. To switch back to relocatable mode, you have to use RORG.
  13. Reading the manual of GenASM, I now know why it creates such a strange code: It is a one-pass assembler. For that reason, it writes object code with forward references using a 0000, then rewinds the location counter when the symbol appears, inserts the values, then forwards again. What a nonsense. Why should one do a one-pass assembler? Just to save some time? I'd rather get a reasonable object code, I'm not so short of time. I think I'll return to TASM again.
  14. Note that the RORG magic in the code is just done by GenASM, not by TASM that is also used on the Geneve. So it is not a requirement for the platform, and I did not use it in the source code. And actually, RORG does not appear in the object code; it is my TIImageTool that inserts these RORGs because the location counter was changed at that point in the tagged object code. Here is the tagged object code for reference. 000000: 01 00 a0 32 31 3a 30 36 3a 30 34 41 00 00 42 04 ...21:06:04A..B. 000010: 60 42 00 00 42 41 42 42 53 28 42 20 20 42 20 20 `B..BABBS(B B 000020: 42 29 3a 42 20 73 42 74 61 42 74 75 42 73 3d 42 B):B sBtaBtuBs=B 000030: 20 20 42 20 20 42 0d 0a 44 00 41 00 1e 42 00 09 B B..D.A..B.. 000040: 42 ff fe 42 ff ff 42 00 00 42 00 01 46 20 20 20 B..B..B..B..F 000050: 42 00 02 42 7f fe 42 7f ff 42 80 00 42 80 01 42 B..B..B..B..B..B 000060: 00 06 42 02 e0 42 f0 00 41 00 02 43 00 34 41 00 ..B..B..A..C.4A. 000070: 38 42 03 00 42 00 00 42 02 08 43 00 1e 42 c2 78 8B..B..B..C..B.x 000080: 42 c1 98 42 02 01 42 fc 00 42 00 81 42 07 46 42 B..B..B..B..B.FB 000090: 02 c7 42 c0 38 42 02 01 43 00 08 42 06 a0 46 20 ..B.8B..C..B..F 0000a0: 42 00 00 42 c0 07 42 02 01 43 00 16 42 06 a0 42 B..B..B..C..B..B 0000b0: 00 00 42 02 00 42 00 27 42 02 01 43 00 04 42 04 ..B..B.'B..C..B. 0000c0: c2 42 2c 20 43 00 32 42 06 09 42 16 e7 42 04 20 .B, C.2B..B..B. 0000d0: 42 00 00 42 30 31 42 32 33 42 34 35 42 36 37 42 B..B01B23B45B67B 0000e0: 38 39 42 41 42 42 43 44 42 45 46 42 c0 c0 46 20 89BABBCDBEFB..F 0000f0: 41 00 60 43 00 88 41 00 56 43 00 88 41 00 8a 42 A.`C..A.VC..A..B 000100: 02 02 42 00 04 42 0b c3 42 c1 03 42 02 44 42 00 ..B..B..B..B.DB. 000110: 0f 42 dc 64 43 00 78 42 06 02 42 16 f8 42 04 5b .B.dC.xB..B..B.[ 000120: 35 00 00 53 54 41 52 54 20 46 20 20 20 20 20 20 5..START F 000130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000140: 3a 20 47 65 6e 41 53 4d 20 76 31 2e 30 33 2c 20 : GenASM v1.03, 000150: 28 43 29 20 31 39 38 38 2c 31 39 38 39 20 62 79 (C) 1988,1989 by 000160: 20 4a 2e 20 50 61 75 6c 20 43 68 61 72 6c 74 6f J. Paul Charlto 000170: 6e 2e 20 41 73 73 65 6d 62 6c 65 64 3a 20 30 36 n. Assembled: 06 000180: 2d 32 32 2d 31 39 20 32 31 3a 30 36 3a 30 34 20 -22-19 21:06:04
  15. Paul Charlton's GenASM does some pretty weird things with RORG in the object code, which I find rather ugly, but it seems to work, obviously. This is what TIImageTool produces from one of my program (and I surely did not use RORG). IDT '21:06:04' DEF START START B @>0000 R0004 TEXT 'ABS(' R0008 TEXT ' 😞 status=' R0016 TEXT ' ' BYTE >0D BYTE >0A DATA >0009 R001E DATA >FFFE DATA >FFFF DATA >0000 DATA >0001 DATA >0002 DATA >7FFE DATA >7FFF DATA >8000 DATA >8001 DATA >0006 R0032 LWPI >F000 RORG $-52 R0002 DATA R0032+2 R0004 BSS 52 R0038 LIMI >0000 LI R8,R001E MOV *R8+,R9 R0042 MOV *R8,R6 LI R1,>FC00 LST R1 ABS R6 STST R7 MOV *R8+,R0 LI R1,R0008 BL @>0000 MOV R7,R0 LI R1,R0016 BL @>0000 LI R0,>0027 LI R1,R0004 CLR R2 XOP @R0032,0 DEC R9 JNE R0042 BLWP @>0000 R0078 TEXT '0123456789ABCDEF' R0088 MOV R0,R3 RORG $-42 R0060 DATA R0088 RORG $-12 R0056 DATA R0088 R0058 BSS 50 R008A LI R2,>0004 R008E SRC R3,12 MOV R3,R4 ANDI R4,>000F MOVB @R0078(R4),*R1+ DEC R2 JNE R008E RT END (If only these silly emojis could be deactivated, at least in a code block ...)
×
×
  • Create New...