• (disco)

    Of course it's clear that all those forms were filled out on a wooden table.

  • (disco) in reply to Yamikuronue
    Yamikuronue:
    As a QA person, I can't wrap my head around the idea that devs know what the fuck they intended to code before they sat at a keyboard and drooled all over it. :trolleybus:

    me haz water tight drool proof key board!

    btw, http://ars.userfriendly.org/cartoons/?id=19990815

  • (disco)

    29 posts were split to a new topic: :fire: :sleeping: This argument is stupid

  • (disco) in reply to HardwareGeek

    Females or managers.

  • (disco) in reply to Tsaukpaetra
    Tsaukpaetra:
    For example, anyone want to ask me about my attempt for simulating Windows on the Ti-83+ using the on-board TI-BASIC interpreter?

    "Attempt?" Does that mean you couldn't slow it down enough to run as fast as Windows?

  • (disco) in reply to Tsaukpaetra
    Tsaukpaetra:
    For example, anyone want to ask me about my attempt for simulating Windows on the Ti-83+ using the on-board TI-BASIC interpreter?

    TI-BASIC? That slow ass shit? Please. With the right tools, one could load and run native Z80 assembly on those calculators. I used to have a lot of fun doing that when I was 16, back when I should have been learning social skills...

  • (disco) in reply to Groaner
    Groaner:
    TI-BASIC? That slow ass shit?

    To be fair, the BASIC on their calculators was not as slow-ass as the BASIC on their personal computers.

    I would love to read a WTF collection from the people actually involved in the process of implementing a BASIC interpreter on top of a VM interpreter running on a TMS9900 with only 256 bytes of directly addressable RAM.

    If I recall correctly, the TI99/4A's Graphics Programming Language virtual machine interpreter had to do all access to the main RAM array - virtual instruction fetch as well as all virtual data memory access - by waiting in a software loop for a vertical or horizontal video refresh, then writing the address to a memory-mapped port and reading/writing the data from/to another. Given that architecture, it should have been no surprise to find that the BASIC interpreter (written in GPL code) ended up running at around ten statements per second at best.

    Which was a real pity. The TMS9900 was actually quite a sweet little CPU, and if only the supporting hardware design had not been done by architecture astronauts, the 99/4A could easily have been a far more capable machine than it ended up as.

  • (disco) in reply to flabdablet
    flabdablet:
    To be fair, the BASIC on their calculators was not as slow-ass as the BASIC on their personal computers.

    If measured by its intended application of being a language for mathematical calculations, then TI-BASIC succeeded. For being a language for performant applications, it falls flat, but TI made it easy to run assembly programs, and one can do a lot with a 6MHz Z80. Some people were able to make simple platformer games.

    flabdablet:
    I would love to read a WTF collection from the people actually involved in the process of implementing a BASIC interpreter on top of a VM interpreter running on a TMS9900 with only 256 bytes of directly addressable RAM.

    That's... special.

    flabdablet:
    If I recall correctly, the TI99/4A's Graphics Programming Language virtual machine interpreter had to do all access to the main RAM array - virtual instruction fetch as well as all virtual data memory access - by waiting in a software loop for a vertical or horizontal video refresh, then writing the address to a memory-mapped port and reading/writing the data from/to another. Given that architecture, it should have been no surprise to find that the BASIC interpreter (written in GPL code) ended up running at around ten statements per second at best.

    Software rendering on tiny monochrome screens ought to be plausible for even that CPU. Shame that they had to put in so many layers of abstraction.

    I seem to remember the TI-83 requiring something similar - you had to out to an I/O port to request/perform updates to the video buffer. The TI-86 simplified that by giving direct, unrestricted access to the video buffer itself, much as how the 0xA0000-0xAFFFF range is reserved in the IBM PC.

  • (disco) in reply to Groaner
    Groaner:
    With the right tools, one could load and run native Z80 assembly on those calculators.

    Yeah, and I had said tools, but not enough drive to actually do anything in it. For whatever reason, Assembly was scary to me at the time. No idea why, especially as I had quite a bit greater memory and simulation capacity to prepare coding...

  • (disco) in reply to Groaner
    Groaner:
    That's... special.

    To be fair, the TMS9900 did run best with fast static 16-bit RAM (it used a window into RAM the way most of its contemporaries used registers) and that's always going to cost more than 8-bit DRAM for any given capacity. But even a TMS9900 design somewhat crippled by using DRAM instead of static would have performed better than the soft VM bodge they actually implemented. After all, the contemporary Apple II ran a comparably capable BASIC at ten times the speed, on comparably capable DRAM, using an 8-bit CPU that also relied heavily on using RAM as pseudo-registers (6502).

    Really, the only reason that the TI99/4 could achieve anything useful was that its video display controller had some quite useful inbuilt sprite support and it also had an audio processor that was quite advanced for the time. The way TI went about wiring all these really nice chips together, though? Utterly half-assed.

    The Wikipedia article is decent.

  • (disco) in reply to Gaska

    What? That guy who was talking about his tile fetish on 4chan is here?! :underage:

  • (disco) in reply to Gaska

    There was a clear set of requirements in this case: reimplement what was already being done. Just faster. Without the seduction of whizzbangery leading to all sorts of scope creep, things went to plan.

  • (disco) in reply to Watson

    From my experience, whenever the task is "reimplement something", it actually means "make it better, faster, stronger, with this and this and this new feature, and oh maybe that one too".

  • (disco) in reply to Tsaukpaetra
    Tsaukpaetra:
    For example, anyone want to ask me about my attempt for simulating Windows on the Ti-83+ using the on-board TI-BASIC interpreter?
    No, not really.
  • (disco) in reply to Gaska

    "... And don't forget the features we think of and/or remember telling you two dayshours before rollout."

  • (disco) in reply to Groaner
    Groaner:
    The TI-86 simplified that by giving direct, unrestricted access to the video buffer itself, much as how the 0xA0000-0xAFFFF range is reserved in the IBM PC.

    IIRC, 0xB0000–0xBFFFF was also reserved, but that was for text mode and not graphics. I don't remember the exact organisation of that space; by the point I would have started hacking around with it, using a library to hide the details was becoming far more relevant.

  • (disco) in reply to dkf

    For monochrome text, the starting address was 0xB0000. For color text, the starting address of page 0 was 0xB8000, and pages 1-3 were aligned at 4096-byte offsets. Text memory buffers contained 2 bytes per character: 1 byte for the character code, and 1 byte for the color information.

  • (disco)

    Yay! This reminds me of my self. Except I used Access97 and later on, the shit I made with LAMP did actually work.

  • (disco) in reply to dkf
    dkf:
    IIRC, 0xB0000–0xBFFFF was also reserved, but that was for text mode and not graphics.

    You are correct.

    dkf:
    I don't remember the exact organisation of that space; by the point I would have started hacking around with it, using a library to hide the details was becoming far more relevant.

    I seem to remember that the 80x25 and 40x25 CGA text modes start at 0xB8000 and the lower ranges were reserved for monochrome graphics cards. Each character was represented by two bytes, one for the actual ASCII code and the other for the foreground color, background color, and whether the text was blinking or not. This goes into more detail about all the old modes.

    Direct access to the video buffers was straightforward if you were working with a linear mapped video mode that fit in the allocated region like mode 0x13 (320x200x8bpp), but the planar and banked video modes are a gigantic pain*.

    *I have to talk to a plane select masking register via an I/O port to control which subset of a possible quartet of pixels the next byte I write to video memory sets? Have fun implementing a transparent sprite renderer!

  • (disco) in reply to HardwareGeek

    TIL marriage is like playing Thermonuclear War.

  • (disco) in reply to OffByOne

    What, the only winning move is not to play?

  • (disco) in reply to Arantor

    That's The Reference™.

  • (disco) in reply to Groaner
    Groaner:
    I seem to remember that the 80x25 and 40x25 CGA text modes start at 0xB8000 and the lower ranges were reserved for monochrome graphics cards. Each character was represented by two bytes, one for the actual ASCII code and the other for the foreground color, background color, and whether the text was blinking or not.

    The EGA and VGA text mode memory starts at the same address.

    The Hercules Graphics Card on the other hand had its first page at 0xB000 and its second page at 0xB8000.

    Copy-pasta from Wikipedia, since the Disco-oneboxer doesn't know what to do with page fragments:

    The Hercules card supported two graphic pages, one at address B0000h and one at address B8000h. The second page could be enabled or disabled by software. When it was disabled, the addresses used by the card did not overlap with those used by color adapters such as CGA or VGA. This made dual-screen operation possible simply through installation of a Hercules card next to, for instance, a VGA adapter.

    The same 2 byte per character memory layout was used, although instead of color attributes (that's kind of hard to do on a monochrome display), the second byte controlled attributes like bold, blinking, reverse video, ….

  • (disco) in reply to Groaner
    Groaner:
    Direct access to the video buffers was straightforward if you were working with a linear mapped video mode that fit in the allocated region like mode 0x13 (320x200x8bpp), but the planar and banked video modes are a gigantic pain*.

    Having worked for companies that made VGA-compatible chips, I can tell you it was a gigantic pain from the hardware side, too. You had to include all those backward-compatible modes, too, including weird behavior that would be considered a bug, except IBM's hardware did it that way. Having once managed to create a chip that reproduced VGA's quirky behavior, the design could never, ever be improved; too risky.

  • (disco) in reply to OffByOne
    OffByOne:
    The same 2 byte per character memory layout was used, although instead of color attributes (that's kind of hard to do on a monochrome display), the second byte controlled attributes like bold, blinking, reverse video, ….

    And underline. Don't forget underline.

  • (disco) in reply to anotherusername
    anotherusername:
    OffByOne:
    the second byte controlled attributes like bold, blinking, reverse video, .

    And underline. Don't forget underline.

    I didn't, I abbreviated it to … in my post.

  • (disco) in reply to OffByOne

    That's an abbreviation for ellipsis, not underline. :stuck_out_tongue:

Leave a comment on “Foxxy Professionalism”

Log In or post as a guest

Replying to comment #:

« Return to Article