This also misses a lot of other tricks: self-modifying unrolled code, keeping track of blocks of memory that don't need to be updated, or blocks of memory that have the same value. Memory moves may not be the fastest way.
0 HIMEM: 5608
1DATA5532563300922139021390213932135045238263536503037252627503845615305817312092293902932835845478875645836575037148845550351083966132653706165276445377489621322135821322334213502130051520282036
2DATAQLNZQLNZQAQQDSAQRDSAQQDSAQVDSAQXCKDNAPFXANAQXXANANXNXNXQXNXCQXKXNZQXKXNZQCQODMAQODMAUUYQXCKATAUVQXCKMNXQXKANXUAUTCQXKENXUMUSQJHSAHFQZTXRDFQZTAOCQZTAOBQHDSAPDSAQADSANZNZKDSAQZDSAXZQZOZXZUAXZJ
3 READ L$: READ H$
4 FOR I = 1 TO LEN (L$)
5POKE767+I,10*(ASC(MID$(H$,I,1))-65)+VAL(MID$(L$,I,1))
6 NEXT
RUN
HGR : CALL 768: CALL 5608
Perhaps I’m forgetting but was HIMEM control not something that was pretty well known since early on in the C64? I didn’t think it was a secret. There’s articles describing it’s use in January of 1983.
Sure, but the fact is when was the last time you had a "startup.bat" file you had to edit that had HIMEM stated in it....?
Easy to forget that the velocity of understanding for people in tech has been ridiculous over the decades.
Ask a new hot shot programmer to do dip-switches and IRQs etc... if they are <40 years old... they may not know what youre even talking about, let alone be able to tell you a PIN switch on a mobo for IRQ settings (PRE IPv4)...
There was a generation of people brought up THROUGH THE STACK in a hardware manner...
So much history is lost through the advancement of history.
This is why we lost the tech to construct pyramids of scale.
"Kids these days just arent interested in levitating blocks with sound waves, and they just only want to domesticate Camels and plants for something called "agriculture""
HIMEM here refers to a control mechanism for switching out the mapping of the C64 kernal (the ROM “OS”) to access more RAM.
The C64 is called that because it has 64k of memory and the 6502 is a 16 wide address bus so 64k of memory requires bank switching since there is no room for anything else. This was baked into the design of the system from day 1.
Anyway, I also really have a hard time understanding how an old DOS driver to overcome the limitations of PC architecture when it was pushed into service well past its sell by date is or should be relevant to anyone except hobbyist tinkerers with old hardware. Most people won’t be able to start a Model A Ford, either. I don’t think forgotten knowledge of DOS/PC shittiness is somehow such a great loss of domain knowledge.
> Ask a new hot shot programmer to do dip-switches and IRQs etc... if they are <40 years old... they may not know what youre even talking about
Meanwhile, for those that are interested it’s never been easier to get into low level development. I do not fucking miss the days of etching PCBs in my basement and always cursed the cost of small run manufacturing. The types of things the home hobbyist can work on/solve is far beyond the frankly waste of time futzing with IRQ and blech DMA on IBMs steaming POS. Home hobbyists have the tools for free to design their own multilayer PCBs or “just” integrate the myriad embedded hardware devices available to them. More young people are involved in robotics then ever, a far more interesting endeavor to me then moving jumpers around to make a crappy machine produce 8 bit audio cassette quality sound.
> PIN switch on a mobo for IRQ settings (PRE IPv4)
I know what DIP switches or configuration pin headers do. For one, I've never heard them referred to as DIP PIN switches like PIN is some kind of acronym - perhaps DIP pin switch is some kind of regionalism. But that was not the confusion:
>> "Ask a new hot shot programmer to do dip-switches and IRQs etc"...
Ok.
>> let alone be able to tell you a PIN switch on a mobo for IRQ settings (PRE IPv4)
After the first part about dip-switches and IRQs this makes it sound like "PIN switch" is something distinct. Further confusing, I still have no idea what PRE IPv4 means here. The only IPv4 I've heard of is internet protocol and not something I would associate with PC hardware configuration. (IPv4 was released pretty much at exactly the same time as the original IBM PC in 1981).
> IRQ3 was typically the modem
IRQ3 was more specifically the 2nd set of serial UARTs COM2/COM4 - with the IO base port assignment 2F8h and 2E8h. COM1/COM3 was IRQ 4 (base ports 3F8h, 3E8h). So a modem may very well been on IRQ 4. In practice it was often dependent on whether one was a using a serial vs PS/2 mouse.