Load map for bloader - retrotruestory/M1DEV GitHub Wiki

Oh, and for more detail, here's the assembly listing of the key portion of the boot loader. Note that the addresses shown are before linking. In this listing, "get_rtc_reg" is a code segment address 0, but after linking is 0x0092. So, you'd need to add an 0x0092 offset to each of the code addresses to match what you are seeing on the front panel.

Bill

          =================================
          Load map for bloader
              Code and Data sections joined
              Code range: 0x0000 - 0x2d00
              Data range: 0x2e00 - 0x3b74
          =================================

-------------------------- Code Symbols ------------------------------
             Name                Type   Value     Orig module
----------------------------------------------------------------------
_do_boot0                      : TEXT : 0x002f : bcrt0.o            
_sys_to_user_space             : TEXT : 0x005f : bcrt0.o            
_user_to_sys_space             : TEXT : 0x0068 : bcrt0.o            
_set_pid                       : TEXT : 0x0071 : bcrt0.o            
_write_code_pte                : TEXT : 0x0075 : bcrt0.o            
_write_data_pte                : TEXT : 0x007b : bcrt0.o            
_paging_on                     : TEXT : 0x0081 : bcrt0.o            
_paging_off                    : TEXT : 0x0089 : bcrt0.o            
_get_rtc_reg                   : TEXT : 0x0092 : bloader.o          
_ide_wr                        : TEXT : 0x0119 : bloader.o          
_ide_rd                        : TEXT : 0x0181 : bloader.o          
_ide_busy                      : TEXT : 0x01f2 : bloader.o          
_ide_check_error               : TEXT : 0x022a : bloader.o          
_ide_ready                     : TEXT : 0x0245 : bloader.o          
_drive_error                   : TEXT : 0x0274 : bloader.o          
_ide_drq                       : TEXT : 0x02c9 : bloader.o          
_ide_read_data                 : TEXT : 0x031a : bloader.o          
_ide_write_data                : TEXT : 0x0383 : bloader.o          
_hex_byte                      : TEXT : 0x03f3 : bloader.o          
_hex_word                      : TEXT : 0x042a : bloader.o          
_hex_long                      : TEXT : 0x0448 : bloader.o          
_hex_dump                      : TEXT : 0x0469 : bloader.o          
_cf_read_512                   : TEXT : 0x04ad : bloader.o          
_cf_write_512                  : TEXT : 0x04ea : bloader.o          
_cf_sector_setup               : TEXT : 0x0527 : bloader.o          
_cf_read_sector                : TEXT : 0x056a : bloader.o          
_cf_write_sector               : TEXT : 0x0587 : bloader.o          
_cf_identify                   : TEXT : 0x05a4 : bloader.o          
_ide_identify                  : TEXT : 0x05ba : bloader.o          
_ide_read_sector               : TEXT : 0x0602 : bloader.o          
_ide_write_sector              : TEXT : 0x068e : bloader.o          
_ide_reset                     : TEXT : 0x071a : bloader.o          
_cf_wait                       : TEXT : 0x0780 : bloader.o          
_cf_data_ready                 : TEXT : 0x07a3 : bloader.o          
_cf_cmd_ready                  : TEXT : 0x07d1 : bloader.o          
_cf_init                       : TEXT : 0x07ff : bloader.o          
_ide_init                      : TEXT : 0x086d : bloader.o          
_select_ide_drive              : TEXT : 0x094d : bloader.o          
_init_rs232                    : TEXT : 0x096b : bloader.o          
_init_uart                     : TEXT : 0x09d1 : bloader.o          
_ser_cin                       : TEXT : 0x0a69 : bloader.o          
_ser_pushback                  : TEXT : 0x0aad : bloader.o          
_ser_cout                      : TEXT : 0x0ab9 : bloader.o          
_ser_cin_wait                  : TEXT : 0x0b12 : bloader.o          
_ser_lin                       : TEXT : 0x0b2c : bloader.o          
_init_rtc                      : TEXT : 0x0ba5 : bloader.o          
_next_ch                       : TEXT : 0x0bca : bloader.o          
_get_hex_nibble                : TEXT : 0x0bef : bloader.o          
_get_hex_byte                  : TEXT : 0x0c45 : bloader.o          
_get_hex_word                  : TEXT : 0x0c5d : bloader.o          
_write_user_data               : TEXT : 0x0c75 : bloader.o          
_update_checksum_word          : TEXT : 0x0cbe : bloader.o          
_update_checksum_byte          : TEXT : 0x0ce5 : bloader.o          
_read_intel_hex                : TEXT : 0x0d03 : bloader.o          
_get_input                     : TEXT : 0x0eaa : bloader.o          
_init_image_table              : TEXT : 0x0ed7 : bloader.o          
_show_images                   : TEXT : 0x0f40 : bloader.o          
_create_boot_image_address_space : TEXT : 0x0ff5 : bloader.o          
_remap_supervisor_pt           : TEXT : 0x1081 : bloader.o          
_calc_chs                      : TEXT : 0x10ee : bloader.o          
_read_sector                   : TEXT : 0x1156 : bloader.o          
_write_sector                  : TEXT : 0x11df : bloader.o          
_proc_to_disk                  : TEXT : 0x125c : bloader.o          
_write_image_table             : TEXT : 0x133b : bloader.o          
_disk_to_proc                  : TEXT : 0x13c7 : bloader.o          
_read_image_table              : TEXT : 0x14ab : bloader.o          
_read_image                    : TEXT : 0x1502 : bloader.o          
_get_process_slot              : TEXT : 0x152e : bloader.o          
_delete_image                  : TEXT : 0x1594 : bloader.o          
_set_default_image             : TEXT : 0x15f3 : bloader.o          
_get_default_image             : TEXT : 0x165d : bloader.o          
_stage_boot_image              : TEXT : 0x1686 : bloader.o          
_display_current_drive         : TEXT : 0x172f : bloader.o          
_set_active_drive              : TEXT : 0x1752 : bloader.o          
_boot_image                    : TEXT : 0x17cd : bloader.o          
_load_image                    : TEXT : 0x1894 : bloader.o          
_password                      : TEXT : 0x1957 : bloader.o          
_do_verbose                    : TEXT : 0x19a5 : bloader.o          
_usage                         : TEXT : 0x19ca : bloader.o          
_do_ide_identify               : TEXT : 0x1a5b : bloader.o          
_init_ide_info                 : TEXT : 0x1bb8 : bloader.o          
_do_ide_drive                  : TEXT : 0x1bd7 : bloader.o          
_do_ide                        : TEXT : 0x1d67 : bloader.o          
_setup_address_space           : TEXT : 0x1def : bloader.o          
_default_boot                  : TEXT : 0x1f1d : bloader.o          
_main                          : TEXT : 0x1f87 : bloader.o          
__prind                        : TEXT : 0x2210 : bloader.o          
__prinx                        : TEXT : 0x223d : bloader.o          
__prino                        : TEXT : 0x226b : bloader.o          
__doprnt                       : TEXT : 0x2298 : bloader.o          
_printf                        : TEXT : 0x23b3 : bloader.o          
_fprintf                       : TEXT : 0x23cf : bloader.o          
_strip                         : TEXT : 0x23ea : bloader.o          
_read_switches                 : TEXT : 0x2428 : bloader.o          
_memcpy                        : TEXT : 0x2432 : _memcpy.o          
_strcpy                        : TEXT : 0x243e : _strcpy.o          
_strlen                        : TEXT : 0x2446 : _strlen.o          
_atoi                          : TEXT : 0x24b0 : atoi.o              
_strstr                        : TEXT : 0x24ca : strstr.o            
_strtol                        : TEXT : 0x250e : strtol.o            
_strtoul                       : TEXT : 0x2532 : strtol.o            
_toupper                       : TEXT : 0x2776 : toupper.o          
_strncmp                       : TEXT : 0x2796 : strncmp.o          
$fast_rsh32                    : TEXT : 0x280a : rsh32.o            
$vrsha16b                      : TEXT : 0x2842 : rsha16.o            
$vrsha16a                      : TEXT : 0x284a : rsha16.o            
$cmp32eq                       : TEXT : 0x2888 : _cmp32eq.o          
$cmp32leu                      : TEXT : 0x2898 : _cmp32leu.o        
$cmp32ltu                      : TEXT : 0x28a4 : _cmp32ltu.o        
$divi16                        : TEXT : 0x28b0 : _divi16.o          
$divu16                        : TEXT : 0x28c6 : _divu16.o          
$divu32                        : TEXT : 0x28dc : _divu32.o          
$modi16                        : TEXT : 0x28e8 : _modi16.o          
$modu16                        : TEXT : 0x28fe : _modu16.o          
$muli16                        : TEXT : 0x2914 : _muli16.o          
$mulu16                        : TEXT : 0x2950 : _mulu16.o          
$mulu32                        : TEXT : 0x296c : _mulu32.o          
_new_mul32u                    : TEXT : 0x2978 : _new_mulu32.o      
$usd16                         : TEXT : 0x2a01 : _usd16.o            
$cmp32_leu                     : TEXT : 0x2a92 : cmp32_leu.o        
$cmp32_ltu                     : TEXT : 0x2ad4 : cmp32_ltu.o        
$div32u                        : TEXT : 0x2b16 : div32u.o            
$signed_divide                 : TEXT : 0x2b32 : sdiv.o              
_debug_end_of_signed_divde     : TEXT : 0x2bb0 : sdiv.o              
$usd32                         : TEXT : 0x2bb2 : _usd32.o            
$debug_end_of_usd32            : TEXT : 0x2d00 : _usd32.o            
etext                          : TEXT : 0x2d00 : crtn.o              

