Mark2008 Posted September 20, 2022 Share Posted September 20, 2022 On 9/17/2022 at 10:33 PM, scottinNH said: Oh. I infer this sounds doable from CC65 then, that's good to know. Unfortunately I don't know enough about the Atari platform (or C) to work out how, exactly. I don't even know all the things I don't know, lol/ I'll get there eventually, but right now I'm only competent enough to take the simple happy-path to something (like a library). ---- I'm starting to port some of David Ahl's Basic Computer Games into CC65-friendly (but not Atari-specific) code. See other thread. I don't really understand what you are asking, but I'm not sure if anyone else jumped in to answer. I used to program in CC65, and even wrote in 80 column support into a couple games - none are released - I just mean I have demos of writing partial games, and engines that draw characters to the screen. As far as I know, if you are doing a plain text game - which I never did, I was always in a graphics mode of some kind - but in that case you can use the E: device - and just ask the user if they are using 80 columns or 40 columns. Or, you can program for an 80 column device like a VBXE - which is one of the methods I used. Or you just write your own software driver, which is the other method. Othe people here are more experienced than me, but a pattern I do repeatedly in my programs, is I just have an area of memory that holds - a pattern for say a player, or a pattern that represents a character to be drawn on the screen, or a software sprite to be drawn on the screen. Then I just use lookup tables, and copy the pattern to the screen video memory. It's that simple - not really anything else to it. Now, if you need to implement a driver with scrolling and other stuff - more complex, but I just always wrote to specific areas, cleared the screen, if needed, and so on. ah - maybe I'm starting a controversy...I don't know...but as far as I know - it isn't built into CC65 as a library - I mean, maybe it is, and I never heard about it - so don't take my word for it. But what I found is over and over again - examples abound for how you write to the screen, so I just used those examples and incorporated them into my programs. 1 Quote Link to comment Share on other sites More sharing options...
Mark2008 Posted September 20, 2022 Share Posted September 20, 2022 On 9/17/2022 at 10:33 PM, scottinNH said: Oh. I infer this sounds doable from CC65 then, that's good to know. Unfortunately I don't know enough about the Atari platform (or C) to work out how, exactly. I don't even know all the things I don't know, lol/ I'll get there eventually, but right now I'm only competent enough to take the simple happy-path to something (like a library). ---- I'm starting to port some of David Ahl's Basic Computer Games into CC65-friendly (but not Atari-specific) code. See other thread. To expand on my earlier answer, even though I switched from CC65 to kickC, and even though this is some other graphics mode - the same principle applies. export char letterA[8]= kickasm {{ .byte $AA, $9A, $66, $66, $56, $66, $66, $66 //A }}; export char letterB[8]= kickasm {{ .byte $AA, $5A, $66, $66, $5A, $66, $66, $5A //B }}; export char letterC[8]= kickasm {{ .byte $AA, $9A, $66, $6A, $6A, $6A, $66, $9A //C }}; First I am defining the characterset. Then I am making up a table for it. char letterTblL[91] = kickasm {{ .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <blank .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <neg .byte <blank, <blank .byte <number0, <number1, <number2, <number3, <number4, <number5, <number6, <number7, <number8,<number9 .byte <blank, <blank, <blank, <blank, <blank, <blank, <blank .byte <letterA .byte <letterB .byte <letterC etc. and so on And then I use the characterset, and lookup table, to copy to the screen area: void gprint(char charL, char charH, const char *msg) { int i; charX = charL; //0x53; //charH #$88 for (char character = *msg; character != 0; character = *++msg) { asm { ldx character lda letterTblL, x sta MSGL lda letterTblH, x sta MSGH lda charX inc charX sta SHPMOL lda charH sta SHPMOH ldy #$00 // COUNTER NUM0: lda (MSGL),y sta (SHPMOL),y clc lda SHPMOL adc #39 sta SHPMOL bcc ok inc SHPMOH ok: iny cpy #$8 bcc NUM0 } } } Now - if I have completely misunderstood the question - my apologies. I don't know what people are asking half the time around here. But - anyway, I got a sense you were trying to write out 80 characters. The Atari only has 40 characters. The software mode is just to use half a character - or in bitmap mode 3pixels and a space pixel - to fit 80 characters within 320 pixels. 1 Quote Link to comment Share on other sites More sharing options...
Eric Rousseau Posted May 12, 2023 Author Share Posted May 12, 2023 Ouf ! Many messages since my last visit ! Here is one option that I wish I had used in 1985 with my 800XL: A real 80 columns televideo terminal connected in RS-232 to the Atari ! I remember the 300 Bauds MPP Modem that connected to the joystick port supported real RS-232 protocol if I remember correctly. Except in was TTL Level (0v-5v) not real RS-232 (+25v -25v). But with a converter, it would allow the 800XL to connect to the terminal via the joystick port at 300 bauds using software encoding... up to 450 baud I think. But now that I know that the Pokey chip uses 19,200 bauds or higher (38,400) with it's peripherals and SpartaDos, I would be curious to connect the 800XL serial port to the terminal. With a little modification to Synassembler wich use GETCH and OUTCH we could user Synassembler with a real 80 columns terminal at 19,200 bauds. Yes I know, the full screen editor won't work unless modified to work in VT-100. It would be like the XEP-80 but with a clean sharp terminal screen. Now that I have money to buy everything I wish i had when I was young, unfortunately it's too late ! The need is gone, the curiosity is gone, the thrill is gone, and even if I have a big windows 10 computer with terabytes of storage, speed and GPU power, it's still not the same.... Ok, enough crying... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.