memory driver in Alasm

ZXNet echo conference «code.zx»

From Valerij Kozhevnikoff To All 8 October 2002

Hello, All! The subject is somehow cleverly designed. I've been using it all my life and only now it was necessary to understand its structure. It is not clear why the PREPOD and SPCPROG procedures are needed, as well as what JUMPER 23600. PREPOD is generally something incomprehensible. Assuming this is the main point input, then in some drivers it preserves registers for some reason, but in others on the contrary, it changes. JUMPER 23600 is most likely used when returning to assembler. Since the driver is most likely relocatable, SPCPROG probably serves for settings for the new address. Damn, this is some bullshit. Is it difficult for anyone here to clarify this information? _······------====== Monitor glass cutter ======------······_ ;PENTAGON HIGH MEMORY DRIVER ORG #7000 MEMDRV DW #0010 ;*why is this???* ADAS LD A,#04 ZAP LD BC,#7FFD OR#10 OUT(C),A RET DS 8 LD HL,#C000 ;JUMPER 23600 *where is the jumper?* PUSH HL JR ADAS ;26 BYTES PREPOD LD BC,#7FFD OR#10 OUT(C),A RET ;8 BYTES HIMEM DB #C7 ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "PENT" ;DRIVER NAME STRTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG RET _······------====== Monitor glass cutter ======------······_;SCORPION HIGH MEMORY DRIVER ORG #7000 MEMDRV ADAS LD A,#04 ZAP LD BC,#1FFD ;SCORP MEM DRV LD D,A AND #07 LD E,A XOR D RLCA OUT (C),A LD B,#7F SET 4,E OUT (C),E RET LD HL,#C000 ;JUMPER 23600 PUSH HL JR ADAS ;26 БАЙТ PREPOD EXX KAPS CALL 0 EXX RET DW 0 ;8 BYTES HIMEM DB #0F ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "SCRP" ;DRIVER NAME STARTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG LD HL,KAPS+1-MEMDRV ADD HL,BC EX DE,HL LD HL,ZAP-MEMDRV ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D RET _······------====== Стеклорез мониторный ======------······_ ;PROFI HIGH MEMORY DRIVER ORG #7000 MEMDRV ADAS LD A,#04 ZAP LD BC,#DFFD ;PROF MEM DRV LD E,#7F LD D,A AND #07 LD L,A XOR D RRCA RRCA RRCA SET 4,L JP #3899 LD HL,#C000 ;JUMPER 23600 PUSH HL JR ADAS ;26 БАЙТ PREPOD EXX PUSH HL KAPS CALL 0 POP HL EXX RET ;8 BYTESHIMEM DB #3F ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "PROF" ;DRIVER NAME STARTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG LD HL,KAPS+1-MEMDRV ADD HL,BC EX DE,HL LD HL,ZAP-MEMDRV ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D RET WBR, Jason. /*e-mail: jason2000(собака страшная)yandex.ru ICQ: 62235830*/ /np:/ *silence*

From Valerij Kozhevnikoff To All 8 October 2002