-------------------------- Data Symbols ------------------------------
             Name                Type   Value     Orig module
----------------------------------------------------------------------
_Version                       : DATA : 0x2e00 : bloader.o          
_verbose                       : DATA : 0x2e04 : bloader.o          
_pause_before_boot             : DATA : 0x2e06 : bloader.o          
_time_mask                     : DATA : 0x2e08 : bloader.o          
_cf_base                       : DATA : 0x2e18 : bloader.o          
_active_drive                  : DATA : 0x2e1a : bloader.o          
_drive_names                   : DATA : 0x2e1c : bloader.o          
_ide_err_msgs                  : DATA : 0x2e24 : bloader.o          
_tohex                         : DATA : 0x2e34 : bloader.o          
__hexmap                       : DATA : 0x2e36 : bloader.o          
_errno                         : DATA : 0x3a6e : errno.o            
___ctype                       : DATA : 0x3a70 : chartab.o          
__brksize                      : DATA : 0x3b72 : crtn.o              
edata                          : DATA : 0x3b74 : crtn.o              

-------------------------- BSS Symbols ------------------------------
             Name                Type   Value     Orig module
----------------------------------------------------------------------
_intel_load_error              : BSS  : 0x3b74 : bloader.o          
_ide_drives                    : BSS  : 0x3b76 : bloader.o          
_r_uart1                       : BSS  : 0x3ca5 : bloader.o          
_r_uart0                       : BSS  : 0x3cba : bloader.o          
_num_commands                  : BSS  : 0x3ccf : bloader.o          
_image_table                   : BSS  : 0x3cd1 : bloader.o          
ebss                           : BSS  : 0x3d86 : crtn.o              

