049
24.06.2025, 10:33 Uhr
Dresdenboy
|
@wpw: Kannst du mit dem Pascal-Testprogramm da eher etwas anfangen? Lesbar sollte es allemal sein. 
@Stefan: Ich habe mal die Portzugriffe etwas kommentiert:
Quellcode: | seg002:DC99 sub_FDC99 proc near ; CODE XREF: INIT_COL+48?p seg002:DC99 ; sub_FD002+D2E?p seg002:DC99 cld seg002:DC9A push ax seg002:DC9B push si seg002:DC9C push ds seg002:DC9D call load_DS_BIOS_Data seg002:DCA0 mov dx, word_63 ; 03D4h seg002:DCA4 pop ds seg002:DCA5 sub dl, 4 seg002:DCA8 sub si, si seg002:DCAA seg002:DCAA loc_FDCAA: ; CODE XREF: sub_FDC99+17?j seg002:DCAA dec si seg002:DCAB jz short loc_FDCB2 seg002:DCAD in al, dx ; 03D0h seg002:DCAE test al, 4 ; GDC FIFO empty? seg002:DCB0 jz short loc_FDCAA seg002:DCB2 seg002:DCB2 loc_FDCB2: ; CODE XREF: sub_FDC99+12?j seg002:DCB2 add dl, 2 seg002:DCB5 mov al, 0Eh ; GDC SYNC, display disable (DE=0) seg002:DCB7 out dx, al ; 03D2h seg002:DCB8 sub dl, 2 seg002:DCBB mov al, 24h ; '$' ; GDC SYNC param 1: character mode + DRAM refresh, flash mode seg002:DCBD out dx, al ; 03D0h seg002:DCBE call sub_FDD13 ; for a:=0 to 255 do memw[$b800:a*2]:=$700+a; seg002:DCC1 pop si seg002:DCC2 pop ax seg002:DCC3 seg002:DCC3 loc_FDCC3: ; CODE XREF: sub_FDC99+76?j seg002:DCC3 sub bh, bh seg002:DCC5 seg002:DCC5 loc_FDCC5: ; CODE XREF: sub_FDC99+72?j seg002:DCC5 add dl, 0Ch seg002:DCC8 lodsb ; A000h:0000h - A000h:1000h seg002:DCC9 out dx, al ; 03DCh COL Musterregister für Zeichengenerator seg002:DCCA add dl, 2 seg002:DCCD mov al, bh seg002:DCCF or al, 40h ; COL Steuer-Reg.: Zeichengeneratorprogrammierung seg002:DCD1 out dx, al ; 03DEh seg002:DCD2 sub dl, 0Ch seg002:DCD5 mov al, 49h ; 'I' ; GDC CURS (Adresse setzen) seg002:DCD7 out dx, al ; 03D2h seg002:DCD8 sub dl, 2 seg002:DCDB mov al, bl ; GDC eAD_lo = bl oder 0 (loc_FDCC5/loc_FDCC3) seg002:DCDD out dx, al ; 03D0h seg002:DCDE sub al, al ; GDC eAD_hi = 0 seg002:DCE0 out dx, al ; 03D0h seg002:DCE1 add dl, 2 seg002:DCE4 mov al, 4Ch ; 'L' ; GDC FIGS seg002:DCE6 out dx, al ; 03D2h seg002:DCE7 mov al, 2 ; GDC FIGS DIR=2 (rechts) seg002:DCE9 sub dl, 2 seg002:DCEC out dx, al ; 03D0h seg002:DCED dec al ; GDC FIGS DC_lo=1 (Anzahl 1) seg002:DCEF out dx, al seg002:DCF0 dec al ; GDC FIGS DC_hi=0 seg002:DCF2 out dx, al seg002:DCF3 add dl, 2 seg002:DCF6 mov al, 0B0h ; GDC RDAT read low byte seg002:DCF8 out dx, al ; 03D2h seg002:DCF9 sub di, di seg002:DCFB sub dl, 2 seg002:DCFE seg002:DCFE loc_FDCFE: ; CODE XREF: sub_FDC99+6C?j seg002:DCFE dec di seg002:DCFF stc seg002:DD00 jz short locret_FDD12 seg002:DD02 in al, dx ; 03D0h seg002:DD03 test al, 1 ; GDC Daten eingelesen? seg002:DD05 jz short loc_FDCFE ; noch keine Daten bereit seg002:DD07 inc bh seg002:DD09 cmp bh, ah seg002:DD0B jnz short loc_FDCC5 seg002:DD0D inc bl seg002:DD0F loop loc_FDCC3 seg002:DD11 clc seg002:DD12 seg002:DD12 locret_FDD12: ; CODE XREF: sub_FDC99+67?j seg002:DD12 retn seg002:DD12 sub_FDC99 endp |
-- ___________________________________ Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ... Dieser Beitrag wurde am 24.06.2025 um 10:39 Uhr von Dresdenboy editiert. |