Hello, All! The subject is somehow cleverly designed. I've been using it all my life and only now it was necessary to understand its structure. It is not clear why the PREPOD and SPCPROG procedures are needed, as well as what JUMPER 23600. PREPOD is generally something incomprehensible. Assuming this is the main point input, then in some drivers it preserves registers for some reason, but in others on the contrary, it changes. JUMPER 23600 is most likely used when returning to assembler. Since the driver is most likely relocatable, SPCPROG probably serves for settings for the new address. Damn, this is some bullshit. Is it difficult for anyone here to clarify this information? _······------====== Monitor glass cutter ======------······_ ;PENTAGON HIGH MEMORY DRIVER ORG #7000 MEMDRV DW #0010 ;*why is this???* ADAS LD A,#04 ZAP LD BC,#7FFD OR#10 OUT(C),A RET DS 8 LD HL,#C000 ;JUMPER 23600 *where is the jumper?* PUSH HL JR ADAS ;26 BYTES PREPOD LD BC,#7FFD OR#10 OUT(C),A RET ;8 BYTES HIMEM DB #C7 ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "PENT" ;DRIVER NAME STRTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG RET _······------====== Monitor glass cutter ======------······_;SCORPION HIGH MEMORY DRIVER ORG #7000 MEMDRV ADAS LD A,#04 ZAP LD BC,#1FFD ;SCORP MEM DRV LD D,A AND #07 LD E,A XOR D RLCA OUT (C),A LD B,#7F SET 4,E OUT (C),E RET LD HL,#C000 ;JUMPER 23600 PUSH HL JR ADAS ;26 БАЙТ PREPOD EXX KAPS CALL 0 EXX RET DW 0 ;8 BYTES HIMEM DB #0F ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "SCRP" ;DRIVER NAME STARTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG LD HL,KAPS+1-MEMDRV ADD HL,BC EX DE,HL LD HL,ZAP-MEMDRV ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D RET _······------====== Стеклорез мониторный ======------······_ ;PROFI HIGH MEMORY DRIVER ORG #7000 MEMDRV ADAS LD A,#04 ZAP LD BC,#DFFD ;PROF MEM DRV LD E,#7F LD D,A AND #07 LD L,A XOR D RRCA RRCA RRCA SET 4,L JP #3899 LD HL,#C000 ;JUMPER 23600 PUSH HL JR ADAS ;26 БАЙТ PREPOD EXX PUSH HL KAPS CALL 0 POP HL EXX RET ;8 BYTESHIMEM DB #3F ;MEMORY MASK SYSPASH DB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DB "PROF" ;DRIVER NAME STARTSH DB ZAP-MEMDRV ;START SHIFT SPCPROG LD HL,KAPS+1-MEMDRV ADD HL,BC EX DE,HL LD HL,ZAP-MEMDRV ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D RET WBR, Jason. /*e-mail: jason2000(собака страшная)yandex.ru ICQ: 62235830*/ /np:/ *silence*

From Aleksey Senilov To Valerij Kozhevnikoff 11 October 2002

||*()*|| Hello, _/Valerij/_! October 08, 2002 02:01, Valerij Kozhevnikoff wrote to All: VK> The subject is somehow cleverly designed. I've been using it all my life, and only now VK> needed to understand its structure. Once upon a time I figured it out when I modified it to suit my own method of numbering banks for Pent512 (mask #C7 is terribly uncomfortable, #1F is much better). VK> It is not clear why the PREPOD and SPCPROG procedures are needed, as well as what VK> is JUMPER 23600. Now...see below. VK> PREPOD is generally something incomprehensible. Assuming that this is the main VK> entry point, then in some drivers it saves registers for some reason, but in VK>, on the contrary, changes others. As you can see, on the Pentagon you only need BC to switch the page. And apparently she You may not save it. But on others other registers are used, because they are saved. For Pros, the ROM is generally called up. And so, yes, PREPOD is the main entry point. VK> JUMPER 23600 is most likely used when VK> return to assembler. Exactly. VK> Since the driver is most likely relocatable, then VK> SPCPROG is probably used to configure a new address. Damn, bullshitVK> some kind. And this is also exactly the case. At the input to SPCPROG in BC the current address of the driver. VK> Is it difficult for someone here to clarify this information? Not at all. VK> ;PENTAGON HIGH MEMORY DRIVER VK> ORG #7000 VK> MEMDRV VK> DW #0010 ;*why???* For the life of me, I don’t know about this. VK> ADAS LD A,#04 VK> ZAP LD BC,#7FFD VK> OR #10 VK> OUT (C),A VK> RET VK> DS 8 VK> LD HL,#C000 ;JUMPER 23600 *where jumper?* VK> PUSH HL VK> JR ADAS ;26 BYTE This piece of the driver is usually transferred as a resident, and the address of this point is equal to 23600. Is it clear now? VK> PREPOD LD BC,#7FFD VK> OR #10 VK> OUT (C),A VK> RET ;8 BYTES Here the switching program is included in 8 bytes, and therefore without any CALL. VK> HIMEM DB #C7 ;MEMORY MASKAnd do you use it? #1F is better and more compatible with other drivers. Otherwise when trying to compile such a source (with loading into jars using mask #C7) for example, on Pro will not lead to anything good. All the best! /*Boh*/ / /Image Crew/ was with you. ||*()*||

