Jump to content

JimmyDansbo

Members
  • Content Count

    136
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by JimmyDansbo

  1. I am thinking that the answer is: You Can't When that is said, you could overwrite F800 and then just do a reset when your software is done, that way the character map will be reloaded.
  2. JimmyDansbo

    IRClock

    Version 1.0.0

    1 download

    IRClock shows a digital clock in the upper right corner of the screen. This way it is possible to keep an eye on the clock even while being productive on the Commander X16. The program copies it self into golden RAM, starting at $0400 and takes up a total of 195 bytes. After initialization, the program does not need any of the memory usually used for BASIC and can be overwritten. When the program is running, the current hour, minute and second can be poked into addresses $400, $401 and $402 respectively. The values must be BCD encoded which essentially means, just poke them in as hexadecimal values i.e. 11:04 would be poke'd in like this: Result is immediately visible.
  3. IRClock View File IRClock shows a digital clock in the upper right corner of the screen. This way it is possible to keep an eye on the clock even while being productive on the Commander X16. The program copies it self into golden RAM, starting at $0400 and takes up a total of 195 bytes. After initialization, the program does not need any of the memory usually used for BASIC and can be overwritten. When the program is running, the current hour, minute and second can be poked into addresses $400, $401 and $402 respectively. The values must be BCD encoded which essentially means, just poke them in as hexadecimal values i.e. 11:04 would be poke'd in like this: Result is immediately visible. Souce can be found here: https://github.com/JimmyDansbo/cx16stuff/blob/master/irclock.asm Submitter JimmyDansbo Submitted 01/14/21 Category Misc Apps
  4. There is a set of vectors that various I/O routines use, between the hardware stack at $01xx and the Golden RAM at $0400-$07FF. As I did not previously know of these vectors, I went hunting and found this... I believe that the Commodore 64 vectors are as follows (and Commander X16 seems to be the same): $0314-$0315 788-789 Execution address of interrupt service routine. Default: $EA31. $0316-$0317 790-791 Execution address of BRK service routine. Default: $FE66. $0318-$0319 792-793 Execution address of non-maskable interrupt service routine. Default: $FE47. $031A-$031B 794-795 Execution address of OPEN, routine opening files. Default: $F34A. $031C-$031D 796-797 Execution address of CLOSE, routine closing files. Default: $F291. $031E-$031F 798-799 Execution address of CHKIN, routine defining file as default input. Default: $F20E. $0320-$0321 800-801 Execution address of CHKOUT, routine defining file as default output. Default: $F250. $0322-$0323 802-803 Execution address of CLRCHN, routine initializating input/output. Default: $F333. $0324-$0325 804-805 Execution address of CHRIN, data input routine, except for keyboard and RS232 input. Default: $F157. $0326-$0327 806-807 Execution address of CHROUT, general purpose data output routine. Default: $F1CA. $0328-$0329 808-809 Execution address of STOP, routine checking the status of Stop key indicator, at memory address $0091. Default: $F6ED. $032A-$032B 810-811 Execution address of GETIN, general purpose data input routine. Default: $F13E. $032C-$032D 812-813 Execution address of CLALL, routine initializing input/output and clearing all file assignment tables. Default: $F32F. $032E-$032F 814-815 Unused. Default: $FE66. $0330-$0331 816-817 Execution address of LOAD, routine loading files. Default: $F4A5. $0332-$0333 818-819 Execution address of SAVE, routine saving files. Default: $F5ED. Information taken from https://sta.c64.org/cbm64mem.html
  5. My guess is that you are seeing some of the KERNALs interrupt handler. I recommend that you insert a breakpoint (.byte $db) in your code shortly before your suspect it fails and try to step through the code to see if you can catch the error.
  6. Ben Eater talks about DMA and the RDY pin on the 6502 in this video: From around 6:30 he talks about how his video card "pauses" the CPU to read the memory. I am pretty sure that VERA will never use DMA as it has it's own memory. Other peripherals might use DMA, but I think that IRQ and/or polling will be a lot easier.
  7. This page is the official repository for all information regarding the CX16, all you will find on the FB page is "old" information and links to the same stuff as can be found here. When that is said, I did a quick search on the group for ESP32 and found a post by @Lorin Millsap which I will paste here: Ok. So I talked with our KERNEL guy and we have some conclusions and while these things could change these should be the way things will work and should establish some goals and guidelines regarding networking. The default device ID#2 will be the on board RS232 which is handled by the KERNEL and uses a few of the user port pins just like the C64 did. It remains to be seen. In theory you can get good speeds out of it. However this does not conflict with the development of an IEC network device. So this is a call for you the community to get involved on making said device and I will simply outline a few requests on how it works and features it should definitely have. 1: It needs to be seen as a disk drive with all the standard features you find on the SD2IEC. So that means time/date stamping, subdirectories, etc. it does not need D64 or other disk image support as those are more C64 related. 2: It needs to be able to support legacy IEC and JiffyDOS. This way it can be used on all Commodore 8 bit systems. 3: It needs to be able to understand AT Hayes type commands. 4: It needs to be able to connect to modern FTP file servers or something similar and treat them as drives. 5: It must be able to connect to BBS servers. 6: This device needs to handle all actual secure protocols such that the software running in the system doesn’t have to deal with them. Suggestions: It has been mentioned that the ESP32 would be suitable, but we leave that to you guys. I suggest that its default device ID be 12 but that it can obviously be temporarily or permanently changed to any valid ID. Also it wouldn’t hurt if it’s designed such that you can send data and instructions to it via RS232. As for development, you don’t need our system to be ready yet. It this works on a C64 it will work on our system. There are numerous open source projects that could make a good starting point. Edit: There seems to be some confusion as to what the point of such a device is. So let me clarify. If I want to connect to a terminal it’s not as simple as sending a few bytes to a device. You have to maintain and keep track of a lot of seemingly ever changing security protocols. BBS services are about the simplest things to connect to as they are very primitive. So here’s a real world situation and use case. You could set up a simple server on your local network and have all your files stored on a modern computer and access them over your local network. But you could access a server anywhere. You could of course do BBS systems. And maybe that’s all people want and if that’s the case, then we can just use our built in software RS-232 and interface that to already existing WiModem devices. But what I’m proposing adds an abstraction layer that handles a lot of the overhead seamlessly and would allow you to connect to file servers with modern security. If it is easy to set up servers then that’s a strong basis to make an online support system for the platform using common software. To set this device up you just send a few commands. As always relevant questions and ideas are welcome. I’m sure you’ll have many. Major important stuff will be added to this post. Note that this comment is from the 28th of august 2019 Most group administrators are on American time so you can probably expect to be let in to the group some time this afternoon.
  8. Yes I am, have been since it started
  9. I am in no way able to help out with physical production, but I might be able to help out with writing software. Btw, I am from Denmark
  10. Quote from emulator readme: "Images must be greater than 32 MB in size and contain an MBR partition table and a FAT32 filesystem" You can not just format an image file, you do need to partition it.
  11. Have a look at the Readme for the emulator: https://github.com/commanderx16/x16-emulator#sd-card-images edit: It seems the link I have provided does not actually go to the SD card section of the readme, you have to scroll down and find it your self.
  12. I was playing around with the -ram option for the emulator. It seems that it can only be used with the following values: 8, 16, 32, 64, 128, 256, 512, 1024, 2048 I dived into debugging a call to to RAMTAS and found that one of the functions it performs is to figure out how much memory is available. It does this by "walking" a bit through RAM BANK selector i.e. VIA#1 Port A. It checks memory like this: As can be seen from above, the function tests if a RAM bank is mirrored in order to figure out how many RAM banks are available. It seems the RAMTAS function needs to be re-written in order to be able to handle that memory is not mirrored. As RAMTAS is a function from the C64 KERNAL, I expect it to be rewritten to handle the fact that missing memory is not mirrored. Since MEMTOP relies on the values provided by RAMTAS, do we need anything else to tell us how much memory is in the system? When a physical system arrives, it might be good to have some software that can actually test the banked memory, but for that I have submitted a fast RAM tester here:
  13. Version 0.1b

    13 downloads

    While waiting for a release of actual hardware, I thought it might be a good thing to have some software to test the memory in the banked area. I stumpled upon an old article about a fast memory test procedure and created this small program to test alle available memory banks except bank#0. Be warned, this is a destructive test, but it only works on memory area $A000-$BFFF and only on bank 1+. You can find the original article here: https://cx16.dk/fastramtest/
  14. Fast RAM test View File While waiting for a release of actual hardware, I thought it might be a good thing to have some software to test the memory in the banked area. I stumpled upon an old article about a fast memory test procedure and created this small program to test alle available memory banks except bank#0. Be warned, this is a destructive test, but it only works on memory area $A000-$BFFF and only on bank 1+. You can find the original article here: https://cx16.dk/fastramtest/ Submitter JimmyDansbo Submitted 01/03/21 Category Misc Apps  
  15. Yeah, hopefully the macro's will eventually mature a bit more in the Acme assembler.
  16. What I have done in the past is add an optional parameter to my ACME macros to indicate if the variable is an absolute or an indirect, like this. You still have to write separate macro's to handle the different scenarios, but as a macro with an optional parameter can use the macro without the optional parameter, you can just "add-on" the needed code to handle the optional parameters. For a few more examples of macro's with optional parameters, have a look at the VERA_SET_ADDR macro in my VERA include file: https://github.com/JimmyDansbo/cx16stuff/blob/master/vera0.9.inc Another way of doing it could be:
  17. @Massyn I borrowed your gist and rewrote it to acme. I also created code to clear the screen and load all of the 64 characters defined. https://gist.github.com/JimmyDansbo/49ea401a0e5cc0b77c9acc45399ea416
  18. Have a look at @DusanStrakl's excellent post about sprites in assembler: https://www.8bitcoding.com/p/sprites-in-assembly-i-setup.html It will tell you where sprites are located and how to use them. I do not think that you can use the mouse without the coordinates being updated in the sprite data.
  19. The way you have set up VERA means that the byte at VERA Address: $00000 decides which character to display at the top left corner of the screen. The byte at VERA address $00001 decides what colors are used for the character in the top left corner. The next two bytes in VERA are for the next byte on the line and so on. This means that each character on screen uses 2 bytes of VERA memory, 1 for the character it self and 1 for the colors. For the color-byte, high nibble is background color and low nibble is text-color. Note: VERA_ADDR_MID is used to address the lines on the screen: 0-59 corresponds to the visible lines on the screen. VERA_ADDR_LOW is used to address the characters/columns on a line. As 2 bytes are used for each character, 0-159 is used. If you want a "clean" screen, you should clear out the VERA memory with something like: on each "line" of VERA. This will also mean that you have pre-set the color of each character to white on black and you can the just write characters to every other byte like the original print_str function does. Come to think of it, the VERA documentation is probably better at explaining the memory layout than I am: https://github.com/commanderx16/x16-docs/blob/master/VERA Programmer's Reference.md#tile-mode-1-bpp-16-color-text-mode
  20. I think you are using OLD documentation for VERA. Please ensure that you are using the latest: https://github.com/commanderx16/x16-docs/blob/master/VERA Programmer's Reference.md DC_VIDEO, HSCALE and VSCALE are ports directly in the CPU addresse range.
  21. I created a gist, as simple as possible to show how to write text using VERA. https://gist.github.com/JimmyDansbo/3b1c1b0db1cda305361b35e2c68095ab
  22. I have been programming as a hobby for many years, but I startet learning assembly for the 6502 about a year ago. I wrote a small description of my own attempts and frustrations. I have then been following people like SlithyMatt, DusanStrakl and Johan Kårlin, reading their source code and guides as well as reading through both the Commander X16 Programmer's Reference Guide and VERA Programmer's Reference many many times. I especially have a hard time getting my head around the addressing in VERA when not all bits are used, like in the sprite attributes.
  23. wow, Hugo is pretty demanding Dusan, do you have a tutorial on loading .bin files as well? Otherwise, Hugo, have a look at this, it might help explain the missing part: https://cx16.dk/png2bin/ Be sure to follow the link to the example: https://gist.github.com/JimmyDansbo/f955378ee4f1087c2c286fcd6956e223 and read the comment I added
×
×
  • Create New...

Important Information

Please review our Terms of Use