After add an 0x0092 offset to each of the code addresses:

Boot Loader Symbol Address Mapping
Original → Linked Addresses with Binary Representation
====================================================================================================

TEXT SEGMENTS (adjusted by +0x0092)
----------------------------------------------------------------------------------------------------
Symbol                         Type     Original       Linked                       Binary Linked Module
----------------------------------------------------------------------------------------------------
_do_boot0                      TEXT       0x002f         0xc1                          0b11000001 bcrt0.o
_sys_to_user_space             TEXT       0x005f         0xf1                          0b11110001 bcrt0.o
_user_to_sys_space             TEXT       0x0068         0xfa                          0b11111010 bcrt0.o
_set_pid                       TEXT       0x0071        0x103                         0b100000011 bcrt0.o
_write_code_pte                TEXT       0x0075        0x107                         0b100000111 bcrt0.o
_write_data_pte                TEXT       0x007b        0x10d                         0b100001101 bcrt0.o
_paging_on                     TEXT       0x0081        0x113                         0b100010011 bcrt0.o
_paging_off                    TEXT       0x0089        0x11b                         0b100011011 bcrt0.o
_get_rtc_reg                   TEXT       0x0092        0x124                         0b100100100 bloader.o
_ide_wr                        TEXT       0x0119        0x1ab                         0b110101011 bloader.o
_ide_rd                        TEXT       0x0181        0x213                        0b1000010011 bloader.o
_ide_busy                      TEXT       0x01f2        0x284                        0b1010000100 bloader.o
_ide_check_error               TEXT       0x022a        0x2bc                        0b1010111100 bloader.o
_ide_ready                     TEXT       0x0245        0x2d7                        0b1011010111 bloader.o
_drive_error                   TEXT       0x0274        0x306                        0b1100000110 bloader.o
_ide_drq                       TEXT       0x02c9        0x35b                        0b1101011011 bloader.o
_ide_read_data                 TEXT       0x031a        0x3ac                        0b1110101100 bloader.o
_ide_write_data                TEXT       0x0383        0x415                       0b10000010101 bloader.o
_hex_byte                      TEXT       0x03f3        0x485                       0b10010000101 bloader.o
_hex_word                      TEXT       0x042a        0x4bc                       0b10010111100 bloader.o
_hex_long                      TEXT       0x0448        0x4da                       0b10011011010 bloader.o
_hex_dump                      TEXT       0x0469        0x4fb                       0b10011111011 bloader.o
_cf_read_512                   TEXT       0x04ad        0x53f                       0b10100111111 bloader.o
_cf_write_512                  TEXT       0x04ea        0x57c                       0b10101111100 bloader.o
_cf_sector_setup               TEXT       0x0527        0x5b9                       0b10110111001 bloader.o
_cf_read_sector                TEXT       0x056a        0x5fc                       0b10111111100 bloader.o
_cf_write_sector               TEXT       0x0587        0x619                       0b11000011001 bloader.o
_cf_identify                   TEXT       0x05a4        0x636                       0b11000110110 bloader.o
_ide_identify                  TEXT       0x05ba        0x64c                       0b11001001100 bloader.o
_ide_read_sector               TEXT       0x0602        0x694                       0b11010010100 bloader.o
_ide_write_sector              TEXT       0x068e        0x720                       0b11100100000 bloader.o
_ide_reset                     TEXT       0x071a        0x7ac                       0b11110101100 bloader.o
_cf_wait                       TEXT       0x0780        0x812                      0b100000010010 bloader.o
_cf_data_ready                 TEXT       0x07a3        0x835                      0b100000110101 bloader.o
_cf_cmd_ready                  TEXT       0x07d1        0x863                      0b100001100011 bloader.o
_cf_init                       TEXT       0x07ff        0x891                      0b100010010001 bloader.o
_ide_init                      TEXT       0x086d        0x8ff                      0b100011111111 bloader.o
_select_ide_drive              TEXT       0x094d        0x9df                      0b100111011111 bloader.o
_init_rs232                    TEXT       0x096b        0x9fd                      0b100111111101 bloader.o
_init_uart                     TEXT       0x09d1        0xa63                      0b101001100011 bloader.o
_ser_cin                       TEXT       0x0a69        0xafb                      0b101011111011 bloader.o
_ser_pushback                  TEXT       0x0aad        0xb3f                      0b101100111111 bloader.o
_ser_cout                      TEXT       0x0ab9        0xb4b                      0b101101001011 bloader.o
_ser_cin_wait                  TEXT       0x0b12        0xba4                      0b101110100100 bloader.o
_ser_lin                       TEXT       0x0b2c        0xbbe                      0b101110111110 bloader.o
_init_rtc                      TEXT       0x0ba5        0xc37                      0b110000110111 bloader.o
_next_ch                       TEXT       0x0bca        0xc5c                      0b110001011100 bloader.o
_get_hex_nibble                TEXT       0x0bef        0xc81                      0b110010000001 bloader.o
_get_hex_byte                  TEXT       0x0c45        0xcd7                      0b110011010111 bloader.o
_get_hex_word                  TEXT       0x0c5d        0xcef                      0b110011101111 bloader.o
_write_user_data               TEXT       0x0c75        0xd07                      0b110100000111 bloader.o
_update_checksum_word          TEXT       0x0cbe        0xd50                      0b110101010000 bloader.o
_update_checksum_byte          TEXT       0x0ce5        0xd77                      0b110101110111 bloader.o
_read_intel_hex                TEXT       0x0d03        0xd95                      0b110110010101 bloader.o
_get_input                     TEXT       0x0eaa        0xf3c                      0b111100111100 bloader.o
_init_image_table              TEXT       0x0ed7        0xf69                      0b111101101001 bloader.o
_show_images                   TEXT       0x0f40        0xfd2                      0b111111010010 bloader.o
_create_boot_image_address_space TEXT       0x0ff5       0x1087                     0b1000010000111 bloader.o
_remap_supervisor_pt           TEXT       0x1081       0x1113                     0b1000100010011 bloader.o
_calc_chs                      TEXT       0x10ee       0x1180                     0b1000110000000 bloader.o
_read_sector                   TEXT       0x1156       0x11e8                     0b1000111101000 bloader.o
_write_sector                  TEXT       0x11df       0x1271                     0b1001001110001 bloader.o
_proc_to_disk                  TEXT       0x125c       0x12ee                     0b1001011101110 bloader.o
_write_image_table             TEXT       0x133b       0x13cd                     0b1001111001101 bloader.o
_disk_to_proc                  TEXT       0x13c7       0x1459                     0b1010001011001 bloader.o
_read_image_table              TEXT       0x14ab       0x153d                     0b1010100111101 bloader.o
_read_image                    TEXT       0x1502       0x1594                     0b1010110010100 bloader.o
_get_process_slot              TEXT       0x152e       0x15c0                     0b1010111000000 bloader.o
_delete_image                  TEXT       0x1594       0x1626                     0b1011000100110 bloader.o
_set_default_image             TEXT       0x15f3       0x1685                     0b1011010000101 bloader.o
_get_default_image             TEXT       0x165d       0x16ef                     0b1011011101111 bloader.o
_stage_boot_image              TEXT       0x1686       0x1718                     0b1011100011000 bloader.o
_display_current_drive         TEXT       0x172f       0x17c1                     0b1011111000001 bloader.o
_set_active_drive              TEXT       0x1752       0x17e4                     0b1011111100100 bloader.o
_boot_image                    TEXT       0x17cd       0x185f                     0b1100001011111 bloader.o
_load_image                    TEXT       0x1894       0x1926                     0b1100100100110 bloader.o
_password                      TEXT       0x1957       0x19e9                     0b1100111101001 bloader.o
_do_verbose                    TEXT       0x19a5       0x1a37                     0b1101000110111 bloader.o
_usage                         TEXT       0x19ca       0x1a5c                     0b1101001011100 bloader.o
_do_ide_identify               TEXT       0x1a5b       0x1aed                     0b1101011101101 bloader.o
_init_ide_info                 TEXT       0x1bb8       0x1c4a                     0b1110001001010 bloader.o
_do_ide_drive                  TEXT       0x1bd7       0x1c69                     0b1110001101001 bloader.o
_do_ide                        TEXT       0x1d67       0x1df9                     0b1110111111001 bloader.o
_setup_address_space           TEXT       0x1def       0x1e81                     0b1111010000001 bloader.o
_default_boot                  TEXT       0x1f1d       0x1faf                     0b1111110101111 bloader.o
_main                          TEXT       0x1f87       0x2019                    0b10000000011001 bloader.o
__prind                        TEXT       0x2210       0x22a2                    0b10001010100010 bloader.o
__prinx                        TEXT       0x223d       0x22cf                    0b10001011001111 bloader.o
__prino                        TEXT       0x226b       0x22fd                    0b10001011111101 bloader.o
__doprnt                       TEXT       0x2298       0x232a                    0b10001100101010 bloader.o
_printf                        TEXT       0x23b3       0x2445                    0b10010001000101 bloader.o
_fprintf                       TEXT       0x23cf       0x2461                    0b10010001100001 bloader.o
_strip                         TEXT       0x23ea       0x247c                    0b10010001111100 bloader.o
_read_switches                 TEXT       0x2428       0x24ba                    0b10010010111010 bloader.o
_memcpy                        TEXT       0x2432       0x24c4                    0b10010011000100 _memcpy.o
_strcpy                        TEXT       0x243e       0x24d0                    0b10010011010000 _strcpy.o
_strlen                        TEXT       0x2446       0x24d8                    0b10010011011000 _strlen.o
_atoi                          TEXT       0x24b0       0x2542                    0b10010101000010 atoi.o
_strstr                        TEXT       0x24ca       0x255c                    0b10010101011100 strstr.o
_strtol                        TEXT       0x250e       0x25a0                    0b10010110100000 strtol.o
_strtoul                       TEXT       0x2532       0x25c4                    0b10010111000100 strtol.o
_toupper                       TEXT       0x2776       0x2808                    0b10100000001000 toupper.o
_strncmp                       TEXT       0x2796       0x2828                    0b10100000101000 strncmp.o
fast_rsh32                     TEXT       0x280a       0x289c                    0b10100010011100 rsh32.o
vrsha16b                       TEXT       0x2842       0x28d4                    0b10100011010100 rsha16.o
vrsha16a                       TEXT       0x284a       0x28dc                    0b10100011011100 rsha16.o
cmp32eq                        TEXT       0x2888       0x291a                    0b10100100011010 _cmp32eq.o
cmp32leu                       TEXT       0x2898       0x292a                    0b10100100101010 _cmp32leu.o
cmp32ltu                       TEXT       0x28a4       0x2936                    0b10100100110110 _cmp32ltu.o
divi16                         TEXT       0x28b0       0x2942                    0b10100101000010 _divi16.o
divu16                         TEXT       0x28c6       0x2958                    0b10100101011000 _divu16.o
divu32                         TEXT       0x28dc       0x296e                    0b10100101101110 _divu32.o
modi16                         TEXT       0x28e8       0x297a                    0b10100101111010 _modi16.o
modu16                         TEXT       0x28fe       0x2990                    0b10100110010000 _modu16.o
muli16                         TEXT       0x2914       0x29a6                    0b10100110100110 _muli16.o
mulu16                         TEXT       0x2950       0x29e2                    0b10100111100010 _mulu16.o
mulu32                         TEXT       0x296c       0x29fe                    0b10100111111110 _mulu32.o
_new_mul32u                    TEXT       0x2978       0x2a0a                    0b10101000001010 _new_mulu32.o
usd16                          TEXT       0x2a01       0x2a93                    0b10101010010011 _usd16.o
cmp32_leu                      TEXT       0x2a92       0x2b24                    0b10101100100100 cmp32_leu.o
cmp32_ltu                      TEXT       0x2ad4       0x2b66                    0b10101101100110 cmp32_ltu.o
div32u                         TEXT       0x2b16       0x2ba8                    0b10101110101000 div32u.o
signed_divide                  TEXT       0x2b32       0x2bc4                    0b10101111000100 sdiv.o
_debug_end_of_signed_divde     TEXT       0x2bb0       0x2c42                    0b10110001000010 sdiv.o
usd32                          TEXT       0x2bb2       0x2c44                    0b10110001000100 _usd32.o
debug_end_of_usd32             TEXT       0x2d00       0x2d92                    0b10110110010010 _usd32.o
etext                          TEXT       0x2d00       0x2d92                    0b10110110010010 crtn.o


