Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by toarnold

  1. Done! Take a look here: https://github.com/toarnold/jaglib Greetings -toarnold
  2. If I find time next weekend, I'll set up a github repository.
  3. @Luigi301 In case of -bjagsrv vlink uses a default linker script if nothing else is provided it looks like: SECTIONS { . = 0x4000; .text: { *(.text CODE text) } . = ALIGN(32); .data: { VBCC_CONSTRUCTORS *(.data DATA data) } . = ALIGN(32); .bss: { *(.bss BSS bss) *(COMMON) _BSS_END = ALIGN(32); } }; The _BSS_END symbol ist used by the vbcc vclib to determine free RAM for malloc/free operations. -toarnold
  4. This isn't the right place to discuss the pros and cons of docker. Use it or not. I never fogot the "old" ways, but for me docker is an additional benefit.
  5. @Orion_ This is the "modern" way of working. It has two advantages: You are not forced to mess up your pc with a bunch of development tools and the corresponding enviroment like ENV variables etc. All is ready configured in the docker. You can so easily use different versions side-by-side, 'cause everything is separated by docker. @JagChris I overlooked this. But the standard linker script used by vbcc jaguar config and vlink doesn't support this section. It must be defined by your own script. So the easiest way will be to remove the .68000 section in the gpu code. I will talk to Frank, so we can correct this in the next release maybe. -toarnold
  6. I guess you should remove the .68000 section, 'cause vasm doesn't support it. It will be handled as an unkown section, but vlink has no definition vor that section. Greetings -toarnold
  7. Hi rocky1138, attached is my modified version. I'm not sure if all dependencies are correct. Delete the content of the obj folder and all will build fine. The makefile will use the vasm/vlink in the docker container mentioned in the other thread. -toarnold sample.zip
  8. Hi rocky1138, vasm and vlink are dockerized in the above docker image!
  9. Put it here: gpu/gpu.s .long olp2set: .ds.l 1 ; GPU Code Parameter .text
  10. Hi rocky1138, it is diffcult without the whole source code ... But it seems you forgot a dependency obj/gpu.o: jaguar.inc $(ASGPU) $(ASGPUFLAGS) gpu.s -o obj/gpu.o You should add gpu.s, otherwise you will link against an old gpu.o obj/gpu.o: gpu.s jaguar.inc $(ASGPU) $(ASGPUFLAGS) gpu.s -o obj/gpu.o Seems to me, you have to do it with test.o, too. You can PM me the source code if you want. Appendix: I got it. 'Cause you are loading olp2set with the gpu it has to be long-word aligned. Take a look at your memory map (parameter -M for vlink). For me this variable was at a word-aligned adress. A .long and the canged link order will do the trick. Greetings -toarnold
  11. Hi rocky1138 You can dig into the container by docker run --rm -it toarnold/jaguarvbcc:0.9f sh In the folder /opt/jagdev/bin are the tools located. The vasm is compiled to support m68k with madmac and motorola syntax. Jagrisc supports madmac only. And yes, I use jagserver format, too.
  12. Hi ggn, I agree with you, but a big advantage for me is, that Frank is a german guy like me. So we can discuss some problems in our native tongue . ... and I'll get a response within 24hrs!
  13. Hi rock1138, no problem, but there is nothing special, because I copy the whole toolchain folder from my PC ... FROM alpine:3.6 ARG version RUN apk add --no-cache make libc6-compat nodejs nodejs-npm # copy files COPY version/ /opt/jagdev/ # Apply path changes ENV PATH="/opt/jagdev/bin:${PATH}" VBCC="/opt/jagdev" JVBCCVERSION=$version HOME=/tmp #default command CMD echo $JVBCCVERSION
  14. Hi rocky1138, I love vasm and vlink, because you will get a great support from Frank Wille who maintains this tools. But let's get down to brass tacks: On the first glance everything seems to be ok, but I suggest to change the link order: OBJ = obj/gpu.o obj/startup.o obj/testrgb.o obj/test.o Links the gpu obj at $4000. But the jagsrv structure assumes your CPU initialisation code at this address. Change the linking order to: OBJ = obj/startup.o obj/gpu.o obj/testrgb.o obj/test.o Hopefully it helps -toarnold
  15. Hi folks, Do you wish to start in jaguar coding? You don't like to configure a development chain? Here is a solution. Use Docker! Prerequsites: You need a Win 10 Pro/Enterprise 64 bit, a docker supported 64 bit linux (e.g. Ubuntu etc.) or a Mac. See here: https://www.docker.com/ You can find the vbcc jaguar docker image here: https://hub.docker.com/r/toarnold/jaguarvbcc/ A quick demo with three simple steps Clone the jag2048 (https://github.com/toarnold/jag2048.git) github repository (or download it as a zip file) Jump into the directory Execute the following command line Linux users type docker run --rm -v "$PWD":/usr/src/compile -w /usr/src/compile -u $(id -u $USER):$(id -g $USER) toarnold/jaguarvbcc:0.9f make Window users type docker run --rm -v "%cd%":/usr/src/compile -w /usr/src/compile toarnold/jaguarvbcc:0.9f make This will produce a jag2048.jag file in the current folder. Upload this with your skunkboard or start it in virtualjaguar! Greetings, toarnold
  16. Well done! Please let me give you a small suggestion. You define a STADDR but this address is never used. This can be done with parameter -Ttext $(STADDR) but this will be ignored by the linker, because you are using the jagsrv format. In this case you have to define your own linker script, otherwise vlink uses an interal linker script which looks like SECTIONS { . = 0x4000; .text: { *(.text CODE text) } . = ALIGN(32); .data: { VBCC_CONSTRUCTORS *(.data DATA data) } . = ALIGN(32); .bss: { *(.bss BSS bss) *(COMMON) _BSS_END = ALIGN(32); } }; In case your code should run in the rom area $80200 you can move the text segment. But be aware to move data and bss segment in the ram area $4000. Than pass this new linker script with parameter -T Greetings, toarnold
  17. If you are starting in jaguar development first you have to choose the right tool chain. "Right" in terms of what is your preferred way of programming. Personally I choose the vbcc/vasm/vlink tool chain. You have to invest a little bit to get it running, but all is well documented in the vbcc documentation. Starting from the current version, vbcc targets the Jaguar with the standard C library, so you could run the standard "Hello , world!" sample (you will find a million times in the internet) without changes.
  18. Hello, is someone out there who can tell me, why user ram starts at $4000? I think ram below $4000 is used by the boot rom, but after boot the cartridge takes places - what happens in this area than? Greetings, toarnold
  19. I think I got it. There is a WORD/DWORD missmatch in the wait-loops: move.l #timeout,d0 ... subq #1,d0 tst.l d0 bne .wait subq #1,d0 isn't qualified with a register size, so only WORD size is taken. Substitute with subq.l #1,d0 did the trick! I found this pattern four times. Here is my modified skunk.s. Hopefully you can approve my changes. Greetings, toarnold
  20. Hello friends, I have two questions: How I can test if a skunk board is present? Is there any "magic" word or version number in the skunk bios range ($800000 to $801FFF) I can check? How can I test if jcp is running in console mode? If I call skunkRESET this function seems never to return if I forget the jcp parameter -c. No timeout occurs. Thanks and greetings toarnold
  21. toarnold


    This is my second jaguar game. It is an absolutely nerd game called 2048. Most of you will know as a mobile phone game. But it is ported from javascript - take a look here: https://gabrielecirulli.github.io/2048/ Attached is a Visual Studio 2013 Solution. You will need vbcc/vasm68m/vasmjagrisc/vlink to compile. You can find a .bin, .coff and .rom executeable in the archive Have fun an merry Xmas - toarnold 2048.zip
  22. toarnold


    There are 100 levels. 50 symetric (the easy part) and 50 asymetric. 25 years ago I can't solve all levels, but today you can feed a multi-core CPU with this problems :-) - toarnold
  23. toarnold


    If somebody get into trouble solving a level: all levels are solveable, I can give you a hint. Stay tuned. Another small game is coming soon. - toarnold
  24. toarnold


    Today I'll provide my first ATARI Jaguar Game. It is a port of an ATARI XL game called "Gryzzles". It was released in the early 1988 in a german computer magazine called ComputerKontakt (CK 2/3 1988). I liked this game and I played it very often. After getting a skunkboard this game was my first project. So don't bother me It is written in plain C with a little help of M68k assembler, the Belboz HelloWorld sample and the Sinister Sound Module. Source code (Visual Studio 2013 Solution) is included. You will need vbcc/vasm/vlink and smac to compile. Load and run adress for gryzzles.bin is $4000 The original german game discription is included (gryyzles.txt). (I am not able to translate it) But I think you don't need a description. Solve every level in one move! Keypad: Title-Screen B: Toggle between normal or random game C: Toggle between master loop (all levels) or lower (level 1-50) or upper areas (level 51-100) Option: switch sound on or off A: start game Gameplay Option: switch sound on or off *: Destroy pyramid (restart level) #: Give up Hopefully this game will run on NTSC Jags, 'cause I only own a PAL model. Enjoy, toarnold GryzzlesJaguar.zip
  25. Hi JagChris, this pointed me in the right direction. I wrote scaled bitmaps has to be dphrase aligned, but this is wrong, they has to be qphrase aligend (32byte boundary). Now this sample works with vlink, too. THX toarnold
  • Create New...