mos_hardware/mega65/
iomap.rs1pub mod audio {
23
24 pub const AUDIO_MIXER_REGISTER_SELECT: *mut u8 = (0xD6F4) as *mut u8;
26
27 pub const AUDIO_MIXER_REGISTER_READ_PORT: *mut u8 = (0xD6F5) as *mut u8;
29
30 pub const DIGITAL_AUDIO: *mut u8 = (0xD6F8) as *mut u8;
32
33 pub const OUT_DIGITAL_AUDIO_16_BIT: *mut u8 = (0xD6F8) as *mut u8;
35
36 pub const AUDIO_READ_BACK_LSB: *mut u8 = (0xD6FC) as *mut u8;
38
39 pub const AUDIO_READ_BACK_MSB: *mut u8 = (0xD6FD) as *mut u8;
41
42 pub const PWM_SLASH_PDM_AUDIO_ENCODING_SELECT_MASK: u8 = 0b00001000;
44}
45
46pub mod audiomix {
47
48 pub const ENABLE_DC_OFFSET_SUBTRACTION_IN_AUDIO_MIXER_MASK: u8 = 0b00010000;
50
51 pub const AUDIO_MIXER_DC_ESTIMATION_TIME_STEP: *mut u8 = (0xD63D) as *mut u8;
53
54 pub const AUDIO_MIXER_REGISTER_WRITE_PORT: *mut u8 = (0xD6F5) as *mut u8;
56}
57
58pub mod auxfpga {
59
60 pub const LSB_OF_AUXILLIARY: *mut u8 = (0xD636) as *mut u8;
62
63 pub const MSB_OF_AUXILLIARY: *mut u8 = (0xD637) as *mut u8;
65
66 pub const AUXILLIARY_BYTE_OF_2ND: *mut u8 = (0xD639) as *mut u8;
68
69 pub const AUXILLIARY_BYTE_OF_3RD: *mut u8 = (0xD63A) as *mut u8;
71}
72
73pub mod cia1 {
74
75 pub const PORT_A: *mut u8 = (0xDC00) as *mut u8;
77
78 pub const PORT_B: *mut u8 = (0xDC01) as *mut u8;
80
81 pub const PORT_A_DDR: *mut u8 = (0xDC02) as *mut u8;
83
84 pub const PORT_B_DDR: *mut u8 = (0xDC03) as *mut u8;
86
87 pub const TIMER_A_COUNTER: *mut u8 = (0xDC04) as *mut u8;
89
90 pub const TIMER_B_COUNTER: *mut u8 = (0xDC06) as *mut u8;
92
93 pub const TOD_TENTHS_OF_SECONDS_MASK: u8 = 0b00001111;
95
96 pub const TOD_SECONDS_MASK: u8 = 0b00111111;
98
99 pub const TOD_MINUTES_MASK: u8 = 0b00111111;
101
102 pub const TOD_HOURS_MASK: u8 = 0b00011111;
104
105 pub const TOD_PM_FLAG_MASK: u8 = 0b10000000;
107
108 pub const SHIFT_REGISTER_DATA_REGISTER: *mut u8 = (0xDC0C) as *mut u8;
110
111 pub const TIMER_A_UNDERFLOW_MASK: u8 = 0b00000001;
113
114 pub const TIMER_B_UNDERFLOW_MASK: u8 = 0b00000010;
116
117 pub const TOD_ALARM_MASK: u8 = 0b00000100;
119
120 pub const SHIFT_REGISTER_FULL_SLASH_EMPTY_MASK: u8 = 0b00001000;
122
123 pub const FLAG_EDGE_DETECTED_MASK: u8 = 0b00010000;
125
126 pub const PLACEHOLDER___READING_CLEARS_EVENTS_MASK: u8 = 0b00000011;
128
129 pub const INTERRUPT_FLAG_MASK: u8 = 0b10000000;
131
132 pub const TIMER_A_START_MASK: u8 = 0b00000001;
134
135 pub const TIMER_A_PB6_OUT_MASK: u8 = 0b00000010;
137
138 pub const TIMER_A_TOGGLE_OR_PULSE_MASK: u8 = 0b00000100;
140
141 pub const TIMER_A_ONE_SHOT_MODE_MASK: u8 = 0b00001000;
143
144 pub const TIMER_A_TIMER_A_TICK_SOURCE_MASK: u8 = 0b00100000;
146
147 pub const SERIAL_PORT_DIRECTION_MASK: u8 = 0b01000000;
149
150 pub const CLOCK_SELECT_FOR_TOD_50_SLASH_60HZ_MASK: u8 = 0b10000000;
152
153 pub const TIMER_B_START_MASK: u8 = 0b00000001;
155
156 pub const TIMER_B_PB7_OUT_MASK: u8 = 0b00000010;
158
159 pub const TIMER_B_TOGGLE_OR_PULSE_MASK: u8 = 0b00000100;
161
162 pub const TIMER_B_ONE_SHOT_MODE_MASK: u8 = 0b00001000;
164
165 pub const STROBE_INPUT_TO_FORCE_LOAD_TIMERS_MASK: u8 = 0b00010000;
167
168 pub const TIMER_B_TIMER_A_TICK_SOURCE_MASK: u8 = 0b00000011;
170
171 pub const TOD_ALARM_EDIT_MASK: u8 = 0b10000000;
173
174 pub const TIMER_A_LATCH_VALUE: *mut u8 = (0xDC10) as *mut u8;
176
177 pub const TIMER_B_LATCH_VALUE: *mut u8 = (0xDC12) as *mut u8;
179
180 pub const TIMER_A_CURRENT_VALUE: *mut u8 = (0xDC14) as *mut u8;
182
183 pub const TIMER_B_CURRENT_VALUE: *mut u8 = (0xDC16) as *mut u8;
185
186 pub const TOD_10THS_OF_SECONDS_VALUE_MASK: u8 = 0b00001111;
188
189 pub const INTERRUPT_MASK_FOR_TIMER_B_MASK: u8 = 0b00010000;
191
192 pub const INTERRUPT_MASK_FOR_TOD_ALARM_MASK: u8 = 0b00100000;
194
195 pub const INTERRUPT_MASK_FOR_SHIFT_REGISTER_MASK: u8 = 0b01000000;
197
198 pub const INTERRUPT_MASK_FOR_FLAG_LINE_MASK: u8 = 0b10000000;
200
201 pub const TOD_ALARM_SECONDS_VALUE: *mut u8 = (0xDC19) as *mut u8;
203
204 pub const TOD_ALARM_MINUTES_VALUE: *mut u8 = (0xDC1A) as *mut u8;
206
207 pub const TOD_HOURS_VALUE_MASK: u8 = 0b01111111;
209
210 pub const TOD_AM_SLASH_PM_FLAG_MASK: u8 = 0b10000000;
212
213 pub const TOD_ALARM_10THS_OF_SECONDS_VALUE_MASK: u8 = 0b01111111;
215
216 pub const ENABLE_DELAYING_WRITES_TO_0XDD00_BY_3_CYCLES_TO_MATCH_REAL_6502_TIMING_MASK: u8 =
218 0b10000000;
219
220 pub const TOD_ALARM_HOURS_VALUE_MASK: u8 = 0b01111111;
222
223 pub const TOD_ALARM_AM_SLASH_PM_FLAG_MASK: u8 = 0b10000000;
225}
226
227pub mod cpu {
228
229 pub const DDR_CPU_PORT_6510_SLASH_45GS10: *mut u8 = (0x0000000) as *mut u8;
231
232 pub const DATA_CPU_PORT_6510_SLASH_45GS10: *mut u8 = (0x0000001) as *mut u8;
234
235 pub const WRITING_TRIGGERS_HYPERVISOR_TRAP_0XXX: *mut u8 = (0xD640) as *mut u8;
237
238 pub const HTRAPXX: *mut u8 = (0xD641) as *mut u8;
240
241 pub const CHARGE_EXTRA_CYCLE_MASK: u8 = 0b00001000;
243
244 pub const COST_OF_BADLINES_MINUS_40_MASK: u8 = 0b00000011;
246
247 pub const IEC_BUS_IS_ACTIVE_MASK: u8 = 0b00000001;
249
250 pub const COUNT_THE_NUMBER_OF_PHI_CYCLES_PER_VIDEO_FRAME: *mut u8 = (0xD7F2) as *mut u8;
252
253 pub const COUNT_THE_NUMBER_OF_USABLE: *mut u8 = (0xD7F6) as *mut u8;
255
256 pub const COUNT_NUMBER_OF_ELAPSED_VIDEO_FRAMES: *mut u8 = (0xD7FA) as *mut u8;
258
259 pub const ENABLE_CARTRIDGES_MASK: u8 = 0b00000010;
261
262 pub const SET_TO_ZERO_TO_POWER_OFF_COMPUTER_ON_SUPPORTED_SYSTEMS_MASK: u8 = 0b00000001;
264
265 pub const OVERRIDE_FOR__SLASH_GAME_MASK: u8 = 0b01000000;
267
268 pub const OVERRIDE_FOR__SLASH_EXROM_MASK: u8 = 0b10000000;
270
271 pub const ENABLE_EXPANSION_RAM_PRE_FETCH_LOGIC_MASK: u8 = 0b00000001;
273
274 pub const ENABLE_OCEAN_TYPE_A_CARTRIDGE_EMULATION_MASK: u8 = 0b00000010;
276}
277
278pub mod debug {
279
280 pub const SPRITE_SLASH_BITPLANE_FIRST_X_DEBUG_WILL_BE_REMOVED: *mut u8 = (0xD067) as *mut u8;
282
283 pub const VIC_IV_DEBUG_VALUE_READ_BACK: *mut u8 = (0xD07D) as *mut u8;
285
286 pub const VIC_IV_DEBUG_X_POSITION: *mut u8 = (0xD07D) as *mut u8;
288
289 pub const VIC_IV_DEBUG_Y_POSITION: *mut u8 = (0xD07E) as *mut u8;
291
292 pub const VIC_IV_DEBUG_OUT_OF_FRAME_SIGNAL_ENABLE_MASK: u8 = 0b10000000;
294
295 pub const COUNT_OF_CARTRIDGE_PORT_MEMORY_ACCESSES: *mut u8 = (0xD613) as *mut u8;
297
298 pub const MATRIX_SEGMENT_OF_COMBINED_KEYBOARD_8_BIT: *mut u8 = (0xD614) as *mut u8;
300
301 pub const READ_1351_SLASH_AMIGA_MOUSE_AUTO_DETECTION_DEBUG: *mut u8 = (0xD61B) as *mut u8;
303
304 pub const INTERNAL_1541_PC_LSB: *mut u8 = (0xD61C) as *mut u8;
306
307 pub const DUPLICATE_MODIFIER_KEY_STATE: *mut u8 = (0xD61F) as *mut u8;
309
310 pub const READ_ONLY_FLAGS_FOR_PADDLES: *mut u8 = (0xD624) as *mut u8;
312
313 pub const SOURCE_OF_LAST_CPU_RESET_MASK: u8 = 0b00000111;
315
316 pub const STATUS_OF_M65_R3_J21_PINS: *mut u8 = (0xD69B) as *mut u8;
318
319 pub const STATUS_OF_M65_R3_DIP_SWITCHES: *mut u8 = (0xD69D) as *mut u8;
321
322 pub const STATUS_OF_SWITCHES_0_TO_7: *mut u8 = (0xD69E) as *mut u8;
324
325 pub const STATUS_OF_SWITCHES_8_TO_15: *mut u8 = (0xD69F) as *mut u8;
327}
328
329pub mod dma {
330
331 pub const DMAGIC_DMA_LIST_ADDRESS_LSB: *mut u8 = (0xD700) as *mut u8;
333
334 pub const DMA_LIST_ADDRESS_HIGH_BYTE: *mut u8 = (0xD701) as *mut u8;
336
337 pub const DMA_LIST_ADDRESS_BANK: *mut u8 = (0xD702) as *mut u8;
339
340 pub const DMA_ENABLE_F018B_MODE_MASK: u8 = 0b00000001;
342
343 pub const DMA_LIST_ADDRESS_MEGA_BYTE: *mut u8 = (0xD704) as *mut u8;
345
346 pub const SET_LOW_ORDER_BYTE_OF_DMA_LIST_ADDRESS: *mut u8 = (0xD705) as *mut u8;
348
349 pub const DMA_LIST_ADDRESS_LOW_BYTE: *mut u8 = (0xD70E) as *mut u8;
351
352 pub const AUDIO_DMA_BLOCK_TIMEOUT_MASK: u8 = 0b00000111;
354
355 pub const AUDIO_DMA_BYPASSES_AUDIO_MIXER_MASK: u8 = 0b00010000;
357
358 pub const AUDIO_DMA_BLOCK_WRITES_MASK: u8 = 0b00100000;
360
361 pub const AUDIO_DMA_BLOCKED_MASK: u8 = 0b01000000;
363
364 pub const ENABLE_AUDIO_DMA_MASK: u8 = 0b10000000;
366
367 pub const AUDIO_DMA_CHANNEL_0_RIGHT_CHANNEL_VOLUME: *mut u8 = (0xD71C) as *mut u8;
369
370 pub const AUDIO_DMA_CHANNEL_1_RIGHT_CHANNEL_VOLUME: *mut u8 = (0xD71D) as *mut u8;
372
373 pub const AUDIO_DMA_CHANNEL_2_LEFT_CHANNEL_VOLUME: *mut u8 = (0xD71E) as *mut u8;
375
376 pub const AUDIO_DMA_CHANNEL_3_LEFT_CHANNEL_VOLUME: *mut u8 = (0xD71F) as *mut u8;
378
379 pub const AUDIO_DMA_CHANNEL_X_SAMPLE_BITS_MASK: u8 = 0b00000011;
381
382 pub const AUDIO_DMA_CHANNEL_X_STOP_FLAG_MASK: u8 = 0b00001000;
384
385 pub const AUDIO_DMA_CHANNEL_X_PLAY_32_SAMPLE_SINE_WAVE_INSTEAD_OF_DMA_DATA_MASK: u8 =
387 0b00010000;
388
389 pub const ENABLE_AUDIO_DMA_CHANNEL_X_SIGNED_SAMPLES_MASK: u8 = 0b00100000;
391
392 pub const ENABLE_AUDIO_DMA_CHANNEL_X_LOOPING_MASK: u8 = 0b01000000;
394
395 pub const ENABLE_AUDIO_DMA_CHANNEL_X_MASK: u8 = 0b10000000;
397
398 pub const AUDIO_DMA_CHANNEL_X_BASE_ADDRESS_LSB: *mut u8 = (0xD721) as *mut u8;
400
401 pub const AUDIO_DMA_CHANNEL_X_BASE_ADDRESS_MIDDLE_BYTE: *mut u8 = (0xD722) as *mut u8;
403
404 pub const AUDIO_DMA_CHANNEL_X_BASE_ADDRESS_MSB: *mut u8 = (0xD723) as *mut u8;
406
407 pub const AUDIO_DMA_CHANNEL_X_FREQUENCY_LSB: *mut u8 = (0xD724) as *mut u8;
409
410 pub const AUDIO_DMA_CHANNEL_X_FREQUENCY_MIDDLE_BYTE: *mut u8 = (0xD725) as *mut u8;
412
413 pub const AUDIO_DMA_CHANNEL_X_FREQUENCY_MSB: *mut u8 = (0xD726) as *mut u8;
415
416 pub const AUDIO_DMA_CHANNEL_X_TOP_ADDRESS_LSB: *mut u8 = (0xD727) as *mut u8;
418
419 pub const AUDIO_DMA_CHANNEL_X_TOP_ADDRESS_MSB: *mut u8 = (0xD728) as *mut u8;
421
422 pub const AUDIO_DMA_CHANNEL_X_PLAYBACK_VOLUME: *mut u8 = (0xD729) as *mut u8;
424
425 pub const AUDIO_DMA_CHANNEL_X_CURRENT_ADDRESS_LSB: *mut u8 = (0xD72A) as *mut u8;
427
428 pub const AUDIO_DMA_CHANNEL_X_CURRENT_ADDRESS_MIDDLE_BYTE: *mut u8 = (0xD72B) as *mut u8;
430
431 pub const AUDIO_DMA_CHANNEL_X_CURRENT_ADDRESS_MSB: *mut u8 = (0xD72C) as *mut u8;
433
434 pub const AUDIO_DMA_CHANNEL_X_TIMING_COUNTER_LSB: *mut u8 = (0xD72D) as *mut u8;
436
437 pub const AUDIO_DMA_CHANNEL_X_TIMING_COUNTER_MIDDLE_BYTE: *mut u8 = (0xD72E) as *mut u8;
439
440 pub const AUDIO_DMA_CHANNEL_X_TIMING_COUNTER_MSB: *mut u8 = (0xD72F) as *mut u8;
442
443 pub const CHXSBITS_MASK: u8 = 0b00000011;
445
446 pub const CHXSTP_MASK: u8 = 0b00001000;
448
449 pub const CHXSINE_MASK: u8 = 0b00010000;
451
452 pub const CHXSGN_MASK: u8 = 0b00100000;
454
455 pub const CHXLOOP_MASK: u8 = 0b01000000;
457
458 pub const CHXEN_MASK: u8 = 0b10000000;
460
461 pub const CHXBADDRL: *mut u8 = (0xD731) as *mut u8;
463
464 pub const CHXBADDRC: *mut u8 = (0xD732) as *mut u8;
466
467 pub const CHXBADDRM: *mut u8 = (0xD733) as *mut u8;
469
470 pub const CHXFREQL: *mut u8 = (0xD734) as *mut u8;
472
473 pub const CHXFREQC: *mut u8 = (0xD735) as *mut u8;
475
476 pub const CHXFREQM: *mut u8 = (0xD736) as *mut u8;
478
479 pub const CHXTADDRL: *mut u8 = (0xD737) as *mut u8;
481
482 pub const CHXTADDRM: *mut u8 = (0xD738) as *mut u8;
484
485 pub const CHXVOLUME: *mut u8 = (0xD739) as *mut u8;
487
488 pub const CHXCURADDRL: *mut u8 = (0xD73A) as *mut u8;
490
491 pub const CHXCURADDRC: *mut u8 = (0xD73B) as *mut u8;
493
494 pub const CHXCURADDRM: *mut u8 = (0xD73C) as *mut u8;
496
497 pub const CHXTMRADDRL: *mut u8 = (0xD73D) as *mut u8;
499
500 pub const CHXTMRADDRC: *mut u8 = (0xD73E) as *mut u8;
502
503 pub const CHXTMRADDRM: *mut u8 = (0xD73F) as *mut u8;
505}
506
507pub mod ethcommand {
508
509 pub const IMMEDIATELY_STOP_TRANSMITTING_THE_CURRENT_ETHERNET_FRAME: *mut u8 = (0x00) as *mut u8;
511
512 pub const TRANSMIT_PACKET: *mut u8 = (0x01) as *mut u8;
514
515 pub const DISABLE_THE_EFFECTS_OF_RXONLYONE: *mut u8 = (0xD0) as *mut u8;
517
518 pub const SELECT_VIC_IV_DEBUG_STREAM_VIA_ETHERNET_WHEN_0XD6E1: *mut u8 = (0xD4) as *mut u8;
520
521 pub const SELECT_CPU_DEBUG_STREAM_VIA_ETHERNET_WHEN_0XD6E1: *mut u8 = (0xDC) as *mut u8;
523
524 pub const RECEIVE_EXACTLY_ONE_ETHERNET_FRAME_ONLY: *mut u8 = (0xDE) as *mut u8;
526
527 pub const SELECT_1KIB_FRAMES_FOR_VIDEO_SLASH_CPU_DEBUG_STREAM_FRAMES: *mut u8 =
529 (0xF1) as *mut u8;
530
531 pub const SELECT_2KIB_FRAMES_FOR_VIDEO_SLASH_CPU_DEBUG_STREAM_FRAMES: *mut u8 =
533 (0xF2) as *mut u8;
534}
535
536pub mod ethernet {
537
538 pub const WRITE_0_TO_HOLD_ETHERNET_CONTROLLER_UNDER_RESET_MASK: u8 = 0b00000001;
540
541 pub const WRITE_0_TO_HOLD_ETHERNET_CONTROLLER_TRANSMIT_SUB_SYSTEM_UNDER_RESET_MASK: u8 =
543 0b00000010;
544
545 pub const READ_ETHERNET_RX_BITS_CURRENTLY_ON_THE_WIRE_MASK: u8 = 0b00000100;
547
548 pub const READ_ETHERNET_RX_DATA_VALID_MASK: u8 = 0b00001000;
550
551 pub const ALLOW_REMOTE_KEYBOARD_INPUT_VIA_MAGIC_ETHERNET_FRAMES_MASK: u8 = 0b00010000;
553
554 pub const INDICATE_IF_ETHERNET_RX_IS_BLOCKED_UNTIL_RX_BUFFERS_FREED_MASK: u8 = 0b01000000;
556
557 pub const ETHERNET_TRANSMIT_SIDE_IS_IDLE_MASK: u8 = 0b10000000;
559
560 pub const NUMBER_OF_FREE_RECEIVE_BUFFERS_MASK: u8 = 0b00000011;
562
563 pub const ENABLE_STREAMING_OF_CPU_INSTRUCTION_STREAM_OR_VIC_IV_DISPLAY_ON_ETHERNET_MASK: u8 =
565 0b00001000;
566
567 pub const ETHERNET_TX_IRQ_STATUS_MASK: u8 = 0b00010000;
569
570 pub const ETHERNET_RX_IRQ_STATUS_MASK: u8 = 0b00100000;
572
573 pub const ENABLE_ETHERNET_TX_IRQ_MASK: u8 = 0b01000000;
575
576 pub const ENABLE_ETHERNET_RX_IRQ_MASK: u8 = 0b10000000;
578
579 pub const TX_PACKET_SIZE: *mut u8 = (0xD6E2) as *mut u8;
581
582 pub const ETHERNET_COMMAND_REGISTER: *mut u8 = (0xD6E4) as *mut u8;
584
585 pub const ETHERNET_DISABLE_PROMISCUOUS_MODE_MASK: u8 = 0b00000001;
587
588 pub const DISABLE_CRC_CHECK_FOR_RECEIVED_PACKETS_MASK: u8 = 0b00000010;
590
591 pub const ETHERNET_RX_CLOCK_PHASE_ADJUST_MASK: u8 = 0b00000011;
593
594 pub const ETHERNET_TX_CLOCK_PHASE_ADJUST_MASK: u8 = 0b00000011;
596
597 pub const ACCEPT_BROADCAST_FRAMES_MASK: u8 = 0b00010000;
599
600 pub const ACCEPT_MULTICAST_FRAMES_MASK: u8 = 0b00100000;
602
603 pub const ETHERNET_MIIM_REGISTER_NUMBER_MASK: u8 = 0b00011111;
605
606 pub const ETHERNET_MIIM_PHY_NUMBER_MASK: u8 = 0b00000111;
608
609 pub const ETHERNET_MIIM_REGISTER_VALUE: *mut u8 = (0xD6E7) as *mut u8;
611
612 pub const ETHERNET_MAC_ADDRESS: *mut u8 = (0xD6E9) as *mut u8;
614
615 pub const MACADDRX: *mut u8 = (0xD6EA) as *mut u8;
617
618 pub const DEBUG_SHOW_NUMBER_OF_WRITES_TO_ETH_RX_BUFFER: *mut u8 = (0xD6EF) as *mut u8;
620
621 pub const DEBUG_SHOW_CURRENT_ETHERNET_TX_STATE: *mut u8 = (0xD6EF) as *mut u8;
623}
624
625pub mod f011 {
626
627 pub const ENABLE_D65_MEGA_DISK_FOR_F011_EMULATED_DRIVE_0_MASK: u8 = 0b01000000;
629
630 pub const ENABLE_D65_MEGA_DISK_FOR_F011_EMULATED_DRIVE_1_MASK: u8 = 0b10000000;
632
633 pub const DISKIMAGE_SECTOR_NUMBER: *mut u8 = (0xD68C) as *mut u8;
635
636 pub const DISKIMAGE_2_SECTOR_NUMBER: *mut u8 = (0xD690) as *mut u8;
638
639 pub const ENABLE_AUTOMATIC_TRACK_SEEKING_FOR_SECTOR_READS_AND_WRITES: *mut u8 =
641 (0xD696) as *mut u8;
642
643 pub const USE_REAL_FLOPPY_DRIVE_INSTEAD_OF_SD_CARD_FOR_1ST_FLOPPY_DRIVE_MASK: u8 = 0b00000001;
645
646 pub const USE_REAL_FLOPPY_DRIVE_INSTEAD_OF_SD_CARD_FOR_2ND_FLOPPY_DRIVE_MASK: u8 = 0b00000100;
648}
649
650pub mod fdc {
651
652 pub const DRIVE_SELECT_MASK: u8 = 0b00000111;
654
655 pub const DIRECTLY_CONTROLS_THE_SIDE_SIGNAL_TO_THE_FLOPPY_DRIVE_MASK: u8 = 0b00001000;
657
658 pub const SWAP_UPPER_AND_LOWER_HALVES_OF_DATA_BUFFER_MASK: u8 = 0b00010000;
660
661 pub const ACTIVATES_DRIVE_MOTOR_AND_LED_MASK: u8 = 0b00100000;
663
664 pub const DRIVE_LED_BLINKS_WHEN_SET_MASK: u8 = 0b01000000;
666
667 pub const RESET_THE_SECTOR_BUFFER_READ_SLASH_WRITE_POINTERS_MASK: u8 = 0b00000001;
669
670 pub const SELECTS_ALTERNATE_DPLL_READ_RECOVERY_METHOD_MASK: u8 = 0b00000010;
672
673 pub const SELECTS_READING_AND_WRITING_ALGORITHM_MASK: u8 = 0b00000100;
675
676 pub const SETS_THE_STEPPING_DIRECTION_MASK: u8 = 0b00001000;
678
679 pub const WRITING_1_CAUSES_THE_HEAD_TO_STEP_IN_THE_INDICATED_DIRECTION_MASK: u8 = 0b00010000;
681
682 pub const COMMAND_IS_A_FREE_FORMAT_MASK: u8 = 0b00100000;
684
685 pub const COMMAND_IS_A_READ_OPERATION_IF_SET_MASK: u8 = 0b01000000;
687
688 pub const COMMAND_IS_A_WRITE_OPERATION_IF_SET_MASK: u8 = 0b10000000;
690
691 pub const F011_FDC_COMMAND_REGISTER: *mut u8 = (0xD081) as *mut u8;
693
694 pub const F011_HEAD_IS_OVER_TRACK_0_FLAG_MASK: u8 = 0b00000001;
696
697 pub const F011_DISK_WRITE_PROTECT_FLAG_MASK: u8 = 0b00000010;
699
700 pub const F011_LOST_FLAG_MASK: u8 = 0b00000100;
702
703 pub const F011_FDC_CRC_CHECK_FAILURE_FLAG_MASK: u8 = 0b00001000;
705
706 pub const F011_FDC_REQUEST_NOT_FOUND_MASK: u8 = 0b00010000;
708
709 pub const F011_FDC_CPU_AND_DISK_POINTERS_TO_SECTOR_BUFFER_ARE_EQUAL_MASK: u8 = 0b00100000;
711
712 pub const F011_FDC_DRQ_FLAG_MASK: u8 = 0b01000000;
714
715 pub const F011_FDC_BUSY_FLAG_MASK: u8 = 0b10000000;
717
718 pub const F011_DISK_CHANGE_SENSE_MASK: u8 = 0b00000001;
720
721 pub const THE_FLOPPY_CONTROLLER_HAS_GENERATED_AN_INTERRUPT_MASK: u8 = 0b00000010;
723
724 pub const F011_INDEX_HOLE_SENSE_MASK: u8 = 0b00000100;
726
727 pub const F011_DISK_SENSE_MASK: u8 = 0b00001000;
729
730 pub const F011_WRITE_GATE_FLAG_MASK: u8 = 0b00010000;
732
733 pub const F011_SUCCESSIVE_MATCH_MASK: u8 = 0b00100000;
735
736 pub const F011_WRITE_REQUEST_FLAG_MASK: u8 = 0b01000000;
738
739 pub const F011_READ_REQUEST_FLAG_MASK: u8 = 0b10000000;
741
742 pub const F011_FDC_TRACK_SELECTION_REGISTER: *mut u8 = (0xD084) as *mut u8;
744
745 pub const F011_FDC_SECTOR_SELECTION_REGISTER: *mut u8 = (0xD085) as *mut u8;
747
748 pub const F011_FDC_SIDE_SELECTION_REGISTER: *mut u8 = (0xD086) as *mut u8;
750
751 pub const F011_FDC_DATA_REGISTER: *mut u8 = (0xD087) as *mut u8;
753
754 pub const SET_OR_READ_THE_CLOCK_PATTERN_TO_BE_USED_WHEN_WRITING_ADDRESS_AND_DATA_MARKS:
756 *mut u8 = (0xD088) as *mut u8;
757
758 pub const SET_OR_READ_THE_TRACK_STEPPING_RATE_IN_62: *mut u8 = (0xD089) as *mut u8;
760
761 pub const PROTECTION_CODE_OF_THE_MOST_RECENTLY_READ_SECTOR: *mut u8 = (0xD08A) as *mut u8;
763
764 pub const CONTROL_FLOPPY_DRIVE_SIDE1_LINE_MASK: u8 = 0b00000001;
766
767 pub const CONTROL_FLOPPY_DRIVE_WGATE_LINE_MASK: u8 = 0b00000010;
769
770 pub const CONTROL_FLOPPY_DRIVE_WDATA_LINE_MASK: u8 = 0b00000100;
772
773 pub const CONTROL_FLOPPY_DRIVE_STEP_LINE_MASK: u8 = 0b00001000;
775
776 pub const CONTROL_FLOPPY_DRIVE_STEPDIR_LINE_MASK: u8 = 0b00010000;
778
779 pub const CONTROL_FLOPPY_DRIVE_SELECT_LINE_MASK: u8 = 0b00100000;
781
782 pub const CONTROL_FLOPPY_DRIVE_MOTOR_LINE_MASK: u8 = 0b01000000;
784
785 pub const CONTROL_FLOPPY_DRIVE_DENSITY_SELECT_LINE_MASK: u8 = 0b10000000;
787
788 pub const SET_NUMBER_OF_BUS_CYCLES_PER_FLOPPY_MAGNETIC_INTERVAL: *mut u8 = (0xD6A2) as *mut u8;
790}
791
792pub mod fpga {
793
794 pub const LSB_OF_MEGA65_FPGA_DESIGN_DATE_STAMP: *mut u8 = (0xD630) as *mut u8;
796
797 pub const MSB_OF_MEGA65_FPGA_DESIGN_DATE_STAMP: *mut u8 = (0xD631) as *mut u8;
799
800 pub const LSB_OF_MEGA65_FPGA_DESIGN_GIT_COMMIT: *mut u8 = (0xD632) as *mut u8;
802
803 pub const COMMIT_BYTE_OF_MEGA65_FPGA_DESIGN_GIT_2ND: *mut u8 = (0xD633) as *mut u8;
805
806 pub const COMMIT_BYTE_OF_MEGA65_FPGA_DESIGN_GIT_3RD: *mut u8 = (0xD634) as *mut u8;
808
809 pub const MSB_OF_MEGA65_FPGA_DESIGN_GIT_COMMIT: *mut u8 = (0xD635) as *mut u8;
811
812 pub const SELECT_ICAPE2_FPGA_CONFIGURATION_REGISTER_FOR_READING_WRITE_ONLY: *mut u8 =
814 (0xD6C4) as *mut u8;
815
816 pub const VALUE_OF_SELECTED_ICAPE2_REGISTER: *mut u8 = (0xD6C4) as *mut u8;
818
819 pub const ADDRESS_OF_BITSTREAM_IN_BOOT_FLASH_FOR_RECONFIGURATION: *mut u8 = (0xD6C8) as *mut u8;
821
822 pub const WRITE_0X42_TO_TRIGGER_FPGA_RECONFIGURATION_TO_SWITCH_TO_ALTERNATE_BITSTREAM: *mut u8 =
824 (0xD6CF) as *mut u8;
825
826 pub const FPGA_DIE_TEMPERATURE_SENSOR: *mut u8 = (0xD6DE) as *mut u8;
828}
829
830pub mod hcpu {
831
832 pub const HYPERVISOR_A_REGISTER_STORAGE: *mut u8 = (0xD640) as *mut u8;
834
835 pub const HYPERVISOR_X_REGISTER_STORAGE: *mut u8 = (0xD641) as *mut u8;
837
838 pub const HYPERVISOR_Z_REGISTER_STORAGE: *mut u8 = (0xD643) as *mut u8;
840
841 pub const HYPERVISOR_B_REGISTER_STORAGE: *mut u8 = (0xD644) as *mut u8;
843
844 pub const HYPERVISOR_SPL_REGISTER_STORAGE: *mut u8 = (0xD645) as *mut u8;
846
847 pub const HYPERVISOR_SPH_REGISTER_STORAGE: *mut u8 = (0xD646) as *mut u8;
849
850 pub const HYPERVISOR_P_REGISTER_STORAGE: *mut u8 = (0xD647) as *mut u8;
852
853 pub const HYPERVISOR_PC_LOW_REGISTER_STORAGE: *mut u8 = (0xD648) as *mut u8;
855
856 pub const HYPERVISOR_PC_HIGH_REGISTER_STORAGE: *mut u8 = (0xD649) as *mut u8;
858
859 pub const HYPERVISOR_MAPLO_REGISTER_STORAGE: *mut u8 = (0xD64A) as *mut u8;
861
862 pub const HYPERVISOR_MAPHI_REGISTER_STORAGE: *mut u8 = (0xD64C) as *mut u8;
864
865 pub const HYPERVISOR_MAPLO_MEGA_BYTE_NUMBER_REGISTER_STORAGE: *mut u8 = (0xD64E) as *mut u8;
867
868 pub const HYPERVISOR_MAPHI_MEGA_BYTE_NUMBER_REGISTER_STORAGE: *mut u8 = (0xD64F) as *mut u8;
870
871 pub const HYPERVISOR_CPU_PORT_0X00_VALUE: *mut u8 = (0xD650) as *mut u8;
873
874 pub const HYPERVISOR_CPU_PORT_0X01_VALUE: *mut u8 = (0xD651) as *mut u8;
876
877 pub const VIC_II_SLASH_VIC_III_SLASH_VIC_IV_MODE_SELECT_MASK: u8 = 0b00000011;
879
880 pub const USE_INTERNAL_SIDS_MASK: u8 = 0b00000100;
882
883 pub const HYPERVISOR_DMAGIC_SOURCE_MB: *mut u8 = (0xD653) as *mut u8;
885
886 pub const HYPERVISOR_DMAGIC_DESTINATION_MB: *mut u8 = (0xD654) as *mut u8;
888
889 pub const HYPERVISOR_DMAGIC_LIST_ADDRESS_BITS_0_7: *mut u8 = (0xD655) as *mut u8;
891
892 pub const HYPERVISOR_DMAGIC_LIST_ADDRESS_BITS_15_8: *mut u8 = (0xD656) as *mut u8;
894
895 pub const HYPERVISOR_DMAGIC_LIST_ADDRESS_BITS_23_16: *mut u8 = (0xD657) as *mut u8;
897
898 pub const HYPERVISOR_DMAGIC_LIST_ADDRESS_BITS_27_24: *mut u8 = (0xD658) as *mut u8;
900
901 pub const VIRTUALISE_SD_SLASH_FLOPPY0_ACCESS_MASK: u8 = 0b00000001;
903
904 pub const VIRTUALISE_SD_SLASH_FLOPPY1_ACCESS_MASK: u8 = 0b00000010;
906
907 pub const HYPERVISOR_GEORAM_BASE_ADDRESS: *mut u8 = (0xD670) as *mut u8;
909
910 pub const HYPERVISOR_GEORAM_ADDRESS_MASK: *mut u8 = (0xD671) as *mut u8;
912
913 pub const ENABLE_COMPOSITED_MATRIX_MODE_MASK: u8 = 0b01000000;
915
916 pub const _MASK: u8 = 0b11111111;
918
919 pub const HYPERVISOR_ENABLE_32_BIT_JMP_SLASH_JSR_ETC_MASK: u8 = 0b00000010;
921
922 pub const HYPERVISOR_WRITE_PROTECT_C65_ROM_0X20000_0X3FFFF_MASK: u8 = 0b00000100;
924
925 pub const HYPERVISOR_ENABLE_ASC_SLASH_DIN_CAPS_LOCK_KEY_TO_ENABLE_SLASH_DISABLE_CPU_SLOW_DOWN_IN_C64_SLASH_C128_SLASH_C65_MODES_MASK: u8 = 0b00001000;
927
928 pub const HYPERVISOR_FORCE_CPU_TO_48MHZ_FOR_USERLAND_MASK: u8 = 0b00010000;
930
931 pub const HYPERVISOR_FORCE_CPU_TO_4502_PERSONALITY_MASK: u8 = 0b00100000;
933
934 pub const HYPERVISOR_FLAG_TO_INDICATE_IF_AN_IRQ_IS_PENDING_ON_EXIT_FROM_THE_HYPERVISOR__SLASH__SET_1_TO_FORCE_IRQ_SLASH_NMI_DEFERAL_FOR_1_MASK: u8 = 0b01000000;
936
937 pub const HYPERVISOR_FLAG_TO_INDICATE_IF_AN_NMI_IS_PENDING_ON_EXIT_FROM_THE_HYPERVISOR_MASK:
939 u8 = 0b10000000;
940
941 pub const HYPERVISOR_WATCHDOG_REGISTER: *mut u8 = (0xD67D) as *mut u8;
943
944 pub const HYPERVISOR_ALREADY_UPGRADED_BIT: *mut u8 = (0xD67E) as *mut u8;
946
947 pub const WRITING_TRIGGER_RETURN_FROM_HYPERVISOR: *mut u8 = (0xD67F) as *mut u8;
949}
950
951pub mod kbd {
952
953 pub const LSB_OF_KEYBOARD_FIRMWARE_DATE_STAMP: *mut u8 = (0xD62A) as *mut u8;
955
956 pub const MSB_OF_KEYBOARD_FIRMWARE_DATE_STAMP: *mut u8 = (0xD62B) as *mut u8;
958
959 pub const LSB_OF_KEYBOARD_FIRMWARE_GIT_COMMIT: *mut u8 = (0xD62C) as *mut u8;
961
962 pub const COMMIT_BYTE_OF_KEYBOARD_FIRMWARE_GIT_2ND: *mut u8 = (0xD62D) as *mut u8;
964
965 pub const COMMIT_BYTE_OF_KEYBOARD_FIRMWARE_GIT_3RD: *mut u8 = (0xD62E) as *mut u8;
967
968 pub const MSB_OF_KEYBOARD_FIRMWARE_GIT_COMMIT: *mut u8 = (0xD62F) as *mut u8;
970}
971
972pub mod math {
973
974 pub const SET_IF_HARDWARE_MULTIPLIER_IS_BUSY_MASK: u8 = 0b01000000;
976
977 pub const SET_IF_HARDWARE_DIVIDER_IS_BUSY_MASK: u8 = 0b10000000;
979
980 pub const MULTINB_OUTPUT_OF_MULTINA_0XDIV0X_64_BIT: *mut u8 = (0xD768) as *mut u8;
982
983 pub const MULTIPLIER_INPUT_A__SLASH__DIVIDER_NUMERATOR: *mut u8 = (0xD770) as *mut u8;
985
986 pub const MULTIPLIER_INPUT_B__SLASH__DIVIDER_DENOMINATOR: *mut u8 = (0xD774) as *mut u8;
988
989 pub const MULTINB_OUTPUT_OF_MULTINA_0XTIMES0X_64_BIT: *mut u8 = (0xD778) as *mut u8;
991
992 pub const MATH_UNIT_32_BIT_INPUT_X: *mut u8 = (0xD780) as *mut u8;
994
995 pub const MATHINX: *mut u8 = (0xD781) as *mut u8;
997
998 pub const SELECT_WHICH_OF_THE_16_32_BIT_MATH_REGISTERS_IS_INPUT_A_FOR_MATH_FUNCTION_UNIT_X_MASK: u8 = 0b00001111;
1000
1001 pub const SELECT_WHICH_OF_THE_16_32_BIT_MATH_REGISTERS_IS_INPUT_B_FOR_MATH_FUNCTION_UNIT_X_MASK: u8 = 0b00001111;
1003
1004 pub const UNITXINA_MASK: u8 = 0b00001111;
1006
1007 pub const UNITXINB_MASK: u8 = 0b00001111;
1009
1010 pub const SELECT_WHICH_OF_THE_16_32_BIT_MATH_REGISTERS_RECEIVES_THE_OUTPUT_OF_MATH_FUNCTION_UNIT_X_MASK: u8 = 0b00001111;
1012
1013 pub const UNITXOUT_MASK: u8 = 0b00001111;
1015
1016 pub const LATCH_INTERVAL_FOR_LATCHED_OUTPUTS: *mut u8 = (0xD7E0) as *mut u8;
1018
1019 pub const ENABLE_SETTING_OF_MATH_REGISTERS_MASK: u8 = 0b00000001;
1021
1022 pub const ENABLE_COMMITTING_OF_OUTPUT_VALUES_FROM_MATH_UNITS_BACK_TO_MATH_REGISTERS_MASK: u8 =
1024 0b00000010;
1025
1026 pub const ITERATION_COUNTER: *mut u8 = (0xD7E4) as *mut u8;
1028
1029 pub const MATH_ITERATION_COUNTER_COMPARATOR: *mut u8 = (0xD7E8) as *mut u8;
1031}
1032
1033pub mod misc {
1034
1035 pub const I2C_BUS_SELECT: *mut u8 = (0xD6D0) as *mut u8;
1037
1038 pub const DEBUG_SD_CARD_LAST_ERROR_CODE_LSB: *mut u8 = (0xD6DA) as *mut u8;
1040
1041 pub const DEBUG_SD_CARD_LAST_ERROR_CODE_MSB: *mut u8 = (0xD6DB) as *mut u8;
1043
1044 pub const READ_FPGA_FIVE_WAY_BUTTONS: *mut u8 = (0xD6F2) as *mut u8;
1046
1047 pub const ACCELEROMETER_BIT_BASH_INTERFACE: *mut u8 = (0xD6F3) as *mut u8;
1049
1050 pub const KEYBOARD_SCAN_CODE_READER: *mut u8 = (0xD6F6) as *mut u8;
1052
1053 pub const SELECT_AUDIO_CHANNEL_VOLUME_TO_BE_SET_BY_THUMB_WHEEL_3_MASK: u8 = 0b00001111;
1055
1056 pub const ENABLE_CONTROL_OF_LCD_PANEL_BRIGHTNESS_VIA_THUMB_WHEEL_MASK: u8 = 0b10000000;
1058
1059 pub const SELECT_AUDIO_CHANNEL_VOLUME_TO_BE_SET_BY_THUMB_WHEEL_1_MASK: u8 = 0b00001111;
1061
1062 pub const SELECT_AUDIO_CHANNEL_VOLUME_TO_BE_SET_BY_THUMB_WHEEL_2_MASK: u8 = 0b00001111;
1064
1065 pub const FLIP_X_AXIS_OF_TOUCH_INTERFACE_IF_SET_MASK: u8 = 0b01000000;
1067
1068 pub const FLIP_Y_AXIS_OF_TOUCH_INTERFACE_IF_SET_MASK: u8 = 0b10000000;
1070
1071 pub const SET_X_SCALE_VALUE_FOR_TOUCH_INTERFACE: *mut u8 = (0xD6B1) as *mut u8;
1073
1074 pub const SET_Y_SCALE_VALUE_FOR_TOUCH_INTERFACE: *mut u8 = (0xD6B3) as *mut u8;
1076
1077 pub const SET_X_DELTA_VALUE_FOR_TOUCH_INTERFACE: *mut u8 = (0xD6B5) as *mut u8;
1079
1080 pub const SET_Y_DELTA_VALUE_FOR_TOUCH_INTERFACE: *mut u8 = (0xD6B7) as *mut u8;
1082
1083 pub const SELECT_BYTE_NUMBER_FOR_TOUCH_PANEL_COMMUNICATIONS_INSTRUMENTATION_MASK: u8 =
1085 0b01111111;
1086
1087 pub const ENABLE_SLASH_DISABLE_TOUCH_PANEL_I2C_COMMUNICATIONS_MASK: u8 = 0b10000000;
1089
1090 pub const SELECT_I2C_BUS_NUMBER: *mut u8 = (0xD6D0) as *mut u8;
1092
1093 pub const I2C_RESET_MASK: u8 = 0b00000001;
1095
1096 pub const I2C_COMMAND_LATCH_WRITE_STROBE_MASK: u8 = 0b00000010;
1098
1099 pub const I2C_SELECT_READ_MASK: u8 = 0b00000100;
1101
1102 pub const I2C_BUS_1_SWAP_SDA_SLASH_SCL_PINS_MASK: u8 = 0b00100000;
1104
1105 pub const I2C_BUSY_FLAG_MASK: u8 = 0b01000000;
1107
1108 pub const I2C_ACK_ERROR_MASK: u8 = 0b10000000;
1110
1111 pub const I2C_ADDRESS_MASK: u8 = 0b01111111;
1113
1114 pub const I2C_DATA_WRITE_REGISTER: *mut u8 = (0xD6D3) as *mut u8;
1116
1117 pub const I2C_DATA_READ_REGISTER: *mut u8 = (0xD6D4) as *mut u8;
1119
1120 pub const LCD_PANEL_BRIGHTNESS_CONTROL: *mut u8 = (0xD6F0) as *mut u8;
1122
1123 pub const ACCELEROMETER_BIT_BASHING_PORT: *mut u8 = (0xD6F3) as *mut u8;
1125}
1126
1127pub mod qspi {
1128
1129 pub const DATA_BITS_FOR_QSPI_FLASH_INTERFACE_MASK: u8 = 0b00001111;
1131
1132 pub const CLOCK_OUTPUT_LINE_FOR_QSPI_FLASH_MASK: u8 = 0b00100000;
1134
1135 pub const ACTIVE_LOW_CHIP_SELECT_FOR_QSPI_FLASH_MASK: u8 = 0b01000000;
1137
1138 pub const TRISTATE_DB0_3_MASK: u8 = 0b10000000;
1140
1141 pub const SET_TO_CAUSE_QSPI_CLOCK_TO_FREE_RUN_AT_CPU_CLOCK_FREQUENCY_MASK: u8 = 0b00000001;
1143
1144 pub const ALTERNATE_ADDRESS_FOR_DIRECT_MANIPULATION_OF_QSPI_CLOCK_MASK: u8 = 0b00000010;
1146}
1147
1148pub mod rtc {
1149
1150 pub const REAL_TIME_CLOCK_SECONDS_VALUE: *mut u8 = (0xFFD7110u32) as *mut u8;
1152
1153 pub const REAL_TIME_CLOCK_MINUTES_VALUE: *mut u8 = (0xFFD7111u32) as *mut u8;
1155
1156 pub const REAL_TIME_CLOCK_HOURS_VALUE: *mut u8 = (0xFFD7112u32) as *mut u8;
1158
1159 pub const REAL_TIME_CLOCK_DAY_OF_MONTH_VALUE: *mut u8 = (0xFFD7113u32) as *mut u8;
1161
1162 pub const REAL_TIME_CLOCK_MONTH_VALUE: *mut u8 = (0xFFD7114u32) as *mut u8;
1164
1165 pub const REAL_TIME_CLOCK_YEAR_VALUE: *mut u8 = (0xFFD7115u32) as *mut u8;
1167
1168 pub const EXTERNAL_REAL_TIME_CLOCK_SECONDS_VALUE: *mut u8 = (0xFFD7400u32) as *mut u8;
1170
1171 pub const EXTERNAL_REAL_TIME_CLOCK_MINUTES_VALUE: *mut u8 = (0xFFD7401u32) as *mut u8;
1173
1174 pub const EXTERNAL_REAL_TIME_CLOCK_HOURS_VALUE: *mut u8 = (0xFFD7402u32) as *mut u8;
1176
1177 pub const EXTERNAL_REAL_TIME_CLOCK_DAY_OF_WEEK_VALUE: *mut u8 = (0xFFD7403u32) as *mut u8;
1179
1180 pub const EXTERNAL_REAL_TIME_CLOCK_DAY_OF_MONTH_VALUE: *mut u8 = (0xFFD7404u32) as *mut u8;
1182
1183 pub const EXTERNAL_REAL_TIME_CLOCK_MONTH_VALUE: *mut u8 = (0xFFD7405u32) as *mut u8;
1185
1186 pub const EXTERNAL_REAL_TIME_CLOCK_YEAR_VALUE: *mut u8 = (0xFFD7406u32) as *mut u8;
1188
1189 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_1_SECONDS_VALUE: *mut u8 = (0xFFD7407u32) as *mut u8;
1191
1192 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_1_MINUTES_VALUE: *mut u8 = (0xFFD7408u32) as *mut u8;
1194
1195 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_1_HOURS_VALUE: *mut u8 = (0xFFD7409u32) as *mut u8;
1197
1198 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_1_DAY_OF_WEEK__SLASH__DAY_OF_MONTH_VALUE: *mut u8 =
1200 (0xFFD740Au32) as *mut u8;
1201
1202 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_2_MINUTES_VALUE: *mut u8 = (0xFFD740Bu32) as *mut u8;
1204
1205 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_2_HOURS_VALUE: *mut u8 = (0xFFD740Cu32) as *mut u8;
1207
1208 pub const EXTERNAL_REAL_TIME_CLOCK_ALARM_2_DAY_OF_WEEK__SLASH__DAY_OF_MONTH_VALUE: *mut u8 =
1210 (0xFFD740Du32) as *mut u8;
1211
1212 pub const EXTERNAL_REAL_TIME_CLOCK_CONTROL: *mut u8 = (0xFFD740Eu32) as *mut u8;
1214
1215 pub const EXTERNAL_REAL_TIME_CLOCK_CONTROL_SLASH_STATUS_REGISTER: *mut u8 =
1217 (0xFFD740Fu32) as *mut u8;
1218
1219 pub const EXTERNAL_REAL_TIME_CLOCK_AGING_OFFSET: *mut u8 = (0xFFD7410u32) as *mut u8;
1221
1222 pub const EXTERNAL_REAL_TIME_CLOCK_TEMPERATURE: *mut u8 = (0xFFD7411u32) as *mut u8;
1224}
1225
1226pub mod sd {
1227
1228 pub const SD_CONTROLLER_STATUS_SLASH_COMMAND: *mut u8 = (0xD680) as *mut u8;
1230
1231 pub const WRITE_ONLY_SET_FILL_BYTE_FOR_USE_IN_FILL_MODE: *mut u8 = (0xD686) as *mut u8;
1233
1234 pub const SET_SLASH_READ_SD_CARD_SD_HANDSHAKE_SIGNAL_MASK: u8 = 0b00000100;
1236
1237 pub const SD_CARD_DATA_READY_INDICATION_MASK: u8 = 0b00001000;
1239
1240 pub const SET_TO_SWAP_FLOPPY_DRIVE_0_MASK: u8 = 0b00100000;
1242
1243 pub const SET_TO_SWITCH_SECTOR_BUFFER_TO_VIEW_SD_CARD_DIRECT_ACCESS_MASK: u8 = 0b10000000;
1245
1246 pub const SELECT_FLOPPY_ENCODING_MASK: u8 = 0b00001111;
1248
1249 pub const AUTOMATICALLY_SELECT_DD_OR_HD_DECODER_FOR_LAST_SECTOR_DISPLAY_MASK: u8 = 0b00010000;
1251
1252 pub const ENABLE_AUTOMATIC_VARIABLE_SPEED_SELECTION_FOR_FLOPPY_CONTROLLER_USING_TRACK_INFORMATION_BLOCKS_ON_MEGA65_HD_FLOPPIES_MASK: u8 = 0b00100000;
1254
1255 pub const SELECT_HD_DECODER_FOR_LAST_SECTOR_DISPLAY_MASK: u8 = 0b01000000;
1257
1258 pub const ENABLE_USE_OF_TRACK_INFO_BLOCK_SETTINGS_MASK: u8 = 0b10000000;
1260
1261 pub const MANUALLY_SET_F011_RSECTOR_FOUND_SIGNAL_MASK: u8 = 0b00000001;
1263
1264 pub const MANUALLY_SET_F011_WSECTOR_FOUND_SIGNAL_MASK: u8 = 0b00000010;
1266
1267 pub const MANUALLY_SET_F011_EQ_INHIBIT_SIGNAL_MASK: u8 = 0b00000100;
1269
1270 pub const MANUALLY_SET_F011_RNF_SIGNAL_MASK: u8 = 0b00001000;
1272
1273 pub const MANUALLY_SET_F011_DRQ_SIGNAL_MASK: u8 = 0b00010000;
1275
1276 pub const MANUALLY_SET_F011_LOST_SIGNAL_MASK: u8 = 0b00100000;
1278}
1279
1280pub mod sdfdc {
1281
1282 pub const F011_DRIVE_0_DISK_IMAGE_IS_D64_MEGA_IMAGE_IF_SET_MASK: u8 = 0b01000000;
1284
1285 pub const F011_DRIVE_1_DISK_IMAGE_IS_D64_IMAGE_IF_SET_MASK: u8 = 0b10000000;
1287
1288 pub const F011_DRIVE_0_USE_DISK_IMAGE_IF_SET_MASK: u8 = 0b00000001;
1290
1291 pub const F011_DRIVE_0_MEDIA_PRESENT_MASK: u8 = 0b00000010;
1293
1294 pub const WRITE_ENABLE_F011_DRIVE_0_MASK: u8 = 0b00000100;
1296
1297 pub const F011_DRIVE_1_USE_DISK_IMAGE_IF_SET_MASK: u8 = 0b00001000;
1299
1300 pub const F011_DRIVE_1_MEDIA_PRESENT_MASK: u8 = 0b00010000;
1302
1303 pub const WRITE_ENABLE_F011_DRIVE_1_MASK: u8 = 0b00100000;
1305
1306 pub const F011_DRIVE_0_DISK_IMAGE_IS_D65_IMAGE_IF_SET_MASK: u8 = 0b01000000;
1308
1309 pub const F011_DRIVE_1_DISK_IMAGE_IS_D65_IMAGE_IF_SET_MASK: u8 = 0b10000000;
1311
1312 pub const USE_REAL_FLOPPY_DRIVE_FOR_DRIVE_0_IF_SET_MASK: u8 = 0b00000001;
1314
1315 pub const READ_NEXT_SECTOR_UNDER_HEAD_IF_SET_MASK: u8 = 0b00000010;
1317
1318 pub const USE_REAL_FLOPPY_DRIVE_FOR_DRIVE_1_IF_SET_MASK: u8 = 0b00000100;
1320
1321 pub const DISABLE_FLOPPY_SPINNING_AND_TRACKING_FOR_SD_CARD_OPERATIONS_MASK: u8 = 0b00001000;
1323}
1324
1325pub mod sid {
1326
1327 pub const VOICE_X_FREQUENCY_LOW: *mut u8 = (0xD400) as *mut u8;
1329
1330 pub const VOICE_X_FREQUENCY_HIGH: *mut u8 = (0xD401) as *mut u8;
1332
1333 pub const VOICE_X_PULSE_WAVEFORM_WIDTH_LOW: *mut u8 = (0xD402) as *mut u8;
1335
1336 pub const VOICE_X_PULSE_WAVEFORM_WIDTH_HIGH_MASK: u8 = 0b00001111;
1338
1339 pub const UNUSED_MASK: u8 = 0b00001111;
1341
1342 pub const VOICE_X_GATE_BIT_MASK: u8 = 0b00000001;
1344
1345 pub const VOICE_1_SYNCHRONIZE_OSC_MASK: u8 = 0b00000010;
1347
1348 pub const VOICE_1_RING_MODULATE_OSC_MASK: u8 = 0b00000100;
1350
1351 pub const VOICE_X_TEST_BIT___DISABLE_OSCILLATOR_MASK: u8 = 0b00001000;
1353
1354 pub const VOICE_X_TRIANGLE_WAVEFORM_MASK: u8 = 0b00010000;
1356
1357 pub const VOICE_X_SAWTOOTH_WAVEFORM_MASK: u8 = 0b00100000;
1359
1360 pub const VOICE_X_PULSE_WAVEFORM_MASK: u8 = 0b01000000;
1362
1363 pub const VOICE_X_CONTROL_RANDOM_NOISE_WAVEFORM_MASK: u8 = 0b10000000;
1365
1366 pub const ENVELOPE_GENERATOR_X_DECAY_CYCLE_DURATION_MASK: u8 = 0b00001111;
1368
1369 pub const ENVELOPE_GENERATOR_X_ATTACK_CYCLE_DURATION_MASK: u8 = 0b00001111;
1371
1372 pub const ENVELOPE_GENERATOR_X_RELEASE_CYCLE_DURATION_MASK: u8 = 0b00001111;
1374
1375 pub const ENVELOPE_GENERATOR_X_SUSTAIN_CYCLE_DURATION_MASK: u8 = 0b00001111;
1377
1378 pub const VOICEX_FRQLO: *mut u8 = (0xD407) as *mut u8;
1380
1381 pub const VOICEX_FRQHI: *mut u8 = (0xD408) as *mut u8;
1383
1384 pub const VOICEX_PWLO: *mut u8 = (0xD409) as *mut u8;
1386
1387 pub const VOICEX_PWHI_MASK: u8 = 0b00001111;
1389
1390 pub const VOICEX_UNSD_MASK: u8 = 0b00001111;
1392
1393 pub const VOICEX_CTRLGATE_MASK: u8 = 0b00000001;
1395
1396 pub const VOICE_2_SYNCHRONIZE_OSC_MASK: u8 = 0b00000010;
1398
1399 pub const VOICE_2_RING_MODULATE_OSC_MASK: u8 = 0b00000100;
1401
1402 pub const VOICEX_CTRLTST_MASK: u8 = 0b00001000;
1404
1405 pub const VOICEX_CTRLTRI_MASK: u8 = 0b00010000;
1407
1408 pub const VOICEX_CTRLSAW_MASK: u8 = 0b00100000;
1410
1411 pub const VOICEX_CTRLPUL_MASK: u8 = 0b01000000;
1413
1414 pub const VOICEX_CTRLRNW_MASK: u8 = 0b10000000;
1416
1417 pub const ENVX_DECDUR_MASK: u8 = 0b00001111;
1419
1420 pub const ENVX_ATTDUR_MASK: u8 = 0b00001111;
1422
1423 pub const ENVX_RELDUR_MASK: u8 = 0b00001111;
1425
1426 pub const ENVX_SUSDUR_MASK: u8 = 0b00001111;
1428
1429 pub const VOICE_3_SYNCHRONIZE_OSC_MASK: u8 = 0b00000010;
1431
1432 pub const VOICE_3_RING_MODULATE_OSC_MASK: u8 = 0b00000100;
1434
1435 pub const FILTER_CUTOFF_FREQUENCY_LOW: *mut u8 = (0xD415) as *mut u8;
1437
1438 pub const FILTER_CUTOFF_FREQUENCY_HIGH: *mut u8 = (0xD416) as *mut u8;
1440
1441 pub const FLTR_VXOUT_MASK: u8 = 0b00000001;
1443
1444 pub const FILTER_VOICE_X_OUTPUT_MASK: u8 = 0b00000100;
1446
1447 pub const FILTER_EXTERNAL_INPUT_MASK: u8 = 0b00001000;
1449
1450 pub const FILTER_RESONANCE_MASK: u8 = 0b00001111;
1452
1453 pub const FILTER_OUTPUT_VOLUME_MASK: u8 = 0b00001111;
1455
1456 pub const FILTER_LOW_PASS_MODE_MASK: u8 = 0b00010000;
1458
1459 pub const FILTER_BAND_PASS_MODE_MASK: u8 = 0b00100000;
1461
1462 pub const FILTER_HIGH_PASS_MODE_MASK: u8 = 0b01000000;
1464
1465 pub const FILTER_CUT_OFF_VOICE_3_OUTPUT_MASK: u8 = 0b10000000;
1467
1468 pub const ANALOG_SLASH_DIGITAL_CONVERTER: *mut u8 = (0xD419) as *mut u8;
1470
1471 pub const ANALOG_SLASH_DIGITAL_CONVERTER_GAME_PADDLE_2: *mut u8 = (0xD41A) as *mut u8;
1473
1474 pub const OSCILLATOR_3_RANDOM_NUMBER_GENERATOR: *mut u8 = (0xD41B) as *mut u8;
1476
1477 pub const ENVELOPE_GENERATOR_3_OUTPUT: *mut u8 = (0xD41C) as *mut u8;
1479
1480 pub const SELECT_SID_MODE_MASK: u8 = 0b00001111;
1482}
1483
1484pub mod sysctl {
1485
1486 pub const MUTE_DIGITAL_VIDEO_AUDIO_MASK: u8 = 0b00000001;
1488
1489 pub const CONTROL_DIGITAL_VIDEO_AS_DVI_MASK: u8 = 0b00000010;
1491
1492 pub const VISUALISE_AUDIO_SAMPLES_MASK: u8 = 0b00000100;
1494
1495 pub const SELECT_48KHZ_OR_44_MASK: u8 = 0b00001000;
1497
1498 pub const CONTROL_LED_NEXT_TO_U1_ON_MOTHER_BOARD_MASK: u8 = 0b00010000;
1500
1501 pub const INVERT_DIGITAL_VIDEO_AUDIO_SAMPLE_VALUES_MASK: u8 = 0b10000000;
1503}
1504
1505pub mod touch {
1506
1507 pub const TOUCH_EVENT_1_IS_VALID_MASK: u8 = 0b00000001;
1509
1510 pub const TOUCH_EVENT_2_IS_VALID_MASK: u8 = 0b00000010;
1512
1513 pub const TOUCH_EVENT_1_UP_SLASH_DOWN_STATE_MASK: u8 = 0b00000011;
1515
1516 pub const TOUCH_EVENT_2_UP_SLASH_DOWN_STATE_MASK: u8 = 0b00000011;
1518
1519 pub const INVERT_HORIZONTAL_AXIS_MASK: u8 = 0b01000000;
1521
1522 pub const INVERT_VERTICAL_AXIS_MASK: u8 = 0b10000000;
1524
1525 pub const TOUCH_PAD_X_SCALING_LSB: *mut u8 = (0xD6B1) as *mut u8;
1527
1528 pub const TOUCH_PAD_X_SCALING_MSB: *mut u8 = (0xD6B2) as *mut u8;
1530
1531 pub const TOUCH_PAD_Y_SCALING_LSB: *mut u8 = (0xD6B3) as *mut u8;
1533
1534 pub const TOUCH_PAD_Y_SCALING_MSB: *mut u8 = (0xD6B4) as *mut u8;
1536
1537 pub const TOUCH_PAD_X_DELTA_LSB: *mut u8 = (0xD6B5) as *mut u8;
1539
1540 pub const TOUCH_PAD_Y_DELTA_LSB: *mut u8 = (0xD6B7) as *mut u8;
1542
1543 pub const TOUCH_PAD_Y_DELTA_MSB: *mut u8 = (0xD6B8) as *mut u8;
1545
1546 pub const TOUCH_PAD_TOUCH_1_X_LSB: *mut u8 = (0xD6B9) as *mut u8;
1548
1549 pub const TOUCH_PAD_TOUCH_1_Y_LSB: *mut u8 = (0xD6BA) as *mut u8;
1551
1552 pub const TOUCH_PAD_TOUCH_1_X_MSBS_MASK: u8 = 0b00000011;
1554
1555 pub const TOUCH_PAD_TOUCH_1_Y_MSBS_MASK: u8 = 0b00000011;
1557
1558 pub const TOUCH_PAD_TOUCH_2_X_LSB: *mut u8 = (0xD6BC) as *mut u8;
1560
1561 pub const TOUCH_PAD_TOUCH_2_Y_LSB: *mut u8 = (0xD6BD) as *mut u8;
1563
1564 pub const TOUCH_PAD_TOUCH_2_X_MSBS_MASK: u8 = 0b00000011;
1566
1567 pub const TOUCH_PAD_TOUCH_2_Y_MSBS_MASK: u8 = 0b00000011;
1569
1570 pub const TOUCH_PAD_GESTURE_DIRECTIONS_MASK: u8 = 0b00001111;
1572
1573 pub const TOUCH_PAD_GESTURE_ID_MASK: u8 = 0b00001111;
1575}
1576
1577pub mod tough {
1578
1579 pub const TOUCH_PAD_X_DELTA_MSB: *mut u8 = (0xD6B6) as *mut u8;
1581}
1582
1583pub mod uart {
1584
1585 pub const UART_DATA_REGISTER: *mut u8 = (0xD600) as *mut u8;
1587
1588 pub const UART_RX_BYTE_READY_FLAG_MASK: u8 = 0b00000001;
1590
1591 pub const UART_RX_OVERRUN_FLAG_MASK: u8 = 0b00000010;
1593
1594 pub const UART_RX_PARITY_ERROR_FLAG_MASK: u8 = 0b00000100;
1596
1597 pub const UART_RX_FRAMING_ERROR_FLAG_MASK: u8 = 0b00001000;
1599
1600 pub const UART_PARITY_MASK: u8 = 0b00000001;
1602
1603 pub const UART_PARITY_ENABLE_MASK: u8 = 0b00000010;
1605
1606 pub const UART_CHARACTER_SIZE_MASK: u8 = 0b00000011;
1608
1609 pub const UART_SYNCHRONISATION_MODE_FLAGS_MASK: u8 = 0b00000011;
1611
1612 pub const UART_ENABLE_RECEIVE_MASK: u8 = 0b01000000;
1614
1615 pub const UART_ENABLE_TRANSMIT_MASK: u8 = 0b10000000;
1617
1618 pub const UART_BAUD_RATE_DIVISOR: *mut u8 = (0xD603) as *mut u8;
1620
1621 pub const UART_INTERRUPT_MASK_MASK: u8 = 0b00010000;
1623
1624 pub const UART_INTERRUPT_FLAG_MASK: u8 = 0b00010000;
1626
1627 pub const C65_CAPSLOCK_KEY_SENSE_MASK: u8 = 0b00000001;
1629
1630 pub const C65_KEYBOARD_COLUMN_8_SELECT_MASK: u8 = 0b00000010;
1632
1633 pub const C65_KEYBOARD_EXTRA_LINES_DATA_DIRECTION_REGISTER_MASK: u8 = 0b00000011;
1635
1636 pub const C65_UART_BAUD_CLOCK_SOURCE_MASK: u8 = 0b00000001;
1638
1639 pub const PMOD_PORT_A_ON_FPGA_BOARD_MASK: u8 = 0b00111111;
1641
1642 pub const DISPLAY_HARDWARE_ZOOM_OF_REGION_UNDER_FIRST_TOUCH_POINT_ALWAYS_MASK: u8 = 0b01000000;
1644
1645 pub const DISPLAY_HARDWARE_ZOOM_OF_REGION_UNDER_FIRST_TOUCH_POINT_FOR_ON_SCREEN_KEYBOARD_MASK: u8 = 0b10000000;
1647
1648 pub const ON_SCREEN_KEYBOARD_MASK: u8 = 0b00000011;
1650
1651 pub const SD_CARD_MOSI_SLASH_MISO_MASK: u8 = 0b00000100;
1653
1654 pub const SD_CARD_SCLK_MASK: u8 = 0b00001000;
1656
1657 pub const SD_CARD_CS_BO_MASK: u8 = 0b00010000;
1659
1660 pub const ENABLE_SD_CARD_BITBASH_MODE_MASK: u8 = 0b00100000;
1662
1663 pub const HDMI_I2C_CONTROL_INTERFACE_SDA_DATA_LINE_MASK: u8 = 0b01000000;
1665
1666 pub const HDMI_I2C_CONTROL_INTERFACE_SCL_CLOCK_MASK: u8 = 0b10000000;
1668
1669 pub const DATA_DIRECTION_REGISTER: *mut u8 = (0xD60E) as *mut u8;
1671
1672 pub const DIRECTLY_READ_C65_CURSOR_LEFT_KEY_MASK: u8 = 0b00000001;
1674
1675 pub const DIRECTLY_READ_C65_CURSOR_UP_KEY_MASK: u8 = 0b00000010;
1677
1678 pub const SET_TO_1_IF_THE_MEGA65_IS_RUNNING_ON_REAL_HARDWARE_MASK: u8 = 0b00100000;
1680
1681 pub const LIGHT_OR_HEAVY_DIMMING_OF_BACKGROUND_MATERIAL_BEHIND_ON_SCREEN_KEYBOARD_MASK: u8 =
1683 0b01000000;
1684
1685 pub const ENABLE_ACCESSIBLE_KEYBOARD_INPUT_VIA_JOYSTICK_PORT_2_FIRE_BUTTON_MASK: u8 =
1687 0b10000000;
1688
1689 pub const LAST_KEY_PRESS_AS_ASCII: *mut u8 = (0xD610) as *mut u8;
1691
1692 pub const RIGHT_SHIFT_KEY_STATE_MASK: u8 = 0b00000001;
1694
1695 pub const LEFT_SHIFT_KEY_STATE_MASK: u8 = 0b00000010;
1697
1698 pub const CTRL_KEY_STATE_MASK: u8 = 0b00000100;
1700
1701 pub const MEGA_SLASH_C_MASK: u8 = 0b00001000;
1703
1704 pub const ALT_KEY_STATE_MASK: u8 = 0b00010000;
1706
1707 pub const NOSCRL_KEY_STATE_MASK: u8 = 0b00100000;
1709
1710 pub const CAPS_LOCK_KEY_STATE_MASK: u8 = 0b01000000;
1712
1713 pub const ENABLE_WIDGET_BOARD_KEYBOARD_SLASH_JOYSTICK_INPUT_MASK: u8 = 0b00000001;
1715
1716 pub const ENABLE_PS2_KEYBOARD_SLASH_JOYSTICK_INPUT_MASK: u8 = 0b00000010;
1718
1719 pub const ENABLE_PHYSICAL_KEYBOARD_INPUT_MASK: u8 = 0b00000100;
1721
1722 pub const ENABLE_VIRTUAL_SLASH_SNYTHETIC_KEYBOARD_INPUT_MASK: u8 = 0b00001000;
1724
1725 pub const DEBUG_OSK_OVERLAY_MASK: u8 = 0b00010000;
1727
1728 pub const ENABLE_PS_SLASH_2__SLASH__USB_KEYBOARD_SIMULATED_JOYSTICK_INPUT_MASK: u8 = 0b00010000;
1730
1731 pub const EXCHANGE_JOYSTICK_PORTS_1__AND__2_MASK: u8 = 0b00100000;
1733
1734 pub const ROTATE_INPUTS_OF_JOYSTICK_A_BY_180_DEGREES_MASK: u8 = 0b01000000;
1736
1737 pub const ROTATE_INPUTS_OF_JOYSTICK_B_BY_180_DEGREES_MASK: u8 = 0b10000000;
1739
1740 pub const SET_TO_0X7F_FOR_NO_KEY_DOWN_MASK: u8 = 0b01111111;
1742
1743 pub const ENABLE_DISPLAY_OF_ON_SCREEN_KEYBOARD_COMPOSITED_OVERLAY_MASK: u8 = 0b10000000;
1745
1746 pub const DISPLAY_ALTERNATE_ON_SCREEN_KEYBOARD_LAYOUT_MASK: u8 = 0b10000000;
1748
1749 pub const DISPLAY_ON_SCREEN_KEYBOARD_AT_TOP_MASK: u8 = 0b10000000;
1751
1752 pub const PHYSICAL_KEYBOARD_SCAN_RATE: *mut u8 = (0xD618) as *mut u8;
1754
1755 pub const LAST_KEY_PRESS_AS_PETSCII: *mut u8 = (0xD619) as *mut u8;
1757
1758 pub const SYSTEM_CONTROL_FLAGS: *mut u8 = (0xD61A) as *mut u8;
1760
1761 pub const KEYBOARD_LED_REGISTER_SELECT_MASK: u8 = 0b01111111;
1763
1764 pub const KEYBOARD_LED_CONTROL_ENABLE_MASK: u8 = 0b10000000;
1766
1767 pub const KEYBOARD_LED_REGISTER_VALUE: *mut u8 = (0xD61E) as *mut u8;
1769
1770 pub const READ_PORT_A_PADDLE_X: *mut u8 = (0xD620) as *mut u8;
1772
1773 pub const READ_PORT_A_PADDLE_Y: *mut u8 = (0xD621) as *mut u8;
1775
1776 pub const READ_PORT_B_PADDLE_X: *mut u8 = (0xD622) as *mut u8;
1778
1779 pub const READ_PORT_B_PADDLE_Y: *mut u8 = (0xD623) as *mut u8;
1781
1782 pub const J21_PINS_1___6: *mut u8 = (0xD625) as *mut u8;
1784
1785 pub const J21_PINS_11___14_INPUT_SLASH_OUTPUT_VALUES: *mut u8 = (0xD626) as *mut u8;
1787
1788 pub const J21_PINS_11___14_DATA_DIRECTION_REGISTER: *mut u8 = (0xD628) as *mut u8;
1790
1791 pub const MEGA65_MODEL_ID: *mut u8 = (0xD629) as *mut u8;
1793}
1794
1795pub mod vic2 {
1796
1797 pub const SPRITE_N_HORIZONTAL_POSITION: *mut u8 = (0xD000) as *mut u8;
1799
1800 pub const SPRITE_N_VERTICAL_POSITION: *mut u8 = (0xD001) as *mut u8;
1802
1803 pub const SNX: *mut u8 = (0xD002) as *mut u8;
1805
1806 pub const SNY: *mut u8 = (0xD003) as *mut u8;
1808
1809 pub const SPRITE_HORIZONTAL_POSITION_MSBS: *mut u8 = (0xD010) as *mut u8;
1811
1812 pub const SCROLL_VERTICAL_SMOOTH_24_SLASH_25_MASK: u8 = 0b00000111;
1814
1815 pub const SELECT_ROW_24_SLASH_25_MASK: u8 = 0b00001000;
1817
1818 pub const DISABLE_DISPLAY_MASK: u8 = 0b00010000;
1820
1821 pub const BITMAP_MODE_MASK: u8 = 0b00100000;
1823
1824 pub const EXTENDED_BACKGROUND_MODE_MASK: u8 = 0b01000000;
1826
1827 pub const RASTER_COMPARE_BIT_8_MASK: u8 = 0b10000000;
1829
1830 pub const RASTER_COMPARE_BITS_0_TO_7: *mut u8 = (0xD012) as *mut u8;
1832
1833 pub const COARSE_HORIZONTAL_BEAM_POSITION: *mut u8 = (0xD013) as *mut u8;
1835
1836 pub const COARSE_VERTICAL_BEAM_POSITION: *mut u8 = (0xD014) as *mut u8;
1838
1839 pub const SPRITE_ENABLE_BITS: *mut u8 = (0xD015) as *mut u8;
1841
1842 pub const HORIZONTAL_SMOOTH_SCROLL_MASK: u8 = 0b00000111;
1844
1845 pub const SELECT_COLUMN_38_SLASH_40_MASK: u8 = 0b00001000;
1847
1848 pub const MULTI_COLOUR_MODE_MASK: u8 = 0b00010000;
1850
1851 pub const DISABLES_VIDEO_OUTPUT_ON_MAX_MACHINE_MASK: u8 = 0b00100000;
1853
1854 pub const SPRITE_VERTICAL_EXPANSION_ENABLE_BITS: *mut u8 = (0xD017) as *mut u8;
1856
1857 pub const CHARACTER_SET_ADDRESS_LOCATION_MASK: u8 = 0b00000111;
1859
1860 pub const SCREEN_ADDRESS_MASK: u8 = 0b00001111;
1862
1863 pub const RASTER_COMPARE_INDICATE_OR_ACKNOWLEDGE_MASK: u8 = 0b00000001;
1865
1866 pub const SPRITE_MASK: u8 = 0b00000010;
1868
1869 pub const LIGHT_PEN_INDICATE_OR_ACKNOWLEDGE_MASK: u8 = 0b00001000;
1871
1872 pub const MASK_RASTER_IRQ_MASK: u8 = 0b00000001;
1874
1875 pub const MASK_SPRITE_MASK: u8 = 0b00000010;
1877
1878 pub const SPRITE_BACKGROUND_PRIORITY_BITS: *mut u8 = (0xD01B) as *mut u8;
1880
1881 pub const SPRITE_MULTICOLOUR_ENABLE_BITS: *mut u8 = (0xD01C) as *mut u8;
1883
1884 pub const SPRITE_HORIZONTAL_EXPANSION_ENABLE_BITS: *mut u8 = (0xD01D) as *mut u8;
1886
1887 pub const SPRITE_SLASH_SPRITE_COLLISION_INDICATE_BITS: *mut u8 = (0xD01E) as *mut u8;
1889
1890 pub const SPRITE_SLASH_FOREGROUND_COLLISION_INDICATE_BITS: *mut u8 = (0xD01F) as *mut u8;
1892
1893 pub const DISPLAY_BORDER_COLOUR_MASK: u8 = 0b00001111;
1895
1896 pub const SCREEN_COLOUR_MASK: u8 = 0b00001111;
1898
1899 pub const MULTI_COLOUR_1_MASK: u8 = 0b00001111;
1901
1902 pub const MULTI_COLOUR_2_MASK: u8 = 0b00001111;
1904
1905 pub const MULTI_COLOUR_3_MASK: u8 = 0b00001111;
1907
1908 pub const SPRITE_N_COLOUR__SLASH__16_COLOUR_SPRITE_TRANSPARENCY_COLOUR: *mut u8 =
1910 (0xD027) as *mut u8;
1911
1912 pub const SPRNCOL: *mut u8 = (0xD028) as *mut u8;
1914
1915 pub const SELECT_2MHZ_MASK: u8 = 0b00000001;
1917}
1918
1919pub mod vic3 {
1920
1921 pub const SPRITE_MULTI_COLOUR_0: *mut u8 = (0xD025) as *mut u8;
1923
1924 pub const SPRITE_MULTI_COLOUR_1: *mut u8 = (0xD026) as *mut u8;
1926
1927 pub const WRITE_0XA5_THEN_0X96_TO_ENABLE_C65_SLASH_VIC_III_IO_REGISTERS: *mut u8 =
1929 (0xD02F) as *mut u8;
1930
1931 pub const MAP_2ND_KB_OF_COLOUR_RAM__0XDC00_0XDFFF_MASK: u8 = 0b00000001;
1933
1934 pub const ENABLE_EXTERNAL_VIDEO_SYNC_MASK: u8 = 0b00000010;
1936
1937 pub const USE_PALETTE_ROM_MASK: u8 = 0b00000100;
1939
1940 pub const MAP_C65_ROM__0X8000_MASK: u8 = 0b00001000;
1942
1943 pub const MAP_C65_ROM__0XA000_MASK: u8 = 0b00010000;
1945
1946 pub const MAP_C65_ROM__0XC000_MASK: u8 = 0b00100000;
1948
1949 pub const SELECT_BETWEEN_C64_AND_C65_CHARSET_MASK: u8 = 0b01000000;
1951
1952 pub const MAP_C65_ROM__0XE000_MASK: u8 = 0b10000000;
1954
1955 pub const ENABLE_VIC_III_INTERLACED_MODE_MASK: u8 = 0b00000001;
1957
1958 pub const ENABLE_VIC_III_MONO_VIDEO_OUTPUT_MASK: u8 = 0b00000010;
1960
1961 pub const ENABLE_1280_HORIZONTAL_PIXELS_MASK: u8 = 0b00000100;
1963
1964 pub const ENABLE_400_VERTICAL_PIXELS_MASK: u8 = 0b00001000;
1966
1967 pub const BIT_PLANE_MODE_MASK: u8 = 0b00010000;
1969
1970 pub const ENABLE_EXTENDED_ATTRIBUTES_AND_8_BIT_COLOUR_ENTRIES_MASK: u8 = 0b00100000;
1972
1973 pub const ENABLE_C65_FAST_MODE_MASK: u8 = 0b01000000;
1975
1976 pub const ENABLE_C64_640_HORIZONTAL_PIXELS__SLASH__80_COLUMN_MODE_MASK: u8 = 0b10000000;
1978
1979 pub const BITPLANE_X_ADDRESS_MASK: u8 = 0b00000111;
1981
1982 pub const BXADEVN_MASK: u8 = 0b00000111;
1984
1985 pub const BXADODD_MASK: u8 = 0b00000111;
1987
1988 pub const COMPLEMENT_BITPLANE_FLAGS: *mut u8 = (0xD03B) as *mut u8;
1990
1991 pub const BITPLANE_X_OFFSET: *mut u8 = (0xD03E) as *mut u8;
1993
1994 pub const BITPLANE_Y_OFFSET: *mut u8 = (0xD03F) as *mut u8;
1996
1997 pub const DISPLAY_ADDRESS_TRANSLATER: *mut u8 = (0xD040) as *mut u8;
1999
2000 pub const BNPIX: *mut u8 = (0xD041) as *mut u8;
2002}
2003
2004pub mod vic4 {
2005
2006 pub const WRITE_0X45_THEN_0X54_TO_MAP_45E100_ETHERNET_CONTROLLER_BUFFERS_TO_0XD000_0XDFFF:
2008 *mut u8 = (0xD02F) as *mut u8;
2009
2010 pub const WRITE_0X47_THEN_0X53_TO_ENABLE_C65GS_SLASH_VIC_IV_IO_REGISTERS: *mut u8 =
2012 (0xD02F) as *mut u8;
2013
2014 pub const TOP_BORDER_POSITION: *mut u8 = (0xD048) as *mut u8;
2016
2017 pub const TOP_BORDER_POSITION_MSB_MASK: u8 = 0b00001111;
2019
2020 pub const SPRITE_BITPLANE_MODIFY_MODE_ENABLES_MASK: u8 = 0b00001111;
2022
2023 pub const BOTTOM_BORDER_POSITION: *mut u8 = (0xD04A) as *mut u8;
2025
2026 pub const CHARACTER_GENERATOR_HORIZONTAL_POSITION: *mut u8 = (0xD04C) as *mut u8;
2028
2029 pub const SPRITE_HORIZONTAL_TILE_ENABLES_MASK: u8 = 0b00001111;
2031
2032 pub const CHARACTER_GENERATOR_VERTICAL_POSITION: *mut u8 = (0xD04E) as *mut u8;
2034
2035 pub const SPRITE_7_4_HORIZONTAL_TILE_ENABLES_MASK: u8 = 0b00001111;
2037
2038 pub const READ_HORIZONTAL_RASTER_SCAN_POSITION_LSB: *mut u8 = (0xD050) as *mut u8;
2040
2041 pub const READ_HORIZONTAL_RASTER_SCAN_POSITION_MSB_MASK: u8 = 0b00111111;
2043
2044 pub const WHEN_SET_MASK: u8 = 0b01000000;
2046
2047 pub const WHEN_CLEAR_MASK: u8 = 0b10000000;
2049
2050 pub const READ_PHYSICAL_RASTER_POSITION: *mut u8 = (0xD052) as *mut u8;
2052
2053 pub const ENABLE_SIMULATED_SHADOW_MASK_MASK: u8 = 0b01000000;
2055
2056 pub const RASTER_COMPARE_SOURCE_MASK: u8 = 0b10000000;
2058
2059 pub const ENABLE_16_BIT_CHARACTER_NUMBERS_MASK: u8 = 0b00000001;
2061
2062 pub const ENABLE_FULL_COLOUR_MODE_FOR_CHARACTER_NUMBERS_LE0XFF_MASK: u8 = 0b00000010;
2064
2065 pub const ENABLE_FULL_COLOUR_MODE_FOR_CHARACTER_NUMBERS_GT0XFF_MASK: u8 = 0b00000100;
2067
2068 pub const VIDEO_OUTPUT_HORIZONTAL_SMOOTHING_ENABLE_MASK: u8 = 0b00001000;
2070
2071 pub const SPRITE_H640_ENABLE_MASK: u8 = 0b00010000;
2073
2074 pub const ENABLE_PAL_CRT_LIKE_SCAN_LINE_EMULATION_MASK: u8 = 0b00100000;
2076
2077 pub const C65GS_FAST_MODE_MASK: u8 = 0b01000000;
2079
2080 pub const ALPHA_COMPOSITOR_ENABLE_MASK: u8 = 0b10000000;
2082
2083 pub const SPRITE_EXTENDED_HEIGHT_ENABLE: *mut u8 = (0xD055) as *mut u8;
2085
2086 pub const SPRITE_EXTENDED_HEIGHT_SIZE: *mut u8 = (0xD056) as *mut u8;
2088
2089 pub const SPRITE_EXTENDED_WIDTH_ENABLES: *mut u8 = (0xD057) as *mut u8;
2091
2092 pub const NUMBER_OF_BYTES_TO_ADVANCE_BETWEEN_EACH_TEXT_ROW: *mut u8 = (0xD058) as *mut u8;
2094
2095 pub const HORIZONTAL_HARDWARE_SCALE_OF_TEXT_MODE: *mut u8 = (0xD05A) as *mut u8;
2097
2098 pub const VERTICAL_SCALING_OF_TEXT_MODE: *mut u8 = (0xD05B) as *mut u8;
2100
2101 pub const WIDTH_OF_SINGLE_SIDE_BORDER: *mut u8 = (0xD05C) as *mut u8;
2103
2104 pub const SIDE_BORDER_WIDTH_MASK: u8 = 0b00111111;
2106
2107 pub const ENABLE_RASTER_DELAY_MASK: u8 = 0b01000000;
2109
2110 pub const ENABLE_VIC_II_HOT_REGISTERS_MASK: u8 = 0b10000000;
2112
2113 pub const NUMBER_OF_CHARACTERS_TO_DISPLAY_PER_ROW: *mut u8 = (0xD05E) as *mut u8;
2115
2116 pub const SPRITE_H640_X_SUPER_MSBS: *mut u8 = (0xD05F) as *mut u8;
2118
2119 pub const SCREEN_RAM_PRECISE_BASE_ADDRESS: *mut u8 = (0xD060) as *mut u8;
2121
2122 pub const NUMBER_OF_CHARACTERS_TO_DISPLAY_PER_MASK: u8 = 0b00000011;
2124
2125 pub const SOURCE_FULL_COLOUR_CHARACTER_DATA_FROM_EXPANSION_RAM_MASK: u8 = 0b10000000;
2127
2128 pub const COLOUR_RAM_BASE_ADDRESS: *mut u8 = (0xD064) as *mut u8;
2130
2131 pub const CHARACTER_SET_PRECISE_BASE_ADDRESS: *mut u8 = (0xD068) as *mut u8;
2133
2134 pub const SPRITE_16_COLOUR_MODE_ENABLES: *mut u8 = (0xD06B) as *mut u8;
2136
2137 pub const SPRITE_POINTER_ADDRESS: *mut u8 = (0xD06C) as *mut u8;
2139
2140 pub const MODE_SPRITE_POINTER_16_BIT_MASK: u8 = 0b10000000;
2142
2143 pub const FIRST_VIC_II_RASTER_LINE_MASK: u8 = 0b00111111;
2145
2146 pub const SELECT_MORE_VGA_COMPATIBLE_MODE_IF_SET_MASK: u8 = 0b01000000;
2148
2149 pub const NTSC_EMULATION_MODE_MASK: u8 = 0b10000000;
2151
2152 pub const VIC_IV_BITMAP_SLASH_TEXT_PALETTE_BANK_MASK: u8 = 0b00000011;
2154
2155 pub const SPRITE_PALETTE_BANK_MASK: u8 = 0b00000011;
2157
2158 pub const BITMAP_SLASH_TEXT_PALETTE_BANK_MASK: u8 = 0b00000011;
2160
2161 pub const PALETTE_BANK_MAPPED_AT_0XD100_0XD3FF_MASK: u8 = 0b00000011;
2163
2164 pub const VIC_IV_16_COLOUR_BITPLANE_ENABLE_FLAGS: *mut u8 = (0xD071) as *mut u8;
2166
2167 pub const SPRITE_Y_POSITION_ADJUSTMENT: *mut u8 = (0xD072) as *mut u8;
2169
2170 pub const ALPHA_DELAY_FOR_COMPOSITOR_MASK: u8 = 0b00001111;
2172
2173 pub const PHYSICAL_RASTERS_PER_VIC_II_RASTER_MASK: u8 = 0b00001111;
2175
2176 pub const SPRITE_ALPHA_BLEND_ENABLE: *mut u8 = (0xD074) as *mut u8;
2178
2179 pub const SPRITE_ALPHA_BLEND_VALUE: *mut u8 = (0xD075) as *mut u8;
2181
2182 pub const SPRITE_V400_ENABLES: *mut u8 = (0xD076) as *mut u8;
2184
2185 pub const SPRITE_V400_Y_POSITION_MSBS: *mut u8 = (0xD077) as *mut u8;
2187
2188 pub const SPRITE_V400_Y_POSITION_SUPER_MSBS: *mut u8 = (0xD078) as *mut u8;
2190
2191 pub const RASTER_COMPARE_VALUE: *mut u8 = (0xD079) as *mut u8;
2193
2194 pub const RASTER_COMPARE_VALUE_MSB_MASK: u8 = 0b00000111;
2196
2197 pub const CONTINUOUSLY_MONITOR_SPRITE_POINTER_MASK: u8 = 0b00001000;
2199
2200 pub const RESERVED_MASK: u8 = 0b00000011;
2202
2203 pub const ENABLE_ADDITIONAL_IRQ_SOURCES_MASK: u8 = 0b01000000;
2205
2206 pub const RASTER_COMPARE_IS_IN_PHYSICAL_RASTERS_IF_SET_MASK: u8 = 0b10000000;
2208
2209 pub const NUMBER_OF_TEXT_ROWS_TO_DISPLAY: *mut u8 = (0xD07B) as *mut u8;
2211
2212 pub const SET_WHICH_128KB_BANK_BITPLANES_MASK: u8 = 0b00000111;
2214
2215 pub const RESV_MASK: u8 = 0b00001000;
2217
2218 pub const HSYNC_POLARITY_MASK: u8 = 0b00010000;
2220
2221 pub const VSYNC_POLARITY_MASK: u8 = 0b00100000;
2223
2224 pub const VIC_IV_DEBUG_PIXEL_SELECT_RED_MASK: u8 = 0b00000011;
2226
2227 pub const PALETTE_BANK_SELECTION: *mut u8 = (0xD070) as *mut u8;
2229}