DATA SEGMENTS (original addresses)
----------------------------------------------------------------------------------------------------
Symbol                         Type      Address Module
----------------------------------------------------------------------------------------------------
_Version                       DATA       0x2e00 bloader.o
_verbose                       DATA       0x2e04 bloader.o
_pause_before_boot             DATA       0x2e06 bloader.o
_time_mask                     DATA       0x2e08 bloader.o
_cf_base                       DATA       0x2e18 bloader.o
_active_drive                  DATA       0x2e1a bloader.o
_drive_names                   DATA       0x2e1c bloader.o
_ide_err_msgs                  DATA       0x2e24 bloader.o
_tohex                         DATA       0x2e34 bloader.o
__hexmap                       DATA       0x2e36 bloader.o
_errno                         DATA       0x3a6e errno.o
___ctype                       DATA       0x3a70 chartab.o
__brksize                      DATA       0x3b72 crtn.o
edata                          DATA       0x3b74 crtn.o


BSS SEGMENTS (original addresses)
----------------------------------------------------------------------------------------------------
Symbol                         Type      Address Module
----------------------------------------------------------------------------------------------------
_intel_load_error              BSS        0x3b74 bloader.o
_ide_drives                    BSS        0x3b76 bloader.o
_r_uart1                       BSS        0x3ca5 bloader.o
_r_uart0                       BSS        0x3cba bloader.o
_num_commands                  BSS        0x3ccf bloader.o
_image_table                   BSS        0x3cd1 bloader.o
ebss                           BSS        0x3d86 crtn.o
⚠️ **GitHub.com Fallback** ⚠️