-
Content Count
459 -
Joined
-
Last visited
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by Dmitry
-
Thanks for trying to help! Maybe we can figure something out, but it'll take a bit....as at this moment, I have no idea what you are saying. The MONITOR? button in the flasher? What do those words mean? What I have is a 1200XL (expanded, but I have turned off the rapidus), and a stock 130XE (also using to test, in case it helps). And I have a FujiNet cartridge that I bought from one of the retailers. After I started running into problems, I went ahead and turned on spartdosX in the U1MB on the 1200xL, booted to SDX. Then, even though I have no peripherals attached, I can see the FujiNet utilities in D1: As mentioned in previous posts, I tried various utilities, but they tend to lock up, after using the computer for a couple minutes. I tried to create a disk, not knowing if it is correct syntax or not, but as follows: fnew.com 3,3,1,test.atr. Anyway, that just causes a lockup. As for BBS, I tried both on a 130XE (stock) and the 1200XL, and at different baud rates, and about 4 different BBS listed. It would be odd to include them for demo purposes if they never work at all. I'm assuming this list was curated and is an example of a working one, but if not, that's good to know, is there any BBS to try?
-
From SpartaDosX, FLD.COM - run once, OK. Run second time: computer hangs. Reboot. Run fld.com 3 times, OK. shows 2 disks, hit switch button, no sound try this: fnew.com 3,3,1,test.atr computer hangs cold start. type fld.com OK, type DIR F*.* - computer hangs This computer is working otherwise, so....any ideas?
-
I'm very excited to just have received a FujiNet. Now, it doesn't work. So, there is going to be some troubleshooting here. It goes through config and connects to wi-fi. It will download disks from TNFS. However, any attempt create a disk will not succeed. Also if I download disks and attempt to use them, like use BobTerm to connect to Alcatraz BBS - I it won't connect for more than 2 seconds, usually I see at. most a line or two, then the machine locks up and reboots. Also in the config menu, if I go to an empty slot and hit w or r, the machine immediately locks up. Even when loading another terminal like IceT, I've never successfully loaded that program - it tends to hang and reboot. A bum unit? Or this is the state of development so far? How are you using it as an ATR-loader? According to the quick start, the machine is suppose to speak to me (I have that set in the config) when I switch disks, but it never makes any noise. When I ask "how are you using it" - keep in mind you do not need to go into the standard spiel about reading the manual because I have done that - what I mean is the manual doesn't mention how you specifically create your own ATR or load them on the disk. If it is a matter of merely copying them, that simply doesn't work for me, at this stage. I go to an empty slot in config, and select enter and that does nothing. I used another computer to copy over ATR images, but that does nothing. I booted to SDX and looked at the included utilities and tried to use that to create a disk, but it also just says error. Any help would be appreciated...I don't know yet if I just got a non-working unit, or another problem. Could be anything...thanks!
-
So below, is the first screenshot of the Atari version. The man is a player - not complete yet, of course, I need to add his hands and water bucket. So far work has mostly been about making choices related to the development environment. I am using KickC and Assembler, basically in-line KickAssembler. I chose KickC, because CC65 wouldn't compile right on my Raspberry Pi - mostly compiled but had a weird memory error. Frankly I don't want to make this about my knowledge of Raspberry Pi. KickC installed without issue. On top of that I'm now doing a lot of development on my MacBook Air M1. Unfortunately, I got a lemon, and I'm going to the Apple store to replace it on Monday. The machine constantly reboots. Learning KickC has slowed things down at the start, but will eventually speed things up quite nicely. I am keeping it organized, and I will easily be able to support 20 levels, although the PC version only has 10 so far. I've got the tile loader - and already two levels on the A8 version. I have the main character 1 Player so far. It's going to use a second player for the bucket and balloon. There will be a lot of player and missile re-use in the game....so never mind all that, I'll discuss the strategy as more progress occurs. OK, I will try to limit updates...so next one will be after the man can fire the water balloons and put out a fire....frankly at some point I expect it to go 'fast', because the logic is already in the pc game, but we'll see if that ever holds true...so far it's been slooooow developing.
-
how can you create with kickc pm and move with the key.
Dmitry replied to funkheld's topic in Atari 5200 / 8-bit Programming
Oh good grief, after all this looking I finally see the issue......ack never mind....once again, haha... I was setting DMACTL in two places, I just couldn't see it....until now.... -
how can you create with kickc pm and move with the key.
Dmitry replied to funkheld's topic in Atari 5200 / 8-bit Programming
funkheld, did you ever get your question answered? I assume you probably already have since the question was a while ago. But anyway, just if anyone looking for kickC answers finds this thread in the future, I will share that even though I know how to set up PM in Basic and Assembly - therefore the links to documentation for Basic and Assembly would not have been helpful to me. Edit: but deleting the rest of this response, because I just finally traced down where my bug was, I was setting DMACTL twice, lol... -
This one seems like a bug. If I memcpy 40 * 21 - the program won't display the screen. But if I memcpy 40 * 19 - it will display but, it of course, is missing two lines I want to send. If I change it to two memcpy, 40 * 19 and 40 * 2 - the program won't display the screen. Even if there is some internal limit to memcpy, it is odd that it still doesn't work if split up. It will work by 40 * 18 and 40 * 2, but I shouldn't have to do that. Otherwise, I have at least set up the first screen, with DLI. Using KickC. test.c
-
I must have a bad ld file, I tried to create it earlier, it is borked. I removed it. Now everything works. yeah....finally, haha...
-
I did figure out I must use the "export" keyword to keep the variable in the asm file, even if not used. Which it does, and it appears to be OK, but something causes the program to crash. The program works with the charset copy. I comment that out, and then add the address directive and export keyword - it compiles, but the emulator crashes. #pragma target(atarixl) #pragma zp_reserve(0x00..0x7f) #pragma link("atarixlseg.ld") #pragma emulator("/Users/rdupuy/kickc/atari800") #include <atari-xl.h> #include <6502.h> #include <string.h> void main() { //Memory Map //Mode4 screeen does take 960 bytes (reserving 1k) char * const SCR1 = 0x4000; char * const SCR2 = 0x4400; char * const SCR3 = 0x4800; char * const SCR4 = 0x4C00; char * const SCR5 = 0x5000; char * const SCR6 = 0x5400; char * const SCR7 = 0x5800; char * const SCR8 = 0x5C00; //DL cannot cross 4k boundary, reserving 1k for each char * const DL1 = 0x6000; char * const DL2 = 0x6400; char * const DL3 = 0x6800; char * const DL4 = 0x6C00; //Characterset must be aligned along Page (256 bytes) char * const CHARSET1 = 0x7000; char * const CHBAS = 0x02F4; char * const CHBASE = 0xD409; *CHBAS = >CHARSET1; *CHBASE = >CHARSET1; //memcpy(CHARSET1, fontset, 16 * 21); SEI(); memcpy(SCR1, TEXT, 32 * 21); ANTIC->DMACTL = 0x21; // Set ANTIC Display List Pointer ANTIC->DLIST = DISPLAY_LIST; ANTIC->CHBASE = >CHARSET1; // Set colors GTIA->COLPF0 = 0xc8; GTIA->COLPF1 = 0x11; GTIA->COLPF2 = 0x28; GTIA->COLPF3 = 0xFF; for(;;) { } } __address(0x7000) export char fontset[21 * 16] = kickasm {{ .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 .byte $00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$01,$15 .byte $00,$00,$01,$05,$15,$55,$55,$55,$00,$10,$54,$54,$54,$54,$55,$55 .byte $01,$05,$05,$15,$15,$55,$55,$55,$40,$50,$54,$55,$55,$55,$55,$55 .byte $00,$00,$00,$00,$40,$41,$55,$55,$00,$00,$00,$00,$00,$50,$54,$55 .byte $54,$45,$54,$15,$01,$00,$00,$00,$55,$15,$45,$54,$45,$05,$00,$00 .byte $55,$55,$55,$11,$14,$05,$01,$00,$55,$55,$41,$15,$50,$01,$55,$00 .byte $55,$15,$51,$15,$55,$54,$41,$00,$55,$55,$55,$11,$44,$50,$40,$00 .byte $55,$55,$55,$54,$11,$45,$00,$00,$55,$51,$45,$14,$10,$00,$00,$00 .byte $C0,$FF,$EA,$EA,$EA,$EA,$EA,$FF,$03,$FF,$AB,$AB,$AB,$AB,$AB,$FF .byte $FF,$55,$55,$55,$55,$55,$55,$55,$5A,$5A,$5A,$58,$58,$58,$58,$58 .byte $A5,$A5,$A5,$05,$05,$F5,$F5,$F5,$58,$58,$5A,$5A,$58,$58,$5A,$5A .byte $F5,$F5,$A5,$A5,$F5,$F5,$A5,$A5,$55,$55,$55,$55,$55,$55,$55,$55 .byte $AA,$AA,$A5,$A5,$AA,$AA,$A5,$A5,$AA,$AA,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$AA,$AA,$A5,$A5,$96,$96,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$96,$96,$96,$96,$96,$96,$96,$AA .byte $00,$00,$00,$00,$00,$00,$55,$00,$05,$05,$15,$15,$54,$54,$54,$00 .byte $15,$15,$15,$15,$54,$54,$54,$00,$15,$15,$15,$15,$55,$55,$55,$00 .byte $15,$15,$15,$15,$15,$15,$15,$00,$15,$15,$15,$15,$45,$45,$45,$00 .byte $14,$14,$15,$15,$45,$45,$45,$00,$00,$00,$00,$00,$40,$40,$55,$00 .byte $00,$00,$00,$00,$00,$2A,$15,$15,$00,$00,$00,$00,$00,$AA,$55,$55 }}; char TEXT[] = "zzzzzz!\"zzzzzzzzzzzzzzzzzzzzzzzz" "zzz#$%&'()\"zzzzzzzzzzzzzzzzzzzzz" "zzz*+,-./01zzzzzzzzzzzzzzzzzzzzz" "zzzzzzzzzzzzz232323232323zzzzzzz" "zzzzzzzzzzzzz444444444444zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz56569:;95656zzzzzzz" "zzzzzzzzzzzzz78789<=97878zzzzzzz" "zzzzzzzzzzzzz99999>?99999zzzzzzz" "[email protected]" "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" "zzzzzzzHIJzHIJzHIJzHIJzHIJzHIJzz" "zzzzzzzKLMzKLMzKLMzKLMzKLMzKLMzz" ; char DISPLAY_LIST[] = { BLANK8, BLANK8, BLANK8, LMS|MODE4, 0x00, 0x40, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, JVB, <DISPLAY_LIST, >DISPLAY_LIST };
-
btw, I did change the charset area to 0x7000 that isn't a typo.
-
__address(0x2000) SPRITES[64*10]; Hey all, if anyone wants to help, I do appreciate it. I cannot get this to work for anything. But of course I do notice the example doesn't show it working. The example doesn't load any data. It just defines the address and does nothing else, that's why its so helpful to have full examples - because I want to load data directly to that address, and it just doesn't happen. As an experiment, I still split the characters into fontset and fontset2. The snippet below shows how the global variables are defined. Fontset2 goes magically somewhere, and I copy it into the characters area in main(). That works. Fontset, I use the address directive. That does nothing. Code snippet: __address(0x7000) char fontset[ 12 * 16] = kickasm {{ .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 .byte $00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$01,$15 .byte $00,$00,$01,$05,$15,$55,$55,$55,$00,$10,$54,$54,$54,$54,$55,$55 .byte $01,$05,$05,$15,$15,$55,$55,$55,$40,$50,$54,$55,$55,$55,$55,$55 .byte $00,$00,$00,$00,$40,$41,$55,$55,$00,$00,$00,$00,$00,$50,$54,$55 .byte $54,$45,$54,$15,$01,$00,$00,$00,$55,$15,$45,$54,$45,$05,$00,$00 .byte $55,$55,$55,$11,$14,$05,$01,$00,$55,$55,$41,$15,$50,$01,$55,$00 .byte $55,$15,$51,$15,$55,$54,$41,$00,$55,$55,$55,$11,$44,$50,$40,$00 .byte $55,$55,$55,$54,$11,$45,$00,$00,$55,$51,$45,$14,$10,$00,$00,$00 .byte $C0,$FF,$EA,$EA,$EA,$EA,$EA,$FF,$03,$FF,$AB,$AB,$AB,$AB,$AB,$FF .byte $FF,$55,$55,$55,$55,$55,$55,$55,$5A,$5A,$5A,$58,$58,$58,$58,$58 .byte $A5,$A5,$A5,$05,$05,$F5,$F5,$F5,$58,$58,$5A,$5A,$58,$58,$5A,$5A }}; char fontset2[] = kickasm {{ .byte $F5,$F5,$A5,$A5,$F5,$F5,$A5,$A5,$55,$55,$55,$55,$55,$55,$55,$55 .byte $AA,$AA,$A5,$A5,$AA,$AA,$A5,$A5,$AA,$AA,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$AA,$AA,$A5,$A5,$96,$96,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$96,$96,$96,$96,$96,$96,$96,$AA .byte $00,$00,$00,$00,$00,$00,$55,$00,$05,$05,$15,$15,$54,$54,$54,$00 .byte $15,$15,$15,$15,$54,$54,$54,$00,$15,$15,$15,$15,$55,$55,$55,$00 .byte $15,$15,$15,$15,$15,$15,$15,$00,$15,$15,$15,$15,$45,$45,$45,$00 .byte $14,$14,$15,$15,$45,$45,$45,$00,$00,$00,$00,$00,$40,$40,$55,$00 .byte $00,$00,$00,$00,$00,$2A,$15,$15,$00,$00,$00,$00,$00,$AA,$55,$55 .byte $FE }};
-
P.s. I understand in Assembler, including KickAssembler, that I would use a * directive to tell the assembler where to place output, e.g. *=$4000 “Data”. And I know that from reading the manual. However, I didn't label a memory area called Data in my program. I know of no reason why it's required, except I cannot remove it, or the compile fails.
-
Not to hijack the thread, but thanks for the linker definition. I think that is what I need. My goal is not to get a smaller XEX file. It's not to make a program run on a 32k atari either. I have 2 goals - and I mention in case that influences the answer, what I do want to do, is use bank switching. I prefer to set up the code to use bank switching from the start, then go bonkers with animations and waste memory as I see fit. However - today, I am not testing bank switching, I just want to start my code in Bank 2, and put my screen in Bank 1. I will then someday swap banks around in the $4000 to $7FFF window as I see fit. The secondary goal, is just to have the memory plan set - just simple reasonable something to get started, I just really cannot spend too much time on minutia, or the project bogs down. So, here is my plan. Start code at $8000 Bank 2. That's be my program code. Put my screen data in $4000, that'll be where Antic finds stuff. Someday I may swap those banks, but today I'm not even doing that. Here is the ld that I created, modified the the ld that was posted earlier in this thread. Does it look like its reasonable? It doesn't crash. But, why do I have to define this segment called "Data". What goes in Data? I'm aware is some super basic question, but it just helps to ask the simplest of questions, because it clarifies. thanks Edit: In case it's not clear, I'm fine with this limitation: My code will not take more than 16K (Bank 2). My characters data/animations will not take more than 64K (16k * 4 banks). Doesn't matter to me if it was technically possible to squeeze out more, that would be for a future project to squeeze the last bit....:). haha...anyway, thanks in advance for any help! //https://atariage.com/forums/topic/313212-funkheld-kickc-questions/ .file [name="%O", type="bin", segments="XexFile"] .segmentdef XexFile .segment XexFile // Binary File Header .byte $ff, $ff // Program segment [start address, end address, data] .word ProgramStart, ProgramEnd-1 .segmentout [ segments="Program" ] // RunAd - Run Address Segment [start address, end address, data] .word $02e0, $02e1 .word %E .segmentdef Program [segments="ProgramStart, Code, Data, Screen, ProgramEnd"] .segmentdef ProgramStart [start=$8000] .segment ProgramStart ProgramStart: .segmentdef Code [startAfter="ProgramStart"] .segmentdef Data [startAfter="Code"] .segmentdef Screen [start=$4000] .segmentdef ProgramEnd [startAfter="ProgramStart"] .segment ProgramEnd ProgramEnd:
-
I'm not taking anything as criticism! Probably it is true, I don't have the ability to craft my questions as a way of communicating my level of understanding. They actually are intended to do the opposite, they are an expression of ignorance in order to facilitate a knowledge transfer. This is how I view questions to work, at a fundamental level. But I sense maybe some explanation is needed - my questions will be on kickC implementation of C, and how to implement Atari related needs - only that. I won't ask questions on C, even if I view it as 'yet another language'. What attracts me to kickC, is that I find the most productive thing for me in creating an atari program is combining C and assembly. Assembly, because of all the many examples out there. And C, for doing the control flow of the game logic. I've kind of let this question/answer thread go down the path of re-implementing assembly in the C language, which is not precisely what I meant to do - but at first I was getting hosed by my own mistakes, I see them now.... Anyway, this is good! I may even have all my questions answered already...Now as far as having the non-used memory space ("lots of zeros") on the atari, partially between my code and my assigned memory areas for screen memory, character sets, and dli locations - guilty. Its down on my list to move the non-used space to "after" since as long as I haven't run out of space and nothing conflicts - such choices don't impact usability. OK, but I so much appreciate the answers! Thanks, you are doing great. It really expedites that accumulation of knowledge. hmmm, time will tell, but I suspect this is already enough to get me going....thanks again all!!
-
-
Couple more questions, I'll check on this tomorrow. On style. I'm not sure I like the C-style better than the ASM style. The main thing is, I need to have some tedium done by external programs, where possible. Because I have a program that will produce byte lists in hex, I plan to just load it in asm with .byte directives. But here, I didn't really have a handy way to lay out the tiles, so I used a C char string. On style - OK, or what is a cleaner way? I don't want to load from files, for now. Secondly, why should I have to define a string and then copy the string contents to a memory location. Shouldn't it be possible just to define the string at a certain location in the first place? One other question - so, I expect that you cannot increment the y register past 255. But, why does this actually hang if attempting more than 192? If I had done the charset loading in C, would it handle a full 1024 without issue? #pragma target(atarixl) #pragma emulator("/Users/rdupuy/kickc/atari800") #include <atari-xl.h> void main() { asm { lda #$48 sta $02F4 sta $D409 ldy #0 loop: lda fontset, y cmp #$fe bne cont jmp exit cont: sta $4800, y iny jmp loop exit: ldy #0 loop2: lda fontset2, y cmp #$fe bne cont2 jmp exit2 cont2: sta $48C0, y iny jmp loop2 exit2: sei } char * SCR = 0x6000; int i = 0; char *p=TEXT; // point to the start while (*p++!=0) { *(SCR + i) = *p; i++; } ANTIC->DMACTL = 0x21; // Set ANTIC Display List Pointer ANTIC->DLIST = DISPLAY_LIST; // Set colors GTIA->COLPF0 = 0xc8; GTIA->COLPF1 = 0x11; GTIA->COLPF2 = 0x28; GTIA->COLPF3 = 0xFF; for(;;) { } } char fontset[] = kickasm {{ .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 .byte $00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$01,$15 .byte $00,$00,$01,$05,$15,$55,$55,$55,$00,$10,$54,$54,$54,$54,$55,$55 .byte $01,$05,$05,$15,$15,$55,$55,$55,$40,$50,$54,$55,$55,$55,$55,$55 .byte $00,$00,$00,$00,$40,$41,$55,$55,$00,$00,$00,$00,$00,$50,$54,$55 .byte $54,$45,$54,$15,$01,$00,$00,$00,$55,$15,$45,$54,$45,$05,$00,$00 .byte $55,$55,$55,$11,$14,$05,$01,$00,$55,$55,$41,$15,$50,$01,$55,$00 .byte $55,$15,$51,$15,$55,$54,$41,$00,$55,$55,$55,$11,$44,$50,$40,$00 .byte $55,$55,$55,$54,$11,$45,$00,$00,$55,$51,$45,$14,$10,$00,$00,$00 .byte $C0,$FF,$EA,$EA,$EA,$EA,$EA,$FF,$03,$FF,$AB,$AB,$AB,$AB,$AB,$FF .byte $FF,$55,$55,$55,$55,$55,$55,$55,$5A,$5A,$5A,$58,$58,$58,$58,$58 .byte $A5,$A5,$A5,$05,$05,$F5,$F5,$F5,$58,$58,$5A,$5A,$58,$58,$5A,$5A .byte $FE }}; char fontset2[] = kickasm {{ .byte $F5,$F5,$A5,$A5,$F5,$F5,$A5,$A5,$55,$55,$55,$55,$55,$55,$55,$55 .byte $AA,$AA,$A5,$A5,$AA,$AA,$A5,$A5,$AA,$AA,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$AA,$AA,$A5,$A5,$96,$96,$96,$96,$AA,$AA,$96,$96 .byte $A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$96,$96,$96,$96,$96,$96,$96,$AA .byte $00,$00,$00,$00,$00,$00,$55,$00,$05,$05,$15,$15,$54,$54,$54,$00 .byte $15,$15,$15,$15,$54,$54,$54,$00,$15,$15,$15,$15,$55,$55,$55,$00 .byte $15,$15,$15,$15,$15,$15,$15,$00,$15,$15,$15,$15,$45,$45,$45,$00 .byte $14,$14,$15,$15,$45,$45,$45,$00,$00,$00,$00,$00,$40,$40,$55,$00 .byte $00,$00,$00,$00,$00,$2A,$15,$15,$00,$00,$00,$00,$00,$AA,$55,$55 .byte $FE }}; char TEXT []= "zzzzzz!\"zzzzzzzzzzzzzzzzzzzzzzzzz" "zz#$%&'()\"zzzzzzzzzzzzzzzzzzzzzzz" "z*+,-./01zzzzzzzzzzzzzzzzzzzzzz" "zzzzzzzzzzzzz232323232323zzzzzzz" "zzzzzzzzzzzzz444444444444zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz565656565656zzzzzzz" "zzzzzzzzzzzzz787878787878zzzzzzz" "zzzzzzzzzzzzz999999999999zzzzzzz" "zzzzzzzzzzzzz56569:;95656zzzzzzz" "zzzzzzzzzzzzz78789<=97878zzzzzzz" "zzzzzzzzzzzzz99999>?99999zzzzzzz" "@ABBBBBBBBBBBDDDDDDDDDDEEEEEEFG" "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" "zzzzzzzHIJzHIJzHIJzHIJzHIJzHIJz" "zzzzzzzKLMzKLMzKLMzKLMzKLMzKLMz" ; char DISPLAY_LIST[] = { BLANK8, BLANK8, BLANK8, LMS|MODE4, 0x00, 0x60, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, MODE4, JVB, <DISPLAY_LIST, >DISPLAY_LIST };
-
OMG! It actually works, and I needed not to order anything. 1366 x 768 mode doesn't have the jumping. And I cycled through the "SW" button and when I came back to the VGA out, it started working again. I cannot believe it, it all works, haha...amazing.
-
One last bit of news, and then the wait. So I do have a GBS-8220. I put it in a case years ago, and apparently cased over the control buttons. However, that may have been a good thing. After uncasing it, and taking the OSD out of Chinese /*for the first time*/, I tried setting it to 1024x768. Didn't work. Set it to 640x480, didn't work. Put it back at 800x600, doesn't work. I've gone through all the cables and put back on the original power supply - and nothing gets it to work at all any longer. While it will briefly show the Atari screen in a very discolored way and then it falls back to "no signal". I see I still have the magic touch. Oh well, like I said, I've got another scan doubler on order. Crossing my fingers.
-
@candle, thanks for that explanation. That gives me hope it is the scan doubler. The NEC monitor is constantly telling me this isn't a supported resolution, but I can dismiss the warning once on startup. A long time ago, I bought an ST to SCART cable. Nowadays people sell SCART to HDMI converters. I've gone ahead and ordered one. The ST connector was hooked up to allow for the connection of an ST monitor. The cable I have goes from ST to HD15. But I should also theoretically be able to start from the ST connector and go to SCART - I think, anyway. The SCART to HDMI would not only switch me to HDMI, but also have a nice case. The case on my Arcade scan doubler was made by me and looks like garbage. @cwilbar - thanks, you are correct, that would not have worked.
-
I tried another 5v power supply for the scan doubler, it had no effect. @Stephen, unfortunately I don't have the skill to put together a hardware project, I destroyed about 3 Atari's trying to do various projects, and have given up on that. So, I don't know what was used. The other monitor's I tried are all flat panels. One is an NEC Multisync LCD1550M that does scan down to work with a Coco 3. But those never worked with the VBXE. The only thing that has ever worked is the scan doubler. I do have a CM-5 RGB monitor, but it has a 9-pin, I don't have an adapter to try it right now. Potentially that might be the next cheapest thing to try.
-
@DrVenkman, thanks, I'll try another power supply.
-
Hard to video this, the video makes it look better than it is, the bouncing is very visible....but anyway, on the one bounce it shows here, it does that all the time.
-
Looks like the most likely thing to suspect is the scan doubler. I tried a few displays I have that can do 15khz, but they just don't work with VBXE. I took a look at flashjazzcat video of The Last Word, VBXE, and the GBS-8220 Scan doubler. While he shaky cam'ed the video the actually underlying display looks rock solid as near as I can tell. I did try 3 monitors just now, no difference, they all wave that character. I do have other VGA cables, so I'll try them, but I don't expect much, how would a cabling problem wave only a character next to the cursor. Weird. And...honeslty I don't really understand how any of it would do that, but, my scan doubler is a GBS-8220 or close cousin (don't remember exactly which one)......oh goodness.
-
Thanks all. I am using an old arcade scan doubler, bought off e-bay years ago. I do have it in a case. I had forgotten, I actually have an ST connector on the back. And a cable that converts it from ST style to hd-15. Anyway, on further review, I think the screen is about the same stable in VBXE mode and non-VBXE, which is to say, not perfectly stable. I only notice it not being "perfect" now because I'm examining it hard, that I can see on the thinnest of horizontal lines, that it has a slight wobble. But stable enough that I wouldn't have noticed - except, for last word has a very noticeable wobble that is unmistakable on the letter that is next to the cursor. This overall gave me the impression of general waviness. And btw, it still does. Lol, if I don't concentrate hard, I think the screen is waving, but it is really only that character. Now - examining characters in 40-col mode in Atari DOS, I see that when you type in a character it pops in, moves a bit, and then goes stable. But after the shaky pop-in it actually remains stable even if the character is next to the cursor. So, the overall impression in 40-col DOS, is that the screen is stable. Anyway, with this in mind, does the character next to the cursor, wave for you in Last Word?