From WoWan Nickolaev To Valerij Kozhevnikoff 12 October 2002

How's yours, Valerij? 08 Oct 02 02:01, Valerij Kozhevnikoff -> All: VK> DS 8 I'm interested in this line! What is generated here? VK> LD HL,#C000 ;JUMPER 23600 *where is the jumper?* VK> PUSH HL VK> JR ADAS ;26 BYTE WBR, Lynx // J!ZzZ! [team ZX] [Dark Jungle] [GoA] [J!ZzZ project] [PLUt0N!um] [GmD] [club LuK] [black-sand.da.ru]

From Valerij Kozhevnikoff To Aleksey Senilov 16 October 2002

Hello, Aleksey! 11 Oct 02 20:21, Aleksey Senilov -> Valerij Kozhevnikoff: VK>> The subject is somehow cleverly designed. I've been using it all my life, and only now VK>> needed to understand its structure. AS> Once I figured it out when I remade it Give it here. AS> according to your own method of numbering banks for Pent512 (mask #C7 is terribly inconvenient, #1F AS> is much better). Uh-huh. Scorp has #0F. I once cursed this #C7 a lot... [the hamster ate it] Thnx. No longer necessary. I came up with my own format. WBR, Jason. /*e-mail: jason2000(scary dog)yandex.ru ICQ: 62235830*/ /np:/ *silence*

From Aleksey Senilov To Valerij Kozhevnikoff 19 October 2002

||*()*|| Привет тебе, _/Valerij/_! 16 октября 2002 05:14, Valerij Kozhevnikoff писал(а) Aleksey Senilov: VK>>> Сабж как-то хитро устроен. Всю жизнь пользовался, и только VK>>> сейчас потребовалось разобраться в его устройстве. AS>> Когда-то разбирался, когда переделывал VK> Давай его сюда. Вот, лови. === Цитирую файл PENT_MY.ASM === ORG #7000 MEMDRV ADAS LD A,#04 ZAP LD C,A RLCA RLCA RLCA XOR C AND #C0 XOR C AND #C7 OR #10 LD BC,#7FFD OUT (C),A RET LD HL,#C000 ;JUMPER 23600 PUSH HL JR ADAS ;26 БАЙТ PREPOD EXX KAPS CALL 0 EXX RET DEFW 0 ;8 BYTES HIMEM DEFB #1F ;MEMORY MASK SYSPASH DEFB ADAS+1-MEMDRV ;SYSPAGE SHIFT DRVNAM DEFB "PENT" ;DRIVER NAME STARTSH DEFB ZAP-MEMDRV ;START SHIFT SPCPROG LD HL,KAPS+1-MEMDRV ADD HL,BC EX DE,HL LD HL,ZAP-MEMDRV ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D RET === Конец цитаты === AS>> под свой способ нумерации банков для Пент512 (маска #C7 жутко AS>> неудобна, #1F намного лучше). VK> Угу. У Скорпа #0F. Я когда-то сильно ругался на эту #C7... Да кому-то лень было :) VK> [хомякъ сожралъ] VK> Thnx. Уже не надо. Я свой формат придумал. Это ты для чего-то своего драйвера делаешь? Тогда как тебе такое... Упаковал хрипом, посмотри. Вот только mem256 там лишний, не в том формате. === Цитирую файл MEMDRVS.HRP === begin 644 MEMDRVS.HRP M2%)I!$*``%(:2,W.3#.[J(BN.Q-1<#_`0E47U!!1_-%HC`*]U9Y]N$! M"U05T>*3U?O54P'0]5YY]59)1/4?`0Q6][P+?Q_E0$I MH"++4V$0V`HX87.EQOGBERSTE?+$ZP$8",90!S$LES#KSP1X/=&CG5CIG)"UXU-D`[^_G^F8&;65M,C4V("!(```!`4```````!M MC64RXS4V(.Q(`/X7__P#