GDMike #151 Posted November 29, 2021 (edited) What I had in mind was this... Step 1. Gather my routines and get them altogether to assemble using AORG >3000 as Lee suggested and save them out as dF80. I can load this at program boot, START Step 2. And find each routine's beginning address. Easy enough. (Each routine ENDS with a KSCAN and Branch out to my mapper procedure at a high address, somewhere around >E000). And my program can call any routine address with a B @ >3456 or whatever and already mapped and ready to load the routine from the bank which is already predetermined. as Lee also suggested, try cramming as many routines as possible into that 4K space, and maybe I can get by with a low load Time. but, in my case, TIpi loads fast enough and I don't forsee a long wait for the ONE time load(Even in steps of records). ???? Edited November 29, 2021 by GDMike Quote Share this post Link to post Share on other sites
+TheBF #152 Posted November 29, 2021 6 minutes ago, GDMike said: What I had in mind was this... Step 1. Gather my routines and get them altogether to assemble using AORG >3000 as Lee suggested and save them out as dF80. I can load this at program boot, START Step 2. And find each routine's beginning address. Easy enough. (Each routine ENDS with a KSCAN and Branch out to my mapper procedure at a high address, somewhere around >E000). And my program can call any routine address with a B @ >3456 or whatever and already mapped and ready to load the routine from the bank which is already predetermined. as Lee also suggested, try cramming as many routines as possible into that 4K space, and maybe I can get by with a low load Time. but, in my case, TIpi loads fast enough and I don't forsee a long wait for the ONE time load(Even in steps of records). ???? So the E/A loader would load the code block as object code? If you have the way to do it, saving the data as a binary program, or converting the object to a binary program, would mean FOXIT could load the 4K block itself when it starts in about .5 seconds. Wouldn't that be BL @ >3456 ? 1 Quote Share this post Link to post Share on other sites
GDMike #153 Posted November 29, 2021 2 minutes ago, TheBF said: Wouldn't that be BL @ >3456 Sure, if I wanted, but I've just been mapping then [email protected] to my address and then taking care of the mapping again before calling my kscan. But, that is only because I have one of these running, that's my help routine. But, yes I'd prefer to BL out and back. Here's a video on a field add to it's max. VID_20211128_194550041.mp4 Quote Share this post Link to post Share on other sites
GDMike #154 Posted November 29, 2021 (edited) 38 minutes ago, TheBF said: So the E/A loader would load the code block as object code? Naaa. I'd have to build a loader, like a DF80 reader, and then setup the map and place the file read into SAMS manually at boot. Edited November 29, 2021 by GDMike Quote Share this post Link to post Share on other sites
+TheBF #155 Posted November 29, 2021 2 hours ago, GDMike said: Naaa. I'd have to build a loader, like a DF80 reader, and then setup the map and place the file read into SAMS manually at boot. Don't know if this helps but I love disk functions 5 and 6 for this kind of thing. They just blast in and out as long as you don't need more than 8K which you don't. Here it is Forth. I can answer any questions. But really you just set up the PAB and hit 6 to save and 5 to load. Differences from TF below: VC! writes one byte. V! writes 2bytes (one CELL) ior means I/O response (error number) HEX \ PRE-FAB file access mode selectors for default file binary type 0B CONSTANT W/O100 \ WRITE ONLY, binary, relative, fixed 100 0D CONSTANT R/O100 \ READ ONLY, binary, relative, fixed 100 \ 13 CONSTANT PROG : NEWPAB ( file$ len VDPaddr #bytes mode -- ) -30 ^PAB +! \ create new pab in VDP RAM with NO buffer [PAB 30 0 VFILL \ erase PAB and file name 0 [PAB RECLEN] VC! \ set reclen (0 means >100 (256) bytes) \ pulls params from the stack to init the PAB [PAB FLG] VC! \ set file access mode byte [PAB REC#] V! \ set #bytes to save (integer) [PAB FBUFF] V! \ set where the file will load VDP Ram [PAB FNAME] VPLACE \ set file name ; : SAVE-FILE ( file$ len VDPaddr #bytes -- ior) W/O100 NEWPAB 6 FILEOP 30 ^PAB +! ; : LOAD-FILE ( file$ len VDPaddr size -- ior) R/O100 NEWPAB 5 FILEOP 30 ^PAB +! ; 2 Quote Share this post Link to post Share on other sites
GDMike #156 Posted November 29, 2021 1 minute ago, TheBF said: Don't know if this helps but I love disk functions 5 and 6 for this kind of thing. They just blast in and out as long as you don't need more than 8K which you don't. Here it is Forth. I can answer any questions. But really you just set up the PAB and hit 6 to save and 5 to load. Differences from TF below: VC! writes one byte. V! writes 2bytes (one CELL) ior means I/O response (error number) HEX \ PRE-FAB file access mode selectors for default file binary type 0B CONSTANT W/O100 \ WRITE ONLY, binary, relative, fixed 100 0D CONSTANT R/O100 \ READ ONLY, binary, relative, fixed 100 \ 13 CONSTANT PROG : NEWPAB ( file$ len VDPaddr #bytes mode -- ) -30 ^PAB +! \ create new pab in VDP RAM with NO buffer [PAB 30 0 VFILL \ erase PAB and file name 0 [PAB RECLEN] VC! \ set reclen (0 means >100 (256) bytes) \ pulls params from the stack to init the PAB [PAB FLG] VC! \ set file access mode byte [PAB REC#] V! \ set #bytes to save (integer) [PAB FBUFF] V! \ set where the file will load VDP Ram [PAB FNAME] VPLACE \ set file name ; : SAVE-FILE ( file$ len VDPaddr #bytes -- ior) W/O100 NEWPAB 6 FILEOP 30 ^PAB +! ; : LOAD-FILE ( file$ len VDPaddr size -- ior) R/O100 NEWPAB 5 FILEOP 30 ^PAB +! ; I just glanced it over, but I'm only needing to load 4K. Not sure if I need to do it twice (as maybe I don't need the code), but I've got to seperate out into 4K chunkies. 1 Quote Share this post Link to post Share on other sites
GDMike #157 Posted November 29, 2021 Finished with "revise" field list. It took quite awhile, but it's working nicely! I have to work on memos and how there handled next weekend, but a lot of things got working this weekend. Yeahhooo Ill look for a video capture and do a video next week while I'm at home and have internet 🤣☺️ 1 Quote Share this post Link to post Share on other sites
+TheBF #158 Posted November 29, 2021 8 hours ago, GDMike said: I just glanced it over, but I'm only needing to load 4K. Not sure if I need to do it twice (as maybe I don't need the code), but I've got to seperate out into 4K chunkies. See the #bytes parameter. That's controls how many bytes to read or write. With functions 5 & 6 the # of bytes goes into what is normally the record# field of the PAB. Max size is 8K. (>2000) These things are so fast you could have 3 or 4 code blocks and load them as needed. 1 1 Quote Share this post Link to post Share on other sites
GDMike #159 Posted November 29, 2021 (edited) 10 hours ago, TheBF said: These things are so fast you could have 3 or 4 code blocks and load them as needed. Yup, but since this program would just need it at boot and just store it. But, I Know what you mean, and it's very cool. I was thinking about just using my supercart to push code since it can hold a good 7K+ but, not everyone has access to >6000 so I'll just pass on that attempt. I've screwed up classic 99 now, I don't know wth I hit, but now at boot of Foxit I get a garbled screen. WTH. I deleted the.ini file but it still happens. I think this has happened before and I'm not sure how I fixed it. Anyway, I called it a day and will look at it on Saturday night. I got a lot done this past weekend. And I can't believe that field maintenance form is almost completed including revising field list with full editing. I'll upload a runable version soon. After I verify it runs in Classic9 again. Oh...it looks like maybe I hit Ctrl equal or something in a sequence on the laptop keyboard apparently it turns off or on some registers in vdp? I'm still looking for a fix.. Edited November 29, 2021 by GDMike 1 Quote Share this post Link to post Share on other sites
+Lee Stewart #160 Posted November 30, 2021 On 11/29/2021 at 8:34 AM, TheBF said: See the #bytes parameter. That's controls how many bytes to read or write. With functions 5 & 6 the # of bytes goes into what is normally the record# field of the PAB. Max size is 8K. (>2000) These things are so fast you could have 3 or 4 code blocks and load them as needed. The reason I suggested Level-2 Subprograms >014 and >015 is that all the necessary 4KiB blocks of binary code can be loaded/saved at will, one 4-KiB block at a time from/to the same file. ...lee 1 1 Quote Share this post Link to post Share on other sites
+TheBF #161 Posted November 30, 2021 20 minutes ago, Lee Stewart said: The reason I suggested Level-2 Subprograms >014 and >015 is that all the necessary 4KiB blocks of binary code can be loaded/saved at will, one 4-KiB block at a time from/to the same file. ...lee Ah! I need to learn about those. I have never pressed my DSR into service on the Level-2 Subprograms. Thanks for the reminder. 1 Quote Share this post Link to post Share on other sites
GDMike #162 Posted December 4, 2021 (edited) Will be back on Foxit in a couple hours. Hopefully I can figure out how to get my Classic99 back in 80 col text mode again. Lol .it's probably just a key press or something. Edited December 4, 2021 by GDMike Quote Share this post Link to post Share on other sites
GDMike #163 Posted December 5, 2021 Yup..I hit a couple keys, played with some video settings and wholla, my screen is normal for me again... 1 Quote Share this post Link to post Share on other sites
+TheBF #164 Posted December 5, 2021 So classic99 boots up in 80 columns or do you poke some registers in your code? 1 Quote Share this post Link to post Share on other sites
GDMike #165 Posted December 5, 2021 I initialized all my registers at boot up to set my display to 80 col two colors, but I hit like Ctrl enter or Alt enter or something crazy like that and it put me into 40 col mode, that was last Monday morning at like 6am, so I fooled around with it for about 10 minutes and gave up, being so tired after 13 hours, so today I just figured I'd play around with hitting those keys again and making sure in options that everything was pretty much the same as I thought it should be, I mean I know I never fooled with settings at all, so it has to be a key Combo thingy... anyway I got 80 Columns back but the display was distorted, so I hit some more something+ enter and it came around to my normal display... Quote Share this post Link to post Share on other sites
GDMike #166 Posted December 5, 2021 I'll try to duplicate it...I need to know so I don't do that again .hmmm ..ever thought about reading the manual... nope. Never did..well, there ya go 2 Quote Share this post Link to post Share on other sites
GDMike #167 Posted December 5, 2021 I can only make the screen larger, not altering my 80 col data.? Oh, well.. maybe the laptop needed rebooting, it's working again...so yeah. Quote Share this post Link to post Share on other sites
GDMike #168 Posted December 5, 2021 (edited) I've got one issue in the"revise" fields options that I have to resolve and I'll be able to upload a try out version of what is working. In my revision routine, I have an error where if I go to edit a field and the field happens to be a memo and since only 1 memo is allowed and trying to revise that memo field to something else, I get the proper error message telling me that only one memo is allowed, but then it the program deletes the current Field altogether. So, I'm working my way through that and that should be all that I need in order to start work on the "modify screen" routine. Edited December 5, 2021 by GDMike 1 Quote Share this post Link to post Share on other sites
GDMike #169 Posted December 5, 2021 I didn't get far Tonight. This one bug has me bugged.. I'll try again tomorrow night. That's how things go sometime. Quote Share this post Link to post Share on other sites
GDMike #170 Posted December 5, 2021 Another night, I sure hope to resolve this issue tonight. Quote Share this post Link to post Share on other sites
GDMike #171 Posted December 6, 2021 (edited) Making some progress tonight. Sheeeez..nice. Seems I'm able to change a memo Field to something else no matter what field numbers,1-9, and I can add a memo field but it places the new memo field as the last numbered field instead of replacing the field I selected.. !*✓% arghhhh... But this is progress. Sometimes I think these programs think and just do what they think is best?? All my fields act the same during editing and they don't go out of phase, but when it comes to my memo field it always wants to add itself to the bottom of the list...crazeeeeee Looks like I did that intentionally and totally forgot it..I lost some traction over the holidays and time off. I'll get it together soon. Edited December 6, 2021 by GDMike Quote Share this post Link to post Share on other sites
GDMike #172 Posted December 6, 2021 (edited) I'll try to upload what I have... DF 80 program name FOX start name is FOXIT TO USE. MUST have F18A AND SAMS card (or choose in classic99) F9 escape out of help menu at boot up CREA file works (changes likely later) Used as, CREA DSK#.MINE as example CALL VER works CALL CLEAR works QUIT works SELE DSK#.FILE - example file I have been using in in DISK #4 so if you get an error try moving the file to dsk4. MODI STRU allows creation of fields - If you REVISE a field and select its number to the left then change your mind and hit ESCAPE F9, that field will be deleted, but you can add it back of course. THESE are the ONLY commands that work at this time. to access the help menu, press F4 to close the command window and press F9, if you want to close HELP, then press F9 and F8 to make the command window appear again. NOTE: i made a simple change ---here is the latest FOX program..but its a small change so no worries UP.rar FOX Edited December 6, 2021 by GDMike usage 1 Quote Share this post Link to post Share on other sites
GDMike #173 Posted December 6, 2021 (edited) Keys and commands that work in the command box. Left arrow, right arrow, space bar, characters, F3 delete Line, enter, F4 hide, F8 Show CALL CLEAR, QUIT, CALL VER CREA DSK#.FILE MODI STRU SELE DSK#.Name DISP STRU is functioning, but unfortunately it's not in this upload. Sorry bout that... More work to do next Saturday night! Edited December 6, 2021 by GDMike 1 Quote Share this post Link to post Share on other sites
GDMike #174 Posted December 12, 2021 Back at it tonight. Working on a bug I found in the command window last week.. Quote Share this post Link to post Share on other sites
GDMike #175 Posted December 12, 2021 (edited) Fixed my bug.. what it was, - whenever I would just press enter on a command line the cursor would drop to the line below like expected, but if the cursor was already on the last row and I pressed enter, then my cursor would drop into no mans land, a row down, then it would correct itself and jump back up to the previous row. -- so now it just scrolls the screen up in the command window like it's supposed to...geez... I had been testing with command words and everything has always been normal... never thought about just hitting enter over and over... Just documenting since my last weekend update... VID_20211211_203854922.mp4 Edited December 12, 2021 by GDMike 2 Quote Share this post Link to post Share on other sites