1; GEOS KERNAL by Berkeley Softworks 2; reverse engineered by Maciej Witkowiak, Michael Steil 3; 4; Dialog box: misc 5 6.include "const.inc" 7.include "geossym.inc" 8.include "geosmac.inc" 9.include "config.inc" 10.include "gkernal.inc" 11.include "c64.inc" 12 13.import DBGFOffsTop 14.import DBGFOffsLeft 15.import CalcDialogCoords 16.import DBGFNameTable 17.import DBGFArrowX 18.import DBGFileSelected 19.import DBGFilesFound 20.import DBGFTableIndex 21.import L8871 22 23.import Ddec 24.import InvertRectangle 25.import PutString 26.import Rectangle 27.import SetPattern 28.import BBMult 29.import CopyString 30.import NormalizeX 31.import Ddiv 32.import IsMseInRegion 33 34.ifdef wheels 35.import DoKeyboardShortcut 36.import FetchRAM 37.import CallRoutine 38.endif 39 40.global DBGFDoArrow 41.global DBGFPressVector 42.global DBGFilesHelp2 43.global DBGFilesHelp3 44.global DBGFilesHelp5 45.global DBGFilesHelp7 46 47.ifdef wheels 48.global SetupRAMOpCall 49.endif 50 51.segment "dlgbox1j" 52 53DBGFPressVector: 54 lda mouseData 55 bmi @2 56 jsr DBGFilesHelp7 57 clc 58 lda r2L 59 adc #$45 60 sta r2H 61 jsr IsMseInRegion 62 beq @2 63 jsr DBGFilesHelp6 64 jsr DBGFilesHelp7 65 lda mouseYPos 66 sub r2L 67 sta r0L 68 LoadB r0H, 0 69 sta r1H 70 LoadB r1L, 14 71 ldx #r0 72 ldy #r1 73 jsr Ddiv 74 lda r0L 75 add DBGFTableIndex 76 cmp DBGFilesFound 77 bcc @1 78 ldx DBGFilesFound 79 dex 80 txa 81@1: sta DBGFileSelected 82 jsr DBGFilesHelp6 83 jsr DBGFilesHelp2 84.ifdef wheels_dlgbox_dblclick 85 lda dblClickCount 86 beq @X 87 ldy dblDBData 88 dey 89 jmp DoKeyboardShortcut 90@X: lda #CLICK_COUNT 91 sta dblClickCount 92.endif 93@2: rts 94 95DBGFDoArrow: 96.ifdef wheels_dlgbox_features 97.import dbFieldWidth 98 ; which icon inside the top/bot/up/down image was the mouse on? 99 lda mouseXPos+1 100 lsr 101 lda mouseXPos 102 ror 103 lsr 104 lsr ; / 16 105 sec 106 sbc DBGFArrowX 107 lsr 108 tay 109 cpy #4 110 bcc @1 111 rts 112@1: lda DoArrowTabL,y 113 ldx DoArrowTabH,y 114 jmp CallRoutine 115 116.define DoArrowTab DBGFDoArrowTop, DBGFDoArrowBottom, DBGFDoArrowUp, DBGFDoArrowDown 117 118DoArrowTabL: 119 .lobytes DoArrowTab 120DoArrowTabH: 121 .hibytes DoArrowTab 122 123DBGFDoArrowTop: 124 lda DBGFTableIndex 125 bne @1 126 rts 127@1: lda #0 128 beq DBGFDoArrowFuncCommon 129 130DBGFDoArrowBottom: 131 ldx DBGFilesFound 132 dex 133 stx r0L 134 lda #0 135 sta r0H 136 sta r1H 137 lda #5 138 sta r1L 139 ldx #r0 140 ldy #r1 141 jsr Ddiv 142 jsr BBMult 143 lda r0L 144 bra DBGFDoArrowFuncCommon 145 146DBGFDoArrowDown: 147 lda DBGFTableIndex 148 add #5 149 cmp DBGFilesFound 150 bcc DBGFDoArrowFuncCommon 151 rts 152 153DBGFDoArrowUp: 154 lda DBGFTableIndex 155 bne @1 156 rts 157@1: sec 158 sbc #5 159DBGFDoArrowFuncCommon: 160 sta DBGFTableIndex+1 161 sta DBGFTableIndex 162 jsr SetupRAMOpCall 163 jsr FetchRAM 164 jsr DBGFilesHelp2 165 jmp DBGFilesHelp5 166 167SetupRAMOpCall: 168 sta r1L 169 lda #5 170 sta r0L 171 lda dbFieldWidth 172 sta r2L 173 ldx #r2 174 ldy #r0L 175 jsr BBMult ; r2 = 5 * dbFieldWidth (count) 176 lda dbFieldWidth 177 sta r0L 178 ldx #r1 179 ldy #r0L 180 jsr BBMult ; r1 = arg * dbFieldWidth (REU offset) 181 clc 182 lda r1L 183 adc #<$E080 184 sta r1L 185 lda r1H 186 adc #>$E080 ; REU address 187 sta r1H 188 LoadW r0, fileTrScTab ; CBM address 189 sta r3L ; REU bank 0 190 rts 191.else 192; DBGFDoArrow: 193 jsr DBGFilesHelp6 194 LoadB r0H, 0 195 lda DBGFArrowX 196 asl 197 asl 198 asl 199 rol r0H 200 addv 12 201 sta r0L 202 bcc @1 203 inc r0H 204@1: 205.ifdef bsw128 206 lda r0H 207 ora L8871 208 sta r0H 209 ldx #r0 210 jsr NormalizeX 211.endif 212 ldx DBGFTableIndex 213 CmpW r0, mouseXPos 214 bcc @2 215 dex 216 bpl @3 217@2: inx 218 lda DBGFilesFound 219 sub DBGFTableIndex 220 cmp #6 221 bcc @4 222@3: stx DBGFTableIndex 223@4: CmpB DBGFTableIndex, DBGFileSelected 224 bcc @5 225 sta DBGFileSelected 226@5: addv 4 227 cmp DBGFileSelected 228 bcs @6 229 sta DBGFileSelected 230@6: jsr DBGFilesHelp2 231 jmp DBGFilesHelp5 232.endif 233 234DBGFilesHelp2: 235.ifdef wheels_dlgbox_features 236 lda DBGFTableIndex+1 237 sec 238 sbc DBGFTableIndex 239 ldx #r0 240 jsr DBGFilesHelp4 241 MoveW DBGFNameTable, r5 242 ldy #r5 243 jmp CopyString 244.else 245 lda DBGFileSelected 246 jsr DBGFilesHelp3 247 ldy #r1 248 jmp CopyString 249 250DBGFilesHelp3: 251 ldx #r0 252 jsr DBGFilesHelp4 253 MoveW DBGFNameTable, r1 254 rts 255.endif 256 257DBGFilesHelp4: 258 sta r0L 259.ifdef wheels_dlgbox_features 260 MoveB dbFieldWidth, r1L 261.else 262 LoadB r1L, 17 263.endif 264 txa 265 pha 266 ldy #r0 267 ldx #r1 268 jsr BBMult 269 pla 270 tax 271 lda r1L 272.ifdef wheels_size_and_speed 273 sta zpage,x 274 .assert <fileTrScTab = 0, error, "fileTrScTab must be page-aligned!" 275 lda #>fileTrScTab 276.else 277 add #<fileTrScTab 278 sta zpage,x 279 lda #>fileTrScTab 280 adc #0 281.endif 282 sta zpage+1,x 283 rts 284 285DBGFilesHelp5: 286.ifdef wheels_dlgbox_features 287 PushW g_rightMargin 288 PushB g_currentMode 289 LoadB g_currentMode, $40 290 lda #0 291 jsr DBGFilesHelp8 292 clc 293 lda r2H 294 adc #$38 295 sta r2H 296 lda #0 297 jsr SetPattern 298 jsr Rectangle 299 lda #0 300 lda r4H 301 sta g_rightMargin+1 302 lda r4L 303 sta g_rightMargin 304 lda #0 305 sta r15L 306 ldx #30 307 jsr DBGFilesHelp4 308LF843: lda r15L 309 jsr DBGFilesHelp8 310 lda r3H 311 sta r11H 312 lda r3L 313 sta r11L 314 lda r2L 315 add #9 316 sta r1H 317 lda r14H 318 sta r0H 319 lda r14L 320 sta r0L 321 jsr PutString 322 clc 323 lda dbFieldWidth 324 adc r14L 325 sta r14L 326 bcc LF86E 327 inc r14H 328LF86E: inc r15L 329 lda r15L 330 cmp #5 331 bne LF843 332 jsr DBGFilesHelp6 333 PopB g_currentMode 334 PopW g_rightMargin 335 rts 336.else 337 PushW g_rightMargin 338 lda #0 339 jsr DBGFilesHelp8 340 MoveW r4, g_rightMargin 341 LoadB r15L, 0 342 jsr SetPattern 343 344 lda DBGFTableIndex 345 ldx #r14 346 jsr DBGFilesHelp4 347 LoadB g_currentMode, SET_BOLD 348@1: lda r15L 349 jsr DBGFilesHelp8 350 351 jsr Rectangle 352 MoveW r3, r11 353 lda r2L 354 addv 9 355 sta r1H 356 MoveW r14, r0 357 jsr PutString 358 AddVW 17, r14 359 inc r15L 360 CmpBI r15L, 5 361 bne @1 362 jsr DBGFilesHelp6 363 LoadB g_currentMode, NULL 364 PopW g_rightMargin 365 rts 366.endif 367 368DBGFilesHelp6: 369 lda DBGFileSelected 370 sub DBGFTableIndex 371 jsr DBGFilesHelp8 372 jmp InvertRectangle 373 374DBGFilesHelp7: 375 clc 376 jsr CalcDialogCoords 377 AddB DBGFOffsLeft, r3L 378 bcc @1 379 inc r3H 380@1: addv $7c 381 sta r4L 382 lda #0 383 adc r3H 384 sta r4H 385 AddB DBGFOffsTop, r2L 386 adc #$58 387 sta r2H 388 rts 389 390DBGFilesHelp8: 391 sta r0L 392 LoadB r1L, 14 393 ldy #r1 394 ldx #r0 395 jsr BBMult 396 jsr DBGFilesHelp7 397 AddB r0L, r2L 398 clc 399.ifdef wheels_dlgbox_features 400 adc #13 401.else 402 adc #14 403.endif 404 sta r2H 405 inc r2L 406.ifdef wheels_size ; code reuse 407 jsr IncR3 408.else 409 dec r2H 410 inc r3L 411 bne @1 412 inc r3H 413.endif 414@1: ldx #r4 415.ifdef wheels_size_and_speed 416 jmp Ddec 417.else 418 jsr Ddec 419 rts 420.endif 421 422.ifdef wheels_size ; code reuse 423.global IncR3 424IncR3: inc r3L 425 bne @1 426 inc r3H 427@1: rts 428.endif 429 430