From 47019cc25d7c44b4ded68134bdf56fe35ca9f5df Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 17 Jul 2019 23:04:04 +0200 Subject: [PATCH] more comments, slightly safer IEC --- bin/kernal | Bin 8192 -> 8192 bytes c64/kernal/acptr.s | 11 ++++++++++- c64/kernal/chkin.s | 10 +++++++++- c64/kernal/chkout.s | 10 +++++++++- c64/kernal/chrin.s | 13 +++++++++++-- c64/kernal/chrout.s | 12 +++++++++++- c64/kernal/cint.s | 13 +++++++++++-- c64/kernal/fda3.ioinit.s | 11 ++++++++++- c64/kernal/iec_turnaround_to_listen.s | 8 +++++++- c64/kernal/iec_turnaround_to_talk.s | 5 +++++ c64/kernal/ramtas.s | 11 ++++++++++- c64/kernal/vector.s | 10 +++++++++- 12 files changed, 102 insertions(+), 12 deletions(-) diff --git a/bin/kernal b/bin/kernal index b992407fc68a9447757675ac94314744bfb3cbbb..b169ad255553ccf808ff4860bb28ea4feb8e634f 100644 GIT binary patch delta 1104 zcmYjOZ)g)|7{6STrpBhZ)H+UV@hNngcB>Rtw@_hC*R4z4Q|sJZ>saB`xgDGPybLy) z4<>f_rQ=dCAJmfe#49*b0;^FgCZn4MgfI~tEc^2zWeqjCyZ0U4zs|jv=-6@G^Sr;` z^Zef5^ISL(4kQO0wlU=;#{qZDgt<-Fs6bx{8dGsc&c0(p-)CMZUM%*M&aN#L?~z_I zL^y6`{iO1#YrmtlvasBmy5SP|t$PhPXQ=0er=df6(Ad7cw60zQFP*MKXIbN**UAK? z$t_NXO!+bj522k{P#MaERd!eTvL->nsKEtZrDzcxG(xC}YBFC%S3UqozTm$p%<3lXV&=j!O+8 z;3+H-7@-O86|T@Fcyjp-7%*Ukz<|XhoEjHoMOE@o`Ger>j%waVOl?|({nUDyNG+-5BNQ}CIpLHK1e5iw4^1lnbDAfcK_GLa?m^brVbHZ<@xbWB6yZ#<) zO~0De@-CsCEr<>66Q!UU%R5(Nq8yo#)EN;%Cf-)AHy`N_nHm>~Y5iC*)Nk^3zs5;d zKIVh)_nIt9^XGKe6mtgqOdKNEQ)1$O5NieOPiTbcDu=dxsNC5$*ikS#cWsfFO62P4 zbo81OSvq|qdR<~*fPpONSWtRe+M5bS8S;V1d8zuOjdHh~v@O~uvC+i2 zP28wpUkUq5c#NV*v6o_;;O7L-l<<9ugGIb$;yA^2f?kT<6n`POi{fsI6FM@t7m9eX t$PDAzHC!s<$~vB;_#VY~Dc&R4ORRBZif>T-tTg*Wf|EFIf<}u?mYg_s1OB79TQ_n-}_!T5Dp~w*er+S=WP33F&$N_a5#a*vDb~mI>hCo<6f>HS9e&cmQ^AN(NR+qe_~+nNjlX#M4pBG#5)J zx}%oWbk4e((frDIXF&UvIg6(7(BK1ERi(P%+I<+HaM8?cr|JzBmmP$i;dJ^`MhuaV z>h=*5f{KP$wGdv`LM)(FZO`#)n~yZR+Q;Uh0WB|ONT-$YN#fkgORIp`pcLiP~HG_n8i4U)Qt>+%f3b&7O;qNm)`npI^naJ5! zCqyX{CrVs|5gpIVKR3P{7|~TOGNJl0Usis|S$!%;W^uJD>W?)ZpE zPJN*{$5<-Zt)t(-uA(e8z3YNf_3GIVh#8`Mt*LKEzTEkUgD}&`x5rb_3na2|d@*{F zFfhPC_R%me_cU*}kYJ1?4Wqvz!r*a6o)lr0Z$fis=zYhi8Wj(;H7muLh&fY f*C;L<*lL(3c!Od;#ZQXUza%)qaYHm(xUK&SsrvoH diff --git a/c64/kernal/acptr.s b/c64/kernal/acptr.s index d9ac012f..b6fd88be 100644 --- a/c64/kernal/acptr.s +++ b/c64/kernal/acptr.s @@ -1,3 +1,12 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 274 +;; - [CM64] Compute's Mapping the Commodore 64 - page 224/225 +;; +;; CPU registers that has to be preserved (see [RG64]): .Y +;; + acptr: rts diff --git a/c64/kernal/chkin.s b/c64/kernal/chkin.s index ffa509d7..f48b8b5e 100644 --- a/c64/kernal/chkin.s +++ b/c64/kernal/chkin.s @@ -1,4 +1,12 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 275 +;; - [CM64] Compute's Mapping the Commodore 64 - page 229 +;; +;; CPU registers that has to be preserved (see [RG64]): .Y +;; chkin: diff --git a/c64/kernal/chkout.s b/c64/kernal/chkout.s index 36b5a683..0f1f2e58 100644 --- a/c64/kernal/chkout.s +++ b/c64/kernal/chkout.s @@ -1,4 +1,12 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 276 +;; - [CM64] Compute's Mapping the Commodore 64 - page 229 +;; +;; CPU registers that has to be preserved (see [RG64]): .Y +;; chkout: diff --git a/c64/kernal/chrin.s b/c64/kernal/chrin.s index c60c5040..761c7c79 100644 --- a/c64/kernal/chrin.s +++ b/c64/kernal/chrin.s @@ -1,5 +1,14 @@ - ; Function defined on pp272-273 of C64 Programmers Reference Guide - ;; Compute's Mapping the 64, p228 + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 277/278 +;; - [CM64] Compute's Mapping the Commodore 64 - page 228 +;; +;; CPU registers that has to be preserved (see [RG64]): .Y +;; + + ;; Reads a byte of input, unless from keyboard. ;; If from keyboard, then it gets a whole line of input, and returns the first char. ;; Repeated calls after that read out the successive bytes of the line of input. diff --git a/c64/kernal/chrout.s b/c64/kernal/chrout.s index 02503fa7..926a9391 100644 --- a/c64/kernal/chrout.s +++ b/c64/kernal/chrout.s @@ -1,4 +1,14 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 278/279 +;; - [CM64] Compute's Mapping the Commodore 64 - page 228 +;; +;; CPU registers that has to be preserved (see [RG64]): .Y +;; + + chrout: ;; Crude implementation of character output diff --git a/c64/kernal/cint.s b/c64/kernal/cint.s index bf760279..7dd92f46 100644 --- a/c64/kernal/cint.s +++ b/c64/kernal/cint.s @@ -1,5 +1,14 @@ - ;; Function defined on pp272-273 of C64 Programmers Reference Guide - ;; Compute's Mapping the 64 p215 + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 280 +;; - [CM64] Compute's Mapping the Commodore 64 - page 242 +;; +;; CPU registers that has to be preserved (see [RG64]): none +;; + + cint: jsr setup_vicii diff --git a/c64/kernal/fda3.ioinit.s b/c64/kernal/fda3.ioinit.s index 2cadb1bc..fd579b03 100644 --- a/c64/kernal/fda3.ioinit.s +++ b/c64/kernal/fda3.ioinit.s @@ -1,4 +1,13 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 285 +;; - [CM64] Compute's Mapping the Commodore 64 - page 238 +;; +;; CPU registers that has to be preserved (see [RG64]): none +;; + ioinit: ; Set $00/$01 port mode and value diff --git a/c64/kernal/iec_turnaround_to_listen.s b/c64/kernal/iec_turnaround_to_listen.s index 964ef0ed..b1d0f576 100644 --- a/c64/kernal/iec_turnaround_to_listen.s +++ b/c64/kernal/iec_turnaround_to_listen.s @@ -4,6 +4,10 @@ iec_turnaround_to_listen: + ;; Timing is critical here - execute on disabled IRQs + php + sei + ;; Pull DATA, release CLK and ATN (we are not sending commands) jsr iec_pull_data_release_atn_clk @@ -17,11 +21,13 @@ iec_turnaround_to_listen: bne - ;; Timeout + plp sec rts ;; CLK is pulled by the device, OK -* +* + plp clc rts diff --git a/c64/kernal/iec_turnaround_to_talk.s b/c64/kernal/iec_turnaround_to_talk.s index c8cc9b47..c24639d2 100644 --- a/c64/kernal/iec_turnaround_to_talk.s +++ b/c64/kernal/iec_turnaround_to_talk.s @@ -4,6 +4,10 @@ iec_turnaround_to_talk: + ;; Timing is critical here - execute on disabled IRQs + php + sei + ;; First make sure both CLK, DATA and ATN are released at our side jsr iec_release_atn jsr iec_release_clk_data @@ -14,5 +18,6 @@ iec_turnaround_to_talk: ;; Pull CLK line, it should be held by talker jsr iec_pull_clk_release_data + plp clc rts diff --git a/c64/kernal/ramtas.s b/c64/kernal/ramtas.s index 45de1315..e54f7bd2 100644 --- a/c64/kernal/ramtas.s +++ b/c64/kernal/ramtas.s @@ -1,4 +1,13 @@ -; Function defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 291 +;; - [CM64] Compute's Mapping the Commodore 64 - page 237 +;; +;; CPU registers that has to be preserved (see [RG64]): none +;; + ramtas: ; C64 Programmer's Reference guide p291: ; Clear $0000-$0101, $0200-$03ff diff --git a/c64/kernal/vector.s b/c64/kernal/vector.s index 027bf14a..4a086198 100644 --- a/c64/kernal/vector.s +++ b/c64/kernal/vector.s @@ -1,4 +1,12 @@ -; Functions defined on pp272-273 of C64 Programmers Reference Guide + +;; +;; Official Kernal routine, described in: +;; +;; - [RG64] C64 Programmer's Reference Guide - page 293 (RESTOR), 304 (VECTOR) +;; - [CM64] Compute's Mapping the Commodore 64 - page 237 +;; +;; CPU registers that has to be preserved (see [RG64]): none +;; restor: