Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    emard
    @emard
    Ahaaaa, its sprite number limit. Maybe bullets can be only a line drawn by head pixel and deleted by tail pixel (like stars background) but ok it's a silly suggestion, game is good
    Rob S
    @rob-ng15
    Thank you! I should be able to speed up the bullet, I'll have a look tomorrow. It takes a while to build, yosys takes a while!
    Simon Thornington
    @sthornington
    @emard very cool that scopeio can do internal wires, that's what I want. I will try it, but I have never used the diamond toolchain so that will take some work. I guess it also is too much for vhdl2verilog ? is there a build of diamond for osx ?
    emard
    @emard
    I have ready linux scripts so you just set path to diamond tools and type make, but for osx first diamond must be either installed or running in some vm
    Goran Mahovlic
    @goran-mahovlic
    we already have different version of diamond that runs inside docker
    I am using emard diamond makefile
    and this sudo xhost local:root export ETHMAC=xx:xx:xx:xx:xx:xx docker run -it --env="DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" -v -v /localfolder/FPGA:/fpga -e LM_LICENSE_FILE=/fpga/license.dat --mac-address=$ETHMAC --privileged --ipc host -v /dev/bus/usb/:/dev/bus/usb/ dok3r/diamond:v3.7 export containerId=$(docker ps -l -q)
    xhost is only if I need GUI
    Goran Mahovlic
    @goran-mahovlic
    ETHMAC is MAC i have in dinamond license files that needs to be available
    Lawrie Griffiths
    @lawrie
    On my Mac Plus, it does not look too hard to get the keyboard working. I have hand-converted the Mister SystemVerilog PS/2 ketboard code that yosys did not handle. Getting the PS/2 mouse working looks a bit harder. Three of the mouse pins are connected to the VIA chip, and two to the Zilog SCC serial controller. I don't currently understand how it works. I am not that interested in implementing the serial ports yet, so I just want an SCC implementation that works for the mouse. However, I cannot use the keyboard and mouse until the OS is loaded, and I need floppy disk support for that.
    Lawrie Griffiths
    @lawrie
    On the Mac, the rom just contains start-up code and device drivers. On the QL, it contained the whole operating system. The biggest part of Mac Plus rom seems to be the file system implementation.
    emard
    @emard
    I had similar situation with ORAO, system works up to some point but no tape loading. Then I used emulator to create RAM image, patched ROM to restore registers and jump to image. Could get some early results maybe
    Rob S
    @rob-ng15
    @emard, I've made changes to the asteroids game for you, the bullets are faster now, but so are those from the UFO! Uploaded onto github.
    emard
    @emard
    @rob-ng15 That's it! bullets fly well now! Can you also make 12F version, it if fits?
    Rob S
    @rob-ng15
    I don't know what changes will be required, but it uses 96% of the block ram, so possibly too big?
    emard
    @emard
    OK, then it's too big, don't optimize. I thought only to replace 85F with 12F and try to compile and if it doesn't fit, that's the reason why 85F is better :)
    Rob S
    @rob-ng15
    Yeah the 640x480 bitmap is in block ram, admittedly only used for the Risc-V logo and the lives remaining in this game.
    I'll write up some documentation as there is quite a bit to the display stuff, including a basic GPU that can draw points, lines, rectangles, circles and triangles, the background layer, scrollable tilemap layer, two sprite layers with 13 sprites each, a character map, and a small terminal style overlay. Plus basic audio, UART, LEDs and button input. There is documentation in the j1eforth project it was developed in, but there are some changes now, especially to the sprite layer to move the bullets faster!
    emard
    @emard
    Great! 85F with code generators like silice, saxonsoc, nmigen etc has the luxury to make things this way. Using lot of BRAM is "cleaner" and more readable as source than SDRAM driver, which would surely provide any resolution and 200 sprites, but for asterioids game, it is fine how it is done with BRAM.
    Rob S
    @rob-ng15
    Yeah, I'm a novice at this, sdram is on my list of to-dos, along with sdcard. Then I can load programs into sdram from the sdcard.
    Paul Ruiz
    @pnru_gitlab

    @lawrie If you have a working implementation on Mister to guide you, maybe it is not all that difficult to add mouse and disk.

    The wikipedia page for the original Mac's describes the mouse, including its wiring across chips:
    https://en.wikipedia.org/wiki/Macintosh_128K/512K_technical_details#Mouse

    The disk hardware is essentially the same as the disk hardware on an Apple ][:
    https://en.wikipedia.org/wiki/Integrated_Woz_Machine
    http://www.brutaldeluxe.fr/documentation/iwm/apple2_IWM_Spec_Rev19_1982.pdf
    I think once the registers that the controller presents to the software are known, doing a verilog replacement can be similar to what you did for the QL.

    Paul Ruiz
    @pnru_gitlab

    On the Mac, the rom just contains start-up code and device drivers. On the QL, it contained the whole operating system. The biggest part of Mac Plus rom seems to be the file system implementation.

    I'm not sure that is correct. See below link for some details:
    https://macgui.com/news/article.php?t=493

    Lawrie Griffiths
    @lawrie
    Yes, that is the rom listing I am using.
    Lawrie Griffiths
    @lawrie
    The rom may have a bit more than I said, but all the control is from the System and Finder files on the system floppy disk.
    I might be able to move the mouse around the screen without the system disk, but there would be no menus and nothing to type into.
    That IWM spec is also the one I posted a link to above.
    It is all doable but the SCC is a bit complex, and the floppy control is even more complex.
    Thanks for all the links. There were one or two that I hadn't seen.
    Lawrie Griffiths
    @lawrie
    I think there are a couple of options for the floppy disk controller. I can stick with the format that Mister uses that is very close to what is on the disks and uses the 6 2 encoding, or I could go for a simpler mapping.
    I think there are also options for how to do the mouse.
    The Mister implementation sticks fairly close to the original hardware. I only really want something as simple as possible that will execute the rom.
    Paul Ruiz
    @pnru_gitlab
    For the mouse, only a minimal part of the SCC needs implementing. The way I understand, all it does for the mouse is to provide access to the X1 and Y1 signals and generating an interrupt on whenever either one changes state. The ROM will read the X1 and Y1 signals, and the X2, Y2 signals from the VIA (along with the mouse button state) and figure out if the mouse moved up, down, left or right. Does Mister include code to convert PS/2 mouse packets to X1/2 and Y1/2 signals?
    Lawrie Griffiths
    @lawrie
    Yes, I was just looking at that.
    The Mister PS/2 code produces a 25-bit packet which I assume contains the x and y values.
    They are then converted back to the x1, x2, y1 and y2 signals.
    As you say, I only need a very small part of the SCC, but the Mister SCC code was not easy to understand.
    Paul Ruiz
    @pnru_gitlab

    OK, that is good to know: the Blit terminal also uses 90 deg phased signals to read its mouse - I can reuse that conversion.

    For the mouse part of the SCC, I would just implement a single register with the two bits and an interrupt circuit. Sounds like a dozen lines of code.

    Lawrie Griffiths
    @lawrie
    Yes that sounds right.
    Paul Ruiz
    @pnru_gitlab
    Not sure how the interrupt gets reset - maybe reading the register does that as a side effect.
    Lawrie Griffiths
    @lawrie
    Presumably when I get a packet from the ps/2 mouse, I just work out the direction and if x or y has changed, set the 4 bits (x1, x2, y1, y2) and trigger the SCC interrupt.
    Paul Ruiz
    @pnru_gitlab
    Yes, that sounds right :^)
    For the disk, what is the format of the images? If those contain 6-2 encoded bytes, sticking with that format will be the easiest. I think the ROM will basically manipulate the DIR and STEP signals to move to a track and then read or write the track in a tight loop. I suppose the stuff to control motor speed, write underflow, etc. can all be ignored. The verilog would read/write a buffer, and signal the ESP32 to fill/read the buffer (much like the QL design).
    Lawrie Griffiths
    @lawrie
    The other issue is how to support two floppy disks from the ESP32 side.
    I will start with one, but a practical system needs both the internal and external floppy.
    I am not planning on doing the scsi hard disk controller.
    Lawrie Griffiths
    @lawrie
    I think the Mister code downloads the whole floppy image into SDRAM.