Jump to content

JimmyDansbo

Members
  • Content Count

    103
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by JimmyDansbo

  1. curpos is a label, can you increment a label?
  2. I started out with the Philips G7000 (Philips Videopac G7000), also known as the Magnavox Odyssey 2. I think we had 5 or 6 game cartridges for it and my parents had to connect it to the family TV whenever we were allowed to play on it. Later we got the Amstrad CPC464 which is actually my favorite because it is the first computer that I was able to write programs on. It had the monochrome green monitor and built-in tape drive. I spent many hours typing in basic programs, debugging and testing them out, but as I could not read english and had no one to help, I never learned how to save my programs to tape. In the end, the CPC646 was swapped out for a C64 as that is what all the other kids had and for some reason the C64 games were not working on the CPC464 I continued doing basic programs on the C64 and I actually learned to save my programs to tape, and even floppy.
  3. You could also have a look at how the 74ls74 is built. It may very well be a better design. https://www.ti.com/lit/ds/symlink/sn74ls74a.pdf The 74ls74 seems to be edge triggered without using the strange NOT-NOT-NOT-AND circuit I have above.
  4. In theory, it should work. I have just tested in Logisim as well, both the buil-in d-latch and one made from NAND gates seems to be able to divide the clock signal. As StephenHorn says, ensure that your chip(s) can handle the signal they receive. (dig in to the datasheets).
  5. What kind of programs are you thinking of? I am in need of new programming ideas
  6. I would say that LSR is the more correct of the two. Depending on your assembler, both should work without issues, but if you look at the reference for the CPUs, LSR command only takes up 1 byte of memory where LSR ZP and LSR Absolute take up 2 and 3 bytes respectively. To me that indicates, that that the LSR A is just to make the commands look alike.
  7. ROM will not be open...
  8. Cool, do you have a code example?
  9. I agree. Now that some space has been freed, I will look into getting the byte_to_hex_ascii function back into the BASIC rom and I will tidy up the HEX$ and BIN$ functions as I had to jump through quite a lot of hoops to make the fit before.
  10. I believe I tried that without luck... ... Just tried it again, still no luck. in monitor.s: .export byte_to_hex_ascii in x16additions.s: .import byte_to_hex_ascii ... Still it does not recognize the name.
  11. Now that space is freed in the BASIC ROM page, I think it will actually be possible have the functions handle word values as well. Do you think it would be sufficient that HEX$ outputs a 4 byte string if the value is larger than 255 otherwise a 2 byte string? Or should it be something that you specify when calling i.e. something like HEX$(42, 1) returns 2A and HEX$(42, 2) returns 002A
  12. I don't think you can create Integer variables. They will always be floating point or strings. Your example would be String variable names are followd by a dollar sign. Of course you can not do counting on strings
  13. I managed to free up some space in the BASIC ROM page. https://github.com/JimmyDansbo/x16-rom/commit/a0470c136811ef56c6f3d5131bc9ffa1d254f9b6 @desertfish do you think we should try and go for handling word values as well as byte values?
  14. Yeah, it is a bit strange. You can read more about acme's handling of text (read conversion tables) here: https://sourceforge.net/p/acme-crossass/code-0/HEAD/tree/trunk/docs/AllPOs.txt#l165
  15. I have not done it personally, but my best bet is: Use !pet instead of !raw and only use lowercase letter in the names in the source code Ensure all your .bin files are all capital letters (i.e. TILES.BIN ...) It has something to do with the way acme converts ascii to petscii. When you use the !pet keyword, acme will subtract 32 from all bytes, meaning that 'a' ascii val 97 becomes 'A' ascii and petscii val 65. Next issue is that mac and linux (and the web emulator) are case sensitive so all your filenames need to use capital letters in order for your program to load them.
  16. Argh, I just tried compiling the new ROM with the PRERELEASE_VERSION set and then it is too large to fit in the 16KB ROM page
  17. @Johan Kårlin which version of acme are you using? Have you noticed that 0.97 was released back in august? https://sourceforge.net/projects/acme-crossass/files/win32/ (it supports the WAI opcode )
  18. I believe it is because the assets needs to be renamed to use all capital letters. At least, that solved it when I downloaded the game to try it out
  19. Yes indeed. How did you figure out that it was necessary to do pla twice before jmp'ing to strlit ?
  20. Yes, I think there might be a single byte available after these functions have been added as they are now. Also, I think that the functions will mostly be used to show output of peeks and vpeeks which are only a single byte anyway ? I totally agree, but I don't know how to be able to use the name either. I am thinking that ROM maintainer will let us know if I do a pull request
  21. I have now implemented both HEX$ and BIN$ and there is NO more room in the 16KB BASIC ROM page. I have had to change the functions to only accept a single byte and I have removed any preceding characters ('$' and '%'). Also it was necessary to to actually use the byte_to_hex_ascii function from the MONITOR code to make the functions fit in BASIC ROM. Please have a look and let me know if there is anything that should be changed or improved. Otherwise I will do a pull request against the official branch.
  22. If you look close to the top of the x16additions.s file https://github.com/JimmyDansbo/x16-rom/blob/1ab984f18aa5068af6be5368a997810fa1a4e666/basic/x16additions.s#L53 You can see how it goes about calling the monitor from BASIC. When the ROM is compiled, the monitor.sym file tells us that the byte_to_hex_ascii function has address $C829 so what we can do is this: I have tested it and it does work, however I think it adds a lot of overhead and if the code in monitor is changed, our $C829 constant needs to be changed.
  23. @desertfish That is great, I will look into if it is possible to just jump to the monitor code even though it is in another bank. Thanks
  24. Yeah, I have been looking at CHR$, STR$, LEFT$, RIGHT$ and MID$ I still can not get my head around how a string gets allocated, populated and returned correctly. The way it is done in CHR$ seems fairly simple, but when I try to allocate space for more than 1 byte, I get a type mismatch
×
×
  • Create New...

Important Information

Please review our Terms of Use