several fixes
This commit is contained in:
@@ -208,7 +208,7 @@ TmsProbeFailed:
|
||||
ret
|
||||
|
||||
TmsPorts: ; List of ports to probe:
|
||||
defb 0x80 ; ColecoVision / SG-1000
|
||||
defb 0xE0 ; ColecoVision / SG-1000
|
||||
defb 98h ; MSX
|
||||
defb 10h ; Sord M5 (conflicts with z80ctrl SIO port)
|
||||
;defb 8 ; Tatung Einstein (conflicts with z80ctrl drive ports)
|
||||
|
||||
@@ -6,6 +6,7 @@ CS_VT82C42_CTRL .EQU 0xF1
|
||||
org 0x6000
|
||||
;VT82C42
|
||||
|
||||
keyboard_init:
|
||||
ld a, 0xA7 ;Disable Mouse
|
||||
out (CS_VT82C42_CTRL), A
|
||||
ld a, 0xAD ;Disable Keyboard
|
||||
|
||||
1
OperatingSystem/Applications/displaydemo/.zout/.gitignore
vendored
Normal file
1
OperatingSystem/Applications/displaydemo/.zout/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
kbdtest*
|
||||
640
OperatingSystem/Applications/displaydemo/.zout/symbols.s
Normal file
640
OperatingSystem/Applications/displaydemo/.zout/symbols.s
Normal file
@@ -0,0 +1,640 @@
|
||||
;This file is generated by the build script.
|
||||
;Do not make any changes here!
|
||||
|
||||
?a0000 equ 0x14C3
|
||||
?a0001 equ 0x1580
|
||||
ADDR_RTC equ 0xD0
|
||||
A_RTS_OFF equ 0x1DA
|
||||
A_RTS_ON equ 0x1E3
|
||||
BOOT_PHASE0 equ 0x86
|
||||
BOOT_PHASE1 equ 0xB7
|
||||
BOOT_PHASE1_LOOP equ 0xC0
|
||||
BOOT_PHASE2 equ 0xCB
|
||||
B_BEEP equ 0x50
|
||||
B_DSKSEL equ 0x74
|
||||
B_FATCD equ 0x7D
|
||||
B_FATCREATE equ 0x80
|
||||
B_FATOPEN equ 0x77
|
||||
B_FATREAD equ 0x7A
|
||||
B_FATWRITE equ 0x83
|
||||
B_IICRECV equ 0x56
|
||||
B_IICSEND equ 0x53
|
||||
B_KEYREAD equ 0x6B
|
||||
B_KEYREADASCII equ 0x6E
|
||||
B_KEYSEND equ 0x71
|
||||
B_PRINTAHEX equ 0x62
|
||||
B_PRINTCHAR equ 0x59
|
||||
B_PRINTINLINE equ 0x5F
|
||||
B_PRINTLN equ 0x65
|
||||
B_PRINTSTR equ 0x5C
|
||||
B_READCHAR equ 0x68
|
||||
COMMAND equ 0x1AA4
|
||||
COMMAND_ABORT equ 0x1AA1
|
||||
COMMAND_BACKSPACE equ 0x1AE5
|
||||
COMMAND_LUT equ 0x1A0F
|
||||
COMMAND_PROCESS equ 0x1B0B
|
||||
COMMAND_PROCESS_FOUND equ 0x1B46
|
||||
COMMAND_PROCESS_LOOP equ 0x1B0E
|
||||
COMMAND_PROCESS_LOOP_STR1 equ 0x1B17
|
||||
COMMAND_PROCESS_LOOP_STR2 equ 0x1B2D
|
||||
COMMAND_PROCESS_NEXT_ENTRY equ 0x1B32
|
||||
COMMAND_PROCESS_NEXT_ENTRYI equ 0x1B31
|
||||
COMMAND_PROCESS_NOT_FOUND equ 0x1B3D
|
||||
COMMAND_READ equ 0x1AB6
|
||||
CONSOLE_INIT equ 0xEF
|
||||
CS_APU_CTRL equ 0xF9
|
||||
CS_APU_DATA equ 0xF8
|
||||
CS_BANK equ 0x00
|
||||
CS_CTC_0 equ 0x04
|
||||
CS_CTC_1 equ 0x05
|
||||
CS_CTC_2 equ 0x06
|
||||
CS_CTC_3 equ 0x07
|
||||
CS_DIP equ 0x01
|
||||
CS_PIA_CR equ 0x33
|
||||
CS_PIA_PA equ 0x30
|
||||
CS_PIA_PB equ 0x31
|
||||
CS_PIA_PC equ 0x32
|
||||
CS_PIO_AC equ 0xF6
|
||||
CS_PIO_AD equ 0xF4
|
||||
CS_PIO_BC equ 0xF7
|
||||
CS_PIO_BD equ 0xF5
|
||||
CS_SIO_A_C equ 0x09
|
||||
CS_SIO_A_D equ 0x08
|
||||
CS_SIO_B_C equ 0x0B
|
||||
CS_SIO_B_D equ 0x0A
|
||||
CS_VT82C42_CTRL equ 0xF1
|
||||
CS_VT82C42_DATA equ 0xF0
|
||||
DHEX_TO_BYTE equ 0x251
|
||||
DHEX_TO_BYTE_FAILED equ 0x26D
|
||||
ERR_SYNTAX equ 0x1B5C
|
||||
EXEC_RST_08 equ 0xDF1
|
||||
EXEC_RST_10 equ 0xDF5
|
||||
EXEC_RST_18 equ 0xE01
|
||||
HEX_TO_BIN equ 0x271
|
||||
HEX_TO_BIN_2 equ 0x27F
|
||||
HEX_TO_INVALID_2 equ 0x286
|
||||
IDE_CMD_IDENT equ 0xEC
|
||||
IDE_CMD_READSEC equ 0x20
|
||||
IDE_CMD_WRITESEC equ 0x30
|
||||
IDE_DEV_TABLE equ 0x1325
|
||||
IDE_RD equ 0x40
|
||||
IDE_REG_ALTSTS equ 0x16
|
||||
IDE_REG_CMDSTS equ 0x0F
|
||||
IDE_REG_DATA equ 0x08
|
||||
IDE_REG_DRVADDR equ 0x17
|
||||
IDE_REG_ERROR equ 0x09
|
||||
IDE_REG_HCYL equ 0x0D
|
||||
IDE_REG_HEAD equ 0x0E
|
||||
IDE_REG_LBA0 equ 0x0B
|
||||
IDE_REG_LBA1 equ 0x0C
|
||||
IDE_REG_LBA2 equ 0x0D
|
||||
IDE_REG_LBA3 equ 0x0E
|
||||
IDE_REG_LCYL equ 0x0C
|
||||
IDE_REG_SECTOR equ 0x0A
|
||||
IDE_REG_SSECTOR equ 0x0B
|
||||
IDE_RST equ 0x80
|
||||
IDE_WR equ 0x20
|
||||
IIC_CLK equ 0x01
|
||||
IIC_DATA equ 0x02
|
||||
INT_PIO_ADDRC equ 0xF6
|
||||
INT_PIO_ADDRD equ 0xF4
|
||||
INT_VEC equ 0x1B
|
||||
INT_VEC_TABLE equ 0x4000
|
||||
IO_AY0_ADDR equ 0x40
|
||||
IO_AY0_DATA equ 0x41
|
||||
IO_AY1_ADDR equ 0x42
|
||||
IO_AY1_DATA equ 0x43
|
||||
IO_REG0 equ 0x20
|
||||
IO_RTC_AMPM equ 0x25
|
||||
IO_RTC_CTR_D equ 0x2D
|
||||
IO_RTC_CTR_E equ 0x2E
|
||||
IO_RTC_CTR_F equ 0x2F
|
||||
IO_RTC_DAY0 equ 0x26
|
||||
IO_RTC_DAY1 equ 0x27
|
||||
IO_RTC_HOUR equ 0x24
|
||||
IO_RTC_MIN0 equ 0x22
|
||||
IO_RTC_MIN1 equ 0x23
|
||||
IO_RTC_MON0 equ 0x28
|
||||
IO_RTC_MON1 equ 0x29
|
||||
IO_RTC_SEC0 equ 0x20
|
||||
IO_RTC_SEC1 equ 0x21
|
||||
IO_RTC_WEEK equ 0x2C
|
||||
IO_RTC_YEAR1 equ 0x2B
|
||||
IO_RTC_YERR0 equ 0x2A
|
||||
MEM_FAT_AMOUNT equ 0x45BC
|
||||
MEM_FAT_CLUSTERLEN equ 0x45BF
|
||||
MEM_FAT_COUNT1 equ 0x45C0
|
||||
MEM_FAT_CURDIR equ 0x45E3
|
||||
MEM_FAT_CURRDIR equ 0x4643
|
||||
MEM_FAT_DATASTART equ 0x45C5
|
||||
MEM_FAT_DIRSEC equ 0x45D1
|
||||
MEM_FAT_EXEC_COUNT equ 0x4649
|
||||
MEM_FAT_EXEC_CURR equ 0x4647
|
||||
MEM_FAT_EXEC_START equ 0x464B
|
||||
MEM_FAT_FILEREMAIN equ 0x45CD
|
||||
MEM_FAT_OF0_ATTRIBUTE equ 0x4633
|
||||
MEM_FAT_OF0_CCLUST equ 0x4635
|
||||
MEM_FAT_OF0_DATREM equ 0x463F
|
||||
MEM_FAT_OF0_DATSEC equ 0x463B
|
||||
MEM_FAT_OF0_FATSEC equ 0x4637
|
||||
MEM_FAT_RESERVED equ 0x45BA
|
||||
MEM_FAT_ROOTSTART equ 0x45C9
|
||||
MEM_FAT_SECTORS equ 0x45BD
|
||||
MEM_FAT_TMPFNAME equ 0x45D3
|
||||
MEM_FAT_TMPPOINTER equ 0x45C1
|
||||
MEM_IDE_BUFFER equ 0x43BA
|
||||
MEM_IDE_DEVICE equ 0x42CF
|
||||
MEM_IDE_DEV_TABLE equ 0x42D9
|
||||
MEM_IDE_FSBUFFER equ 0x45BA
|
||||
MEM_IDE_PARTITION equ 0x42D1
|
||||
MEM_IDE_POINTER equ 0x42D5
|
||||
MEM_IDE_SELECTED equ 0x4319
|
||||
MEM_IDE_STATUS equ 0x42D0
|
||||
MEM_IDE_STRING_0 equ 0x431A
|
||||
MEM_IDE_STRING_1 equ 0x4342
|
||||
MEM_IDE_STRING_2 equ 0x436A
|
||||
MEM_IDE_STRING_3 equ 0x4392
|
||||
MSG_CLEAR equ 0x1D2
|
||||
NOT_IMPLEMENTED equ 0x1B55
|
||||
OP_CALL equ 0x1BB7
|
||||
OP_CD equ 0x1F87
|
||||
OP_CLR equ 0x1D4B
|
||||
OP_DASM equ 0x1C38
|
||||
OP_DIR equ 0x1F83
|
||||
OP_DUMP equ 0x1BD7
|
||||
OP_EXEC equ 0x1B9E
|
||||
OP_FSEXEC equ 0x1FA4
|
||||
OP_IIC_IN equ 0x1CFF
|
||||
OP_IIC_OUT equ 0x1C9F
|
||||
OP_IO_IN equ 0x1C68
|
||||
OP_IO_OUT equ 0x1C7E
|
||||
OP_LSDSK equ 0x1F60
|
||||
OP_RTIME equ 0x1D4F
|
||||
OP_SELDSK equ 0x1F64
|
||||
OP_SET equ 0x1C07
|
||||
OP_STIME equ 0x1EE7
|
||||
POST_CHECK_APU equ 0x1FDD
|
||||
POST_CHECK_IDE_30 equ 0x2008
|
||||
POST_CHECK_IDE_40 equ 0x201B
|
||||
POST_CHECK_PIO equ 0x1FB8
|
||||
POST_START equ 0x1FA8
|
||||
POST_TEST_RTC equ 0x2035
|
||||
PRG_RAM_START equ 0x4110
|
||||
PRG_RAM_TOP equ 0xFF00
|
||||
PRINTINLINE equ 0x1EC
|
||||
PROG_MEM_START equ 0x4000
|
||||
PROG_ROM_START equ 0x100
|
||||
RST_00 equ 0x00
|
||||
RST_08 equ 0x08
|
||||
RST_10 equ 0x10
|
||||
RST_18 equ 0x18
|
||||
STACK_RAM_TOP equ 0xFFFF
|
||||
START_ADDR equ 0x8000
|
||||
START_ROM equ 0x00
|
||||
STRCONV_BYTES_TO_HEX equ 0x288
|
||||
STRCONV_BYTES_TO_HEX_1 equ 0x297
|
||||
STRCONV_BYTES_TO_HEX_2 equ 0x2A1
|
||||
STR_Banner_Start equ 0x27E9
|
||||
STR_PD_HEADER equ 0x19C8
|
||||
STR_keyboard_init_err equ 0x8123
|
||||
STR_keyboard_init_failed equ 0x8147
|
||||
STR_keyboard_init_missing equ 0x8169
|
||||
STR_keyboard_init_okay equ 0x8108
|
||||
SYS_BUF_START equ 0x4010
|
||||
SYS_RAM_START equ 0x4000
|
||||
VAR_CONSOLE_BAUD equ 0x18
|
||||
VAR_CONSOLE_CONF equ 0x0F
|
||||
VDP_MEM equ 0x80
|
||||
VDP_REG equ 0x81
|
||||
_COMMAND_PROCESS_FOUND equ 0x1B54
|
||||
_OP_CALL equ 0x1BD6
|
||||
_OP_IIC_ACK_ERR equ 0x1CE4
|
||||
_OP_IIC_ACK_ERR_str equ 0x1CEB
|
||||
_OP_IIC_IN_LOOP equ 0x1D31
|
||||
_OP_IIC_IN_LOOP_TEXT equ 0x1D3E
|
||||
_OP_IIC_OUT_LOOP equ 0x1CB5
|
||||
_OP_IIC_OUT_SEND equ 0x1CD1
|
||||
_OP_RTIME_NN equ 0x1D52
|
||||
_OP_RTIME_RD_CMD equ 0x1E0A
|
||||
_OP_SELDSK_INVALID equ 0x1F73
|
||||
_OP_SELDSK_INVALID_STR equ 0x1F8B
|
||||
_OP_SET_LOOP equ 0x1C1F
|
||||
_OP_STIME_INVALID equ 0x1EAD
|
||||
_OP_STIME_PROMPT equ 0x1EC4
|
||||
_OP_STIME_PROMPT_ERR equ 0x1EDC
|
||||
_OP_STIME_STR_DAY equ 0x1E0B
|
||||
_OP_STIME_STR_HOUR equ 0x1E5C
|
||||
_OP_STIME_STR_MIN equ 0x1E77
|
||||
_OP_STIME_STR_MON equ 0x1E26
|
||||
_OP_STIME_STR_SEC equ 0x1E92
|
||||
_OP_STIME_STR_YEAR equ 0x1E41
|
||||
_POST_CHECK_APU_FAILED equ 0x1FFC
|
||||
_POST_CHECK_IDE_FAILED equ 0x202E
|
||||
_POST_CHECK_PIO_FAILED equ 0x1FD1
|
||||
_POST_TEST_RTC_INVALID equ 0x206F
|
||||
_POST_TEST_RTC_NOTFOUND equ 0x2068
|
||||
_STR_NOT_FOUND equ 0x1B77
|
||||
_STR_NOT_IMPLEMENTED equ 0x1B63
|
||||
_STR_SYNTAX equ 0x1B8B
|
||||
_beep_pause_l1 equ 0xE1F
|
||||
_compare_filename_loop equ 0x24AA
|
||||
_compare_filename_nomatch equ 0x24B8
|
||||
_eof equ 0x818F
|
||||
_fat_cd_navigate equ 0x265F
|
||||
_fat_cd_navigate_end equ 0x26A5
|
||||
_fat_cd_navigate_errfile equ 0x26CD
|
||||
_fat_cd_navigate_errfile_str equ 0x26FF
|
||||
_fat_cd_navigate_error equ 0x26B7
|
||||
_fat_cd_navigate_error_str equ 0x26D5
|
||||
_fat_cd_navigate_findsec equ 0x2664
|
||||
_fat_cd_navigate_findsec_skipslash equ 0x2690
|
||||
_fat_cd_navigate_goback_fl equ 0x261B
|
||||
_fat_cd_navigate_inerror equ 0x26C5
|
||||
_fat_cd_navigate_inerrorS equ 0x26BF
|
||||
_fat_cd_navigate_inerrore equ 0x26C6
|
||||
_fat_cd_navigate_inputerr_str equ 0x26EC
|
||||
_fat_cd_navigate_l2 equ 0x2696
|
||||
_fat_exec_notexec equ 0x27C5
|
||||
_fat_exec_notfound equ 0x27AC
|
||||
_fat_exec_read_done equ 0x2794
|
||||
_fat_exec_readloop1 equ 0x2776
|
||||
_fat_get_root_table_invalid equ 0x229A
|
||||
_fat_getfatsec_notroot equ 0x22D9
|
||||
_fat_increment_32 equ 0x2430
|
||||
_fat_lfs_loop equ 0x23A6
|
||||
_fat_lfs_loop_compare_end equ 0x23E2
|
||||
_fat_lfs_loop_compare_match equ 0x23E6
|
||||
_fat_lfs_loop_compare_next_sector equ 0x23B8
|
||||
_fat_math_add32 equ 0x2444
|
||||
_fat_math_mul32 equ 0x2475
|
||||
_fat_math_mul32_l equ 0x247C
|
||||
_fat_math_mul32_noadd equ 0x2489
|
||||
_fat_math_sector_add_16 equ 0x241C
|
||||
_fat_print_directory_dir equ 0x259A
|
||||
_fat_print_directory_loop equ 0x252D
|
||||
_fat_print_directory_loop_break equ 0x25F9
|
||||
_fat_print_directory_loop_file equ 0x2549
|
||||
_fat_print_directory_loop_next equ 0x25C5
|
||||
_fat_print_directory_loop_next_sector equ 0x25D0
|
||||
_format_filename_fat16_clean equ 0x24C1
|
||||
_format_filename_fat16_loop equ 0x24C8
|
||||
_format_filename_fat16_loop_copy equ 0x24DB
|
||||
_format_filename_fat16_loop_skip_8 equ 0x24D2
|
||||
_ide_readsector_512_floop equ 0xE7B
|
||||
_ideif_drv_sel_fail equ 0x15F0
|
||||
_ideif_drv_sel_fstr0 equ 0x16AD
|
||||
_ideif_drv_sel_pstr equ 0x16A4
|
||||
_ideif_drv_sel_sstr0 equ 0x16BB
|
||||
_ideif_drv_sel_syn equ 0x16C8
|
||||
_ideif_init_drive_charloop equ 0x14B7
|
||||
_ideif_init_drive_found equ 0x1499
|
||||
_ideif_init_drive_loop equ 0x1481
|
||||
_ideif_init_drive_nodrv equ 0x1494
|
||||
_ideif_init_drive_prt_fnd equ 0x1515
|
||||
_ideif_init_drive_prt_l1 equ 0x1503
|
||||
_ideif_init_drive_prt_ln equ 0x150D
|
||||
_ideif_prnt_devtable_hdr equ 0x1630
|
||||
_ideif_prnt_devtable_l1 equ 0x1391
|
||||
_ideif_prnt_devtable_l1_e2 equ 0x1457
|
||||
_ideif_prnt_devtable_l1_es equ 0x13D6
|
||||
_ideif_prnt_devtable_l1_ms equ 0x1454
|
||||
_ideif_prnt_devtable_l1_nxt equ 0x139E
|
||||
_ideif_prnt_devtable_l1_s00 equ 0x13C4
|
||||
_ideif_prnt_devtable_l1_s01 equ 0x13C9
|
||||
_ideif_prnt_devtable_l1_s02 equ 0x13CE
|
||||
_ideif_prnt_devtable_l1_sFF equ 0x13D3
|
||||
_ideif_prnt_devtable_l1_sel equ 0x139C
|
||||
_ideif_prnt_devtable_master equ 0x1694
|
||||
_ideif_prnt_devtable_s00 equ 0x1668
|
||||
_ideif_prnt_devtable_s01 equ 0x1673
|
||||
_ideif_prnt_devtable_s02 equ 0x167E
|
||||
_ideif_prnt_devtable_sFF equ 0x1689
|
||||
_ideif_prnt_devtable_slave equ 0x169C
|
||||
_int_invalid_int equ 0x185A
|
||||
_intctrl_init_fill_loop equ 0x183B
|
||||
_isr_pio equ 0x184E
|
||||
_isr_pio_test equ 0x8181
|
||||
_keyb_cmd_rd_l1 equ 0x80E0
|
||||
_keyb_enable_int_flush_buffer equ 0x80CF
|
||||
_keyb_wr_wait_ack_l1 equ 0x80FD
|
||||
_keyboard_init_dev_missing equ 0x80AA
|
||||
_keyboard_init_failed equ 0x80A3
|
||||
_keyboard_init_flush_buffer equ 0x8065
|
||||
_keyboard_init_okay equ 0x80B1
|
||||
_read_bcd_invalid equ 0x165
|
||||
_shift4 equ 0x1F5B
|
||||
_str_invalid_interrupt equ 0x1864
|
||||
_str_pio_interrupt equ 0x189B
|
||||
beep equ 0xE04
|
||||
beep_loop equ 0xE07
|
||||
beep_pause equ 0xE1E
|
||||
com_header equ 0x8000
|
||||
com_prg equ 0x8040
|
||||
compare_filename equ 0x24A6
|
||||
con_rb_init equ 0x18E
|
||||
con_rb_read equ 0x199
|
||||
con_rb_read_empty equ 0x1B6
|
||||
con_rb_write equ 0x1BF
|
||||
consio_init_a equ 0x18CE
|
||||
consio_init_a_int equ 0x1906
|
||||
consio_init_a_sio equ 0x18D5
|
||||
consio_init_ctc_a equ 0x191D
|
||||
consio_isr equ 0x1960
|
||||
consio_rx_a equ 0x1933
|
||||
consio_rx_a_sts equ 0x1956
|
||||
consio_rx_rts_a_off equ 0x194D
|
||||
consio_rx_rts_a_on equ 0x1944
|
||||
consio_tx_a equ 0x1926
|
||||
consio_tx_a_waitout equ 0x1928
|
||||
dasm_00 equ 0xA09
|
||||
dasm_01 equ 0xCF5
|
||||
dasm_02 equ 0xA8F
|
||||
dasm_03 equ 0xCC7
|
||||
dasm_08 equ 0xB0C
|
||||
dasm_09 equ 0xC9A
|
||||
dasm_0A equ 0xA71
|
||||
dasm_0B equ 0xCDE
|
||||
dasm_10 equ 0xA51
|
||||
dasm_12 equ 0xA9A
|
||||
dasm_18 equ 0xA14
|
||||
dasm_1A equ 0xA7B
|
||||
dasm_20 equ 0xA2E
|
||||
dasm_22 equ 0xD3B
|
||||
dasm_27 equ 0xAD4
|
||||
dasm_28 equ 0xA27
|
||||
dasm_2A equ 0xD0C
|
||||
dasm_2F equ 0xAD8
|
||||
dasm_30 equ 0xA1F
|
||||
dasm_32 equ 0xAA5
|
||||
dasm_37 equ 0xAE4
|
||||
dasm_38 equ 0xA18
|
||||
dasm_3A equ 0xA85
|
||||
dasm_3F equ 0xAE0
|
||||
dasm_76 equ 0xAE8
|
||||
dasm_80C6 equ 0xB65
|
||||
dasm_BE equ 0xB02
|
||||
dasm_C3 equ 0xA0D
|
||||
dasm_C88E equ 0xB8B
|
||||
dasm_C9 equ 0xA5D
|
||||
dasm_CD equ 0xA57
|
||||
dasm_D9 equ 0xB19
|
||||
dasm_DD equ 0xA3F
|
||||
dasm_DD_01 equ 0xCFC
|
||||
dasm_DD_09 equ 0xCB5
|
||||
dasm_DD_22 equ 0xD51
|
||||
dasm_DD_23 equ 0xCCC
|
||||
dasm_DD_2A equ 0xD23
|
||||
dasm_DD_2B equ 0xCE3
|
||||
dasm_DD_34 equ 0xC65
|
||||
dasm_DD_35 equ 0xC82
|
||||
dasm_DD_86 equ 0xB6D
|
||||
dasm_DD_8E equ 0xB93
|
||||
dasm_DD_96 equ 0xBB6
|
||||
dasm_DD_9E equ 0xBD6
|
||||
dasm_DD_A6 equ 0xBF7
|
||||
dasm_DD_AE equ 0xC2E
|
||||
dasm_DD_B6 equ 0xC13
|
||||
dasm_DD_BE equ 0xC4A
|
||||
dasm_DD_E1 equ 0xDA3
|
||||
dasm_DD_E3 equ 0xB29
|
||||
dasm_DD_E5 equ 0xD8D
|
||||
dasm_DD_F9 equ 0xD73
|
||||
dasm_E1 equ 0xD9D
|
||||
dasm_E3 equ 0xB1D
|
||||
dasm_E5 equ 0xD87
|
||||
dasm_E9 equ 0xA36
|
||||
dasm_ED_42 equ 0xCAC
|
||||
dasm_ED_43 equ 0xD47
|
||||
dasm_ED_44 equ 0xADC
|
||||
dasm_ED_45 equ 0xA67
|
||||
dasm_ED_46 equ 0xAF3
|
||||
dasm_ED_4A equ 0xCA3
|
||||
dasm_ED_4B equ 0xD18
|
||||
dasm_ED_4D equ 0xA62
|
||||
dasm_ED_56 equ 0xAF8
|
||||
dasm_ED_5E equ 0xAFD
|
||||
dasm_ED_A0 equ 0xB41
|
||||
dasm_ED_A1 equ 0xB53
|
||||
dasm_ED_A8 equ 0xB4A
|
||||
dasm_ED_A9 equ 0xB5C
|
||||
dasm_ED_B0 equ 0xB45
|
||||
dasm_ED_B1 equ 0xB57
|
||||
dasm_ED_B8 equ 0xB4E
|
||||
dasm_ED_B9 equ 0xB60
|
||||
dasm_F3 equ 0xAED
|
||||
dasm_F9 equ 0xD69
|
||||
dasm_FB equ 0xAF0
|
||||
dasm_FD equ 0xA48
|
||||
dasm_FD_01 equ 0xD04
|
||||
dasm_FD_09 equ 0xCBE
|
||||
dasm_FD_22 equ 0xD5D
|
||||
dasm_FD_23 equ 0xCD5
|
||||
dasm_FD_2A equ 0xD2F
|
||||
dasm_FD_2B equ 0xCEC
|
||||
dasm_FD_34 equ 0xC71
|
||||
dasm_FD_35 equ 0xC8E
|
||||
dasm_FD_86 equ 0xB7C
|
||||
dasm_FD_8E equ 0xBA2
|
||||
dasm_FD_96 equ 0xBC2
|
||||
dasm_FD_9E equ 0xBE4
|
||||
dasm_FD_A6 equ 0xC03
|
||||
dasm_FD_AE equ 0xC3A
|
||||
dasm_FD_B6 equ 0xC1E
|
||||
dasm_FD_BE equ 0xC55
|
||||
dasm_FD_E1 equ 0xDAB
|
||||
dasm_FD_E3 equ 0xB35
|
||||
dasm_FD_E5 equ 0xD95
|
||||
dasm_FD_F9 equ 0xD7D
|
||||
dasm_FF equ 0xA6C
|
||||
dasm_UU equ 0xDB3
|
||||
dasm_UW equ 0xDB7
|
||||
dasm__AND equ 0xBF2
|
||||
dasm__CP equ 0xC46
|
||||
dasm__DEC equ 0xC7D
|
||||
dasm__ED_47 equ 0xAC4
|
||||
dasm__ED_4F equ 0xACC
|
||||
dasm__ED_57 equ 0xAB4
|
||||
dasm__ED_5F equ 0xABC
|
||||
dasm__INC equ 0xC60
|
||||
dasm__LD equ 0xAB0
|
||||
dasm__OR equ 0xC0F
|
||||
dasm__SBC equ 0xBCE
|
||||
dasm__SUB equ 0xBB1
|
||||
dasm__XOR equ 0xC29
|
||||
dasm_opcode_table equ 0x5B1
|
||||
dasm_print16hex_addr equ 0x3DE
|
||||
dasm_print8hex equ 0x3F6
|
||||
dasm_printFlags_table equ 0xDBC
|
||||
dasm_printRegister8_table equ 0xDCC
|
||||
dasm_printRegister8_table_HL equ 0xDEC
|
||||
dasm_printRegisterIX_table equ 0xDD4
|
||||
dasm_printRegisterIY_table equ 0xDDC
|
||||
dasm_printRegisterSP_table equ 0xDE4
|
||||
disassemble equ 0x2A2
|
||||
disassemble_continue equ 0x388
|
||||
disassemble_err equ 0x378
|
||||
disassemble_next equ 0x2A6
|
||||
disassemble_print_opcode_params_end equ 0x375
|
||||
disassemble_print_opcode_params_loop equ 0x321
|
||||
disassemble_print_opcode_raw equ 0x2E3
|
||||
disassemble_print_opcode_raw_fill equ 0x2F7
|
||||
disassemble_table_first_match equ 0x3BA
|
||||
disassemble_table_found equ 0x3D4
|
||||
disassemble_table_notfound equ 0x3D8
|
||||
disassemble_table_seek equ 0x396
|
||||
disassemble_table_seek_loop equ 0x39A
|
||||
dump_pretty equ 0x196D
|
||||
dump_pretty_ascii equ 0x1997
|
||||
dump_pretty_ascii_cont equ 0x19B5
|
||||
dump_pretty_ascii_loop equ 0x199F
|
||||
dump_pretty_ascii_none equ 0x19B0
|
||||
dump_pretty_col equ 0x198A
|
||||
dump_pretty_end equ 0x19C7
|
||||
dump_pretty_nextrow equ 0x19BB
|
||||
dump_pretty_row equ 0x1975
|
||||
endPrint equ 0x1FA
|
||||
fat_cd_single equ 0x25FB
|
||||
fat_copy_lba_pointer equ 0x249D
|
||||
fat_exec equ 0x2716
|
||||
fat_get_root_table equ 0x21CD
|
||||
fat_getfatsec equ 0x22C2
|
||||
fat_openfile equ 0x2377
|
||||
fat_openfile_noprepare equ 0x237F
|
||||
fat_print_directory equ 0x24E2
|
||||
fat_readfilesec equ 0x234A
|
||||
fat_reset_pointer equ 0x248E
|
||||
format_filename_fat16 equ 0x24BC
|
||||
ide_printerror equ 0xEB2
|
||||
ide_readsector_512_fast equ 0xE67
|
||||
ide_readsector_timeout equ 0xE9C
|
||||
ide_regread_8 equ 0xE51
|
||||
ide_regwrite_8 equ 0xE37
|
||||
ide_reset equ 0xE2B
|
||||
ide_writesector_256 equ 0xEB1
|
||||
ideif_drv_sel equ 0x15B8
|
||||
ideif_get_drv_pointer equ 0x1558
|
||||
ideif_init_all equ 0x156C
|
||||
ideif_init_devtable equ 0x1365
|
||||
ideif_init_drive equ 0x1478
|
||||
ideif_prnt_devtable equ 0x1383
|
||||
iic_init equ 0x173A
|
||||
iic_read_ack equ 0x1781
|
||||
iic_receive_buffer equ 0x170B
|
||||
iic_receive_buffer_done equ 0x172E
|
||||
iic_receive_buffer_err equ 0x1734
|
||||
iic_receive_buffer_loop equ 0x171C
|
||||
iic_receive_byte equ 0x1807
|
||||
iic_receive_byte_loop equ 0x1814
|
||||
iic_send_ack equ 0x17A7
|
||||
iic_send_buffer equ 0x16E1
|
||||
iic_send_buffer_done equ 0x16FF
|
||||
iic_send_buffer_err equ 0x1705
|
||||
iic_send_buffer_loop equ 0x16F1
|
||||
iic_send_byte equ 0x17E1
|
||||
iic_send_byte_loop equ 0x17ED
|
||||
iic_send_ebit equ 0x1760
|
||||
iic_send_nack equ 0x17C4
|
||||
iic_send_sbit equ 0x1747
|
||||
initctrl_int_abandon equ 0x184E
|
||||
initctrl_int_register equ 0x184E
|
||||
intctrl_init equ 0x182E
|
||||
interrupt_vectors equ 0x4000
|
||||
keyb_cmd_enable equ 0x80B8
|
||||
keyb_cmd_rd equ 0x80DE
|
||||
keyb_cmd_wr equ 0x80D8
|
||||
keyb_enable_int equ 0x80C8
|
||||
keyb_wait_ibf_empty equ 0x80EB
|
||||
keyb_wait_obf equ 0x80F2
|
||||
keyb_wr_wait_ack equ 0x80F8
|
||||
keyboard_init equ 0x805D
|
||||
mon_var_template equ 0x44
|
||||
mon_var_template_end equ 0x613
|
||||
mon_var_template_sof equ 0x444
|
||||
nxtILC equ 0x1EF
|
||||
param_01 equ 0x404
|
||||
param_02 equ 0x42B
|
||||
param_03 equ 0x448
|
||||
param_03_done equ 0x480
|
||||
param_03_neg equ 0x469
|
||||
param_04 equ 0x484
|
||||
param_04_i equ 0x494
|
||||
param_05 equ 0x49A
|
||||
param_06 equ 0x4A7
|
||||
param_07 equ 0x4C1
|
||||
param_08 equ 0x4CE
|
||||
param_09 equ 0x4E3
|
||||
param_09_0A equ 0x4E9
|
||||
param_0A equ 0x4DA
|
||||
param_10 equ 0x4F8
|
||||
param_11 equ 0x508
|
||||
param_11_12 equ 0x517
|
||||
param_11_12_all equ 0x537
|
||||
param_11_12_def equ 0x52A
|
||||
param_11_12_ix equ 0x52F
|
||||
param_11_12_iy equ 0x534
|
||||
param_12 equ 0x510
|
||||
param_13 equ 0x548
|
||||
param_80 equ 0x567
|
||||
param_80_seek equ 0x56E
|
||||
param_81 equ 0x55E
|
||||
param_comma equ 0x5A2
|
||||
param_printRegister equ 0x57D
|
||||
param_printRegisterA equ 0x59B
|
||||
param_printRegisterHL equ 0x593
|
||||
print_16_hex equ 0x181
|
||||
print_32_hex equ 0x168
|
||||
print_a_hex equ 0x122
|
||||
print_bcd equ 0x134
|
||||
print_char equ 0xF6
|
||||
print_clear equ 0x105
|
||||
print_newLine equ 0x10C
|
||||
print_reg equ 0x1FF
|
||||
print_str equ 0xFC
|
||||
print_str_fixed equ 0x1A07
|
||||
print_wait_out equ 0x117
|
||||
read_bcd equ 0x14F
|
||||
read_char equ 0x14C
|
||||
read_char_raw equ 0x13A
|
||||
read_lba_sector equ 0x157F
|
||||
str_dev_done equ 0x1628
|
||||
str_dev_waitready equ 0x1610
|
||||
str_error_start equ 0xEE7
|
||||
str_error_start1 equ 0xF04
|
||||
str_error_start2 equ 0xF0D
|
||||
str_error_time equ 0xF16
|
||||
str_post_apu equ 0x20C7
|
||||
str_post_ide_30 equ 0x2076
|
||||
str_post_ide_40 equ 0x2091
|
||||
str_post_nd equ 0x20FD
|
||||
str_post_ok equ 0x2135
|
||||
str_post_pio equ 0x20AC
|
||||
str_post_rtc equ 0x20E2
|
||||
str_post_rtc_iv equ 0x210B
|
||||
var_apu_present equ 0x420E
|
||||
var_buffer_conin_data equ 0x4100
|
||||
var_buffer_conin_in equ 0x4200
|
||||
var_buffer_conin_out equ 0x4201
|
||||
var_buffer_conin_sts equ 0x4202
|
||||
var_buffer_conout equ 0x4203
|
||||
var_buffer_len equ 0x4204
|
||||
var_bytes_count equ 0x411A
|
||||
var_curserchar equ 0x420A
|
||||
var_curserlastaddr equ 0x420B
|
||||
var_curseron equ 0x4209
|
||||
var_curserstate equ 0x4208
|
||||
var_curserx equ 0x4206
|
||||
var_cursery equ 0x4207
|
||||
var_dir equ 0x422F
|
||||
var_idebuffer equ 0x42CF
|
||||
var_input equ 0x427F
|
||||
var_last_char equ 0x4205
|
||||
var_opcode equ 0x4114
|
||||
var_opcode_length equ 0x4116
|
||||
var_opcode_pcount equ 0x4119
|
||||
var_opcode_start equ 0x4110
|
||||
var_opcode_string equ 0x4117
|
||||
var_opcode_table equ 0x4112
|
||||
var_opcode_x equ 0x4115
|
||||
var_pio_present equ 0x420D
|
||||
var_ps2mem equ 0x421F
|
||||
var_scratch equ 0x420F
|
||||
293
OperatingSystem/Applications/displaydemo/backup.asm
Normal file
293
OperatingSystem/Applications/displaydemo/backup.asm
Normal file
@@ -0,0 +1,293 @@
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
START_ADDR .EQU 0x8000
|
||||
|
||||
org START_ADDR
|
||||
com_header:
|
||||
jp com_prg
|
||||
db 0x00
|
||||
dw 0x00, 0x00, 0x00 ;always 0
|
||||
dw [START_ADDR] ;start addr
|
||||
dw [_eof] ;end of file
|
||||
dw [_eof - START_ADDR] ;length
|
||||
dc 48,0x00
|
||||
|
||||
com_prg:
|
||||
; Program start
|
||||
VDP_REGISTER .EQU 0xE1
|
||||
VDP_RAM .EQU 0xE0
|
||||
|
||||
VDPR_MODE0 .EQU 0
|
||||
VDPR_MODE1 .EQU 1
|
||||
VDPR_MODE2 .EQU 8
|
||||
VDPR_MODE3 .EQU 9
|
||||
VDPR_COLOR .EQU 7
|
||||
|
||||
VDPR_PATNMEBASE .EQU 2
|
||||
VDPR_PATGENBASE .EQU 4
|
||||
VDPR_COLTBBASE0 .EQU 3
|
||||
VDPR_COLTBBASE1 .EQU 10
|
||||
|
||||
|
||||
TmsTransparent: equ 0
|
||||
TmsBlack: equ 1
|
||||
TmsMediumGreen: equ 2
|
||||
TmsLightGreen: equ 3
|
||||
TmsDarkBlue: equ 4
|
||||
TmsLightBlue: equ 5
|
||||
TmsDarkRed: equ 6
|
||||
TmsCyan: equ 7
|
||||
TmsMediumRed: equ 8
|
||||
TmsLightRed: equ 9
|
||||
TmsDarkYellow: equ 0ah
|
||||
TmsLightYellow: equ 0bh
|
||||
TmsDarkGreen: equ 0ch
|
||||
TmsMagenta: equ 0dh
|
||||
TmsGray: equ 0eh
|
||||
TmsWhite: equ 0fh
|
||||
|
||||
|
||||
TMS_R8_MS equ 128 ;Mouse: when set to 1, sets the color bus into input mode and enables mouse. If set to 0, sets color bus into output mode and disables mouse
|
||||
TMS_R8_LP equ 64 ;Light pen: when set to 1, enables light pen
|
||||
TMS_R8_TP equ 32 ;Sets the color of code 0 to the color of the palette
|
||||
TMS_R8_CB equ 16 ;Color bus: when set to 1, sets color bus into input mode. If set to 0, sets color bus into output mode
|
||||
TMS_R8_VR equ 8 ;If set to 1, VRAM is 64Kx1Bit or 64Kx4bits. If set to 0, VRAM is 16Kx1Bit or 16Kx4Bits
|
||||
TMS_R8_SPD equ 2 ;if set to 1, sprites are not displayed and related VRAM reads are not performed
|
||||
TMS_R8_BW equ 1 ;if set to 1, output is grayscale in 32 tones
|
||||
|
||||
call tms_init_text2
|
||||
|
||||
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; Set a VDP Register (dircet access)
|
||||
; a = data
|
||||
; e = register
|
||||
tms_setregister:
|
||||
out (VDP_REGISTER), a
|
||||
ld a,e
|
||||
or 80h
|
||||
out (VDP_REGISTER), a
|
||||
ret
|
||||
|
||||
; ahl contains pointer to VRAM address
|
||||
|
||||
tms_mem_setpointer_rd:
|
||||
rlc h
|
||||
rla
|
||||
rlc h
|
||||
rla
|
||||
srl h
|
||||
srl h
|
||||
out (VDP_REGISTER),a
|
||||
ld a,14 + 128
|
||||
out (VDP_REGISTER),a
|
||||
ld a,l
|
||||
out (VDP_REGISTER),a
|
||||
ld a,h
|
||||
out (VDP_REGISTER),a
|
||||
ret
|
||||
|
||||
; ahl contains pointer to VRAM address
|
||||
tms_mem_setpointer_wr:
|
||||
rlc h
|
||||
rla
|
||||
rlc h
|
||||
rla
|
||||
srl h
|
||||
srl h
|
||||
out (VDP_REGISTER),a
|
||||
ld a,14 + 128
|
||||
out (VDP_REGISTER),a
|
||||
ld a,l
|
||||
out (VDP_REGISTER),a
|
||||
ld a,h
|
||||
or 64
|
||||
out (VDP_REGISTER),a
|
||||
ret
|
||||
|
||||
;b back, c: front
|
||||
tms_set_color
|
||||
ld a,c ;load front color to a
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
or b ;combine back color
|
||||
ld e, VDPR_COLOR
|
||||
jp tms_setregister
|
||||
|
||||
tms_init_text2:
|
||||
; init vdp (80col text)
|
||||
ld e, VDPR_MODE0
|
||||
ld a, 00000100b ;TEXT2
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_MODE1 ;blank screen wit 64K enabled
|
||||
ld a, 00001000b
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_MODE2
|
||||
ld a, TMS_R8_SPD
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_MODE3
|
||||
ld a, 00000010b
|
||||
call tms_setregister
|
||||
; set memory layout
|
||||
; set pattern name table
|
||||
ld e, VDPR_PATNMEBASE
|
||||
ld a, 00000011b
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_PATGENBASE
|
||||
ld a, 00000010b
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_COLTBBASE0
|
||||
ld a, 00101111b
|
||||
call tms_setregister
|
||||
|
||||
ld e, VDPR_COLTBBASE1
|
||||
ld a, 00000000b
|
||||
call tms_setregister
|
||||
|
||||
;enable cpu wait
|
||||
ld e,25
|
||||
ld a,4
|
||||
call tms_setregister
|
||||
|
||||
|
||||
;setup cursor:
|
||||
ld e, 13 ; set blink rate
|
||||
ld a, 0x22
|
||||
call tms_setregister
|
||||
|
||||
ld e, 12 ; set blink color
|
||||
ld a, 0xFF
|
||||
call tms_setregister
|
||||
|
||||
ld de, 0x0000
|
||||
ld bc, 0x2000
|
||||
ld a, 0
|
||||
call tms_fill_data
|
||||
|
||||
;load font
|
||||
ld hl, [TmsFont]
|
||||
ld bc, 256*8
|
||||
ld de, 0x1000
|
||||
call tms_load_data
|
||||
|
||||
ld e, VDPR_MODE1 ;enable screen wit 64K enabled
|
||||
ld a, 01010000b
|
||||
call tms_setregister
|
||||
|
||||
;WRITE CHAR
|
||||
ld hl, 0
|
||||
ld a,0
|
||||
call tms_mem_setpointer_wr
|
||||
ld a,'R'
|
||||
|
||||
call VTERM_INIT
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
call VTERM_CURSOR_ON
|
||||
|
||||
ld b, TmsBlack
|
||||
ld c, TmsWhite
|
||||
call tms_set_color
|
||||
|
||||
TEST_ECHO:
|
||||
call read_char
|
||||
jp z, TEST_ECHO
|
||||
call VTERM_PRINT
|
||||
jr TEST_ECHO
|
||||
ret
|
||||
|
||||
STR_Banner_Start_Test:
|
||||
db 10,13,"Z8C Monitor V2.1 by Dennis Gunia (2022-2024)",10,13,"TEST",10,13,"NEW LINE",10,13,"LOLLOLLLOLOLOLOLOL",0
|
||||
|
||||
;hl location in sysram
|
||||
;de location in vram (destination)
|
||||
;bc amount of bytes (byte counter)
|
||||
tms_load_data:
|
||||
;setup address
|
||||
push hl
|
||||
ex de,hl
|
||||
ld a,0
|
||||
call tms_mem_setpointer_wr
|
||||
pop hl
|
||||
|
||||
;load data
|
||||
tms_load_data_loop:
|
||||
ld a,(hl) ;load byte from system
|
||||
inc hl
|
||||
out (VDP_RAM),a
|
||||
dec bc ;decrement counter
|
||||
ld a,b ;check if zero
|
||||
or c
|
||||
jr nz, tms_load_data_loop ;if not loop
|
||||
ret ;else exit
|
||||
|
||||
tms_read_statusreg:
|
||||
out (VDP_RAM),a
|
||||
ld a,15 + 128
|
||||
out (VDP_RAM),a
|
||||
in a,(VDP_RAM)
|
||||
ex af,af'
|
||||
xor a ; ld a,0
|
||||
out (VDP_RAM),a
|
||||
ld a,15 + 128
|
||||
out (VDP_RAM),a
|
||||
ex af,af'
|
||||
ret
|
||||
|
||||
;a bytes to fill
|
||||
;de location in vram (destination)
|
||||
;bc amount of bytes (byte counter)
|
||||
tms_fill_data:
|
||||
;setup address
|
||||
push af
|
||||
ex de,hl
|
||||
call tms_mem_setpointer_wr
|
||||
|
||||
tms_fill_data_loop:
|
||||
pop af
|
||||
out (VDP_RAM),a
|
||||
push af
|
||||
dec bc ;decrement counter
|
||||
ld a,b ;check if zero
|
||||
or c
|
||||
jr nz, tms_fill_data_loop ;if not loop
|
||||
pop af
|
||||
ret ;else exit
|
||||
|
||||
|
||||
.include "font80.s"
|
||||
.include "vdpterm.s"
|
||||
|
||||
|
||||
;
|
||||
|
||||
;hl location in sysmem
|
||||
;de location in vram (destination)
|
||||
;bc amount of bytes (byte counter)
|
||||
tms_read_data:
|
||||
push hl
|
||||
push bc
|
||||
ex de,hl
|
||||
call tms_mem_setpointer_rd
|
||||
pop bc
|
||||
pop hl
|
||||
tms_read_data_loop:
|
||||
in a,(VDP_RAM)
|
||||
ld (hl),a
|
||||
inc hl
|
||||
dec bc ;decrement counter
|
||||
ld a,b ;check if zero
|
||||
or c
|
||||
jr nz, tms_read_data_loop ;if not loop
|
||||
ret ;else exit
|
||||
_eof:
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../../../monitor_v2/zout/symbols.s
|
||||
2563
OperatingSystem/Applications/displaydemo/include/font1.s
Normal file
2563
OperatingSystem/Applications/displaydemo/include/font1.s
Normal file
File diff suppressed because it is too large
Load Diff
3073
OperatingSystem/Applications/displaydemo/include/font80.s
Normal file
3073
OperatingSystem/Applications/displaydemo/include/font80.s
Normal file
File diff suppressed because it is too large
Load Diff
16
OperatingSystem/Applications/displaydemo/include/kdrv_int.s
Normal file
16
OperatingSystem/Applications/displaydemo/include/kdrv_int.s
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
INT_VEC_TABLE .equ [interrupt_vectors]
|
||||
INT_PIO_ADDRD .equ CS_PIO_AD
|
||||
INT_PIO_ADDRC .equ CS_PIO_AC
|
||||
|
||||
|
||||
; jumps to isr. MUST be exited with RETI opcode!
|
||||
|
||||
_isr_pio_test:
|
||||
di
|
||||
ld hl, [_str_pio_interrupt]
|
||||
call print_str
|
||||
;get int from pio
|
||||
in a,(INT_PIO_ADDRD)
|
||||
call print_a_hex
|
||||
reti
|
||||
254
OperatingSystem/Applications/displaydemo/include/kdrv_vdpterm.s
Normal file
254
OperatingSystem/Applications/displaydemo/include/kdrv_vdpterm.s
Normal file
@@ -0,0 +1,254 @@
|
||||
;; VDP Terminal Driver
|
||||
|
||||
__VDPBUFFER_COUNTER equ var_idebuffer + 767
|
||||
__VDPBUFFER_CURSORADDR equ var_idebuffer + 768
|
||||
__VDPBUFFER_LINE equ var_idebuffer + 770
|
||||
|
||||
|
||||
__VTERM_MAX_LINES equ 23
|
||||
__VTERM_MAX_CPL equ 81
|
||||
|
||||
VTERM_INIT:
|
||||
; init variables
|
||||
xor a
|
||||
ld (var_curserx),a
|
||||
ld (var_cursery),a
|
||||
ld (var_curseron),a
|
||||
ld hl, 0x0A00
|
||||
ld (__VDPBUFFER_CURSORADDR),hl
|
||||
call _VTERM_SET_CURSORADDR
|
||||
ret
|
||||
|
||||
; --- Console enable cursor ---
|
||||
; destroy a
|
||||
VTERM_CURSOR_ON:
|
||||
push hl
|
||||
push bc
|
||||
push de
|
||||
ld a,1
|
||||
ld (var_curseron),a
|
||||
call _VTERM_MOVE_CURSOR
|
||||
pop de
|
||||
pop bc
|
||||
pop hl
|
||||
ret
|
||||
; --- Console disable cursor ---
|
||||
; destroy a
|
||||
VTERM_CURSOR_OFF:
|
||||
push hl
|
||||
push bc
|
||||
xor a
|
||||
ld (var_curseron),a
|
||||
ld hl,(__VDPBUFFER_CURSORADDR)
|
||||
call VDP_RAMADDR_WR
|
||||
xor a
|
||||
out (VDP_RAM),a ;clear old cursor
|
||||
call _VTERM_SET_CURSORADDR
|
||||
pop bc
|
||||
pop hl
|
||||
ret
|
||||
; --- Console print string (null terminated) ---
|
||||
; inputs: hl (pointer to string)
|
||||
; modify hl
|
||||
; destroy a
|
||||
VTERM_PRINT_STR:
|
||||
ld a,(hl)
|
||||
or a
|
||||
ret z
|
||||
call VTERM_PRINT
|
||||
inc hl
|
||||
jr VTERM_PRINT_STR
|
||||
|
||||
; --- Console print char ---
|
||||
; inputs: a (ascii char)
|
||||
VTERM_PRINT:
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
|
||||
push af
|
||||
call print_a_hex
|
||||
pop af
|
||||
cp 0x08
|
||||
jp z,_VTERM_PRINT_BACKSPC
|
||||
cp 13
|
||||
jp z, _VTERM_PRINT_CR
|
||||
cp 10
|
||||
jp z, _VTERM_PRINT_LF
|
||||
; else print a
|
||||
call _VTERM_CHAROUT
|
||||
_VTERM_PRINT_END:
|
||||
call _VTERM_MOVE_CURSOR
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
ret
|
||||
_VTERM_PRINT_BACKSPC:
|
||||
call _VTERM_CURSOR_BACK
|
||||
ld a,' '
|
||||
out (VDP_RAM),a
|
||||
jp _VTERM_PRINT_END
|
||||
_VTERM_PRINT_CR:
|
||||
call _VTERM_CURSOR_START
|
||||
jp _VTERM_PRINT_END
|
||||
_VTERM_PRINT_LF:
|
||||
call _VTERM_CURSOR_NEWLINE
|
||||
jp _VTERM_PRINT_END
|
||||
|
||||
; only called by VTERM_PRINT
|
||||
; destroys af,bc,de,hl
|
||||
_VTERM_CHAROUT:
|
||||
push af ;store char
|
||||
ld a,(var_curserx) ;test for line wrap
|
||||
inc a
|
||||
cp __VTERM_MAX_CPL +1
|
||||
jr nz, __VTERM_CHAROUT_NOBREAK ; if linewrap:
|
||||
call _VTERM_CURSOR_START ; do new line
|
||||
call _VTERM_CURSOR_NEWLINE
|
||||
__VTERM_CHAROUT_NOBREAK: ; if not linewrap
|
||||
ld a,(var_curserx) ; move curser by one
|
||||
inc a
|
||||
ld (var_curserx),a
|
||||
pop af
|
||||
out (VDP_RAM),a
|
||||
ret
|
||||
|
||||
; destroys af,bc,de,hl
|
||||
_VTERM_CURSOR_BACK:
|
||||
ld a,(var_curserx)
|
||||
or a
|
||||
ret z;if line wrap, ignore
|
||||
dec a
|
||||
ld (var_curserx),a
|
||||
jp _VTERM_MOVE_CURSOR
|
||||
|
||||
; --- Move cursor to start of line ---
|
||||
; destroys af,bc,de,hl
|
||||
_VTERM_CURSOR_START:
|
||||
xor a
|
||||
ld (var_curserx),a
|
||||
jp _VTERM_MOVE_CURSOR
|
||||
|
||||
; --- Move cursor to next line ---
|
||||
; destroys af,bc,de,hl
|
||||
_VTERM_CURSOR_NEWLINE:
|
||||
ld a,(var_cursery)
|
||||
cp __VTERM_MAX_LINES
|
||||
jp z, _VTERM_SCROLL
|
||||
inc a
|
||||
ld (var_cursery),a
|
||||
jp _VTERM_MOVE_CURSOR
|
||||
|
||||
; --- Calculate 16bit VRAM adress of current char ---
|
||||
; destroy AF,DE
|
||||
; outputs HL
|
||||
_VTERM_CALC_CURSORADDR:
|
||||
ld d,0
|
||||
ld a,(var_cursery)
|
||||
ld e,a
|
||||
ld hl,0
|
||||
add hl, de ; Y x 1
|
||||
add hl, hl ; Y x 2
|
||||
add hl, hl ; Y x 4
|
||||
add hl, de ; Y x 5
|
||||
add hl, hl ; Y x 10
|
||||
add hl, hl ; Y x 20
|
||||
add hl, hl ; Y x 40
|
||||
add hl, hl ; Y x 80
|
||||
ld a,(var_curserx)
|
||||
ld e,a
|
||||
add hl, de ; add X for final address
|
||||
ret
|
||||
|
||||
; destroy AF,DE,HL
|
||||
_VTERM_SET_CURSORADDR:
|
||||
call _VTERM_CALC_CURSORADDR
|
||||
jp VDP_RAMADDR_WR
|
||||
|
||||
; destroy AF,DE,HL
|
||||
_VTERM_SET_CURSORADDR_RD:
|
||||
call _VTERM_CALC_CURSORADDR
|
||||
jp VDP_RAMADDR_RD
|
||||
|
||||
; destroys af,bc,de,hl
|
||||
_VTERM_MOVE_CURSOR:
|
||||
ld a,(var_curseron)
|
||||
or a
|
||||
jp z, _VTERM_SET_CURSORADDR ;if cursor disable, only set new memory location
|
||||
;if cursor is enabled
|
||||
ld hl,(__VDPBUFFER_CURSORADDR)
|
||||
call VDP_RAMADDR_WR
|
||||
xor a
|
||||
out (VDP_RAM),a ;clear old cursor
|
||||
; calulate new position
|
||||
call _VTERM_CALC_CURSORADDR
|
||||
ld a,l ;load lower byte
|
||||
and 0x07 ;mask lower 3 bits
|
||||
ld b,a ;save lower 3 bits
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
srl h
|
||||
rr l
|
||||
ld de,0x0A00
|
||||
add hl,de
|
||||
ld (__VDPBUFFER_CURSORADDR), hl
|
||||
call VDP_RAMADDR_WR
|
||||
ld a,128
|
||||
_VTERM_MOVE_CURSOR_LOOP:
|
||||
rrca
|
||||
djnz _VTERM_MOVE_CURSOR_LOOP
|
||||
out (VDP_RAM),a
|
||||
jp _VTERM_SET_CURSORADDR
|
||||
|
||||
; --- Memory Scroll ---
|
||||
_VTERM_SCROLL:
|
||||
;COPY / Scroll up using VDP commands
|
||||
ld e,15 ;select status register
|
||||
ld a,2
|
||||
call VDP_SETREG
|
||||
in a,(VDP_REGISTER)
|
||||
and 0x40 ;Vertical retrace flag
|
||||
jr z, _VTERM_SCROLL; if not loop
|
||||
; else setup address
|
||||
xor a
|
||||
ld (var_curserx),a
|
||||
ld (__VDPBUFFER_COUNTER),a
|
||||
_VTERM_SCROLL_LINE:
|
||||
ld a,(__VDPBUFFER_COUNTER) ;set next line
|
||||
inc a
|
||||
ld (var_cursery),a
|
||||
call _VTERM_SET_CURSORADDR_RD
|
||||
ld b,__VTERM_MAX_CPL
|
||||
ld hl,__VDPBUFFER_LINE ;buffer location
|
||||
ld c, VDP_RAM
|
||||
_VTERM_SCROLL_LINE_L1:
|
||||
ini ;load 80 bytes to ram
|
||||
jr nz, _VTERM_SCROLL_LINE_L1
|
||||
;setup target row
|
||||
ld a,(__VDPBUFFER_COUNTER) ;set next line
|
||||
ld (var_cursery),a
|
||||
call _VTERM_SET_CURSORADDR
|
||||
ld b,__VTERM_MAX_CPL
|
||||
ld hl,__VDPBUFFER_LINE ;buffer location
|
||||
_VTERM_SCROLL_LINE_L2:
|
||||
outi ;store to vdp ram
|
||||
jr nz, _VTERM_SCROLL_LINE_L2
|
||||
;done with one line
|
||||
ld a,(__VDPBUFFER_COUNTER)
|
||||
inc a
|
||||
ld (__VDPBUFFER_COUNTER),a
|
||||
cp __VTERM_MAX_LINES
|
||||
jp nz, _VTERM_SCROLL_LINE
|
||||
ld (var_cursery),a
|
||||
call _VTERM_SET_CURSORADDR
|
||||
;fill
|
||||
ld b,__VTERM_MAX_CPL
|
||||
_VTERM_SCROLL_LINE_FILL:
|
||||
xor a
|
||||
out (VDP_RAM),a
|
||||
djnz _VTERM_SCROLL_LINE_FILL
|
||||
jp _VTERM_SET_CURSORADDR
|
||||
151
OperatingSystem/Applications/displaydemo/include/kdrv_vt82c42.s
Normal file
151
OperatingSystem/Applications/displaydemo/include/kdrv_vt82c42.s
Normal file
@@ -0,0 +1,151 @@
|
||||
;----------------------------------------------------------------
|
||||
;Keyboard interface driver for Z8C
|
||||
;Controller used: vt82c42
|
||||
;Datasheet: http://www.s100computers.com/My%20System%20Pages/MSDOS%20Board/vt82c42%20PC%20Keyboard%20conrtroller.pdf
|
||||
;by Dennis Gunia (04/2022)
|
||||
;----------------------------------------------------------------
|
||||
|
||||
;================================================================
|
||||
; I/O registers
|
||||
;================================================================
|
||||
CS_VT82C42_DATA .EQU 0xF0
|
||||
CS_VT82C42_CTRL .EQU 0xF1
|
||||
|
||||
;================================================================
|
||||
; I/O access functions
|
||||
;================================================================
|
||||
keyboard_init:
|
||||
ld a, 0xA7 ;Disable Mouse
|
||||
out (CS_VT82C42_CTRL), A
|
||||
ld a, 0xAD ;Disable Keyboard
|
||||
out (CS_VT82C42_CTRL), A
|
||||
_keyboard_init_flush_buffer:
|
||||
in a,(CS_VT82C42_DATA) ;Read buffer
|
||||
in a,(CS_VT82C42_CTRL) ;Read status byte
|
||||
bit 0,a ;Test if buffer is empty
|
||||
jr nz, _keyboard_init_flush_buffer
|
||||
;buffer is now flushed. Now set the Controller Configuration Byte
|
||||
|
||||
ld a, 0x60 ;next byte is command byte register write
|
||||
ld b, 11111100b ;Disable bits 0,1,6 (disable IRQ and Translation)
|
||||
call keyb_cmd_wr
|
||||
|
||||
;Perform Controller Self Test
|
||||
ld a, 0xAA
|
||||
call keyb_cmd_rd
|
||||
cp 0x55
|
||||
jr nz, _keyboard_init_failed
|
||||
|
||||
;Perform Interface Tests
|
||||
ld a, 0xAB
|
||||
call keyb_cmd_rd
|
||||
or a
|
||||
jr nz, _keyboard_init_failed
|
||||
|
||||
;Enable Devices
|
||||
ld a,0xAE
|
||||
out (CS_VT82C42_CTRL), A
|
||||
call keyb_wait_ibf_empty
|
||||
|
||||
;Test if device is present Devices
|
||||
ld a,0xEE
|
||||
out (CS_VT82C42_DATA), A ;Send echo to keboard (0xEE command)
|
||||
call keyb_wait_ibf_empty
|
||||
call keyb_wait_obf
|
||||
in a,(CS_VT82C42_DATA)
|
||||
cp a, 0xEE
|
||||
jr z, _keyboard_init_okay ; 0xFC -> Success. Init done!
|
||||
;Else device error
|
||||
ld hl, [STR_keyboard_init_failed]
|
||||
call print_str
|
||||
ret
|
||||
_keyboard_init_failed:
|
||||
LD HL, [STR_keyboard_init_err]
|
||||
CALL print_str
|
||||
RET
|
||||
_keyboard_init_dev_missing:
|
||||
LD HL, [STR_keyboard_init_missing]
|
||||
CALL print_str
|
||||
RET
|
||||
_keyboard_init_okay:
|
||||
LD HL, [STR_keyboard_init_okay]
|
||||
CALL print_str
|
||||
RET
|
||||
|
||||
keyb_cmd_enable:
|
||||
ld a, 0xF4
|
||||
call keyb_wr_wait_ack
|
||||
ld a, 0xED
|
||||
call keyb_wr_wait_ack
|
||||
ld a, 0x02
|
||||
call keyb_wr_wait_ack
|
||||
ret
|
||||
|
||||
keyb_enable_int:
|
||||
ld a, 0x60 ;next byte is command byte register write
|
||||
ld b, 00000001b ;Disable bits 0,1,6 (disable IRQ and Translation)
|
||||
call keyb_cmd_wr
|
||||
|
||||
|
||||
_keyb_enable_int_flush_buffer:
|
||||
in a,(CS_VT82C42_DATA) ;Read buffer
|
||||
in a,(CS_VT82C42_CTRL) ;Read status byte
|
||||
bit 0,a ;Test if buffer is empty
|
||||
jr nz, _keyb_enable_int_flush_buffer
|
||||
ret
|
||||
; a contains command
|
||||
; b conatins data
|
||||
keyb_cmd_wr:
|
||||
out (CS_VT82C42_CTRL),a ;write command byte
|
||||
ld a, b
|
||||
out (CS_VT82C42_DATA),a
|
||||
ret
|
||||
|
||||
; a contains command
|
||||
; a returns data
|
||||
keyb_cmd_rd:
|
||||
out (CS_VT82C42_CTRL),a ;write command byte
|
||||
_keyb_cmd_rd_l1:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
call print_a_hex
|
||||
rra
|
||||
jr nc, _keyb_cmd_rd_l1 ;wait until OBF is set (data avail)
|
||||
in a, (CS_VT82C42_DATA)
|
||||
ret
|
||||
|
||||
keyb_wait_ibf_empty:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
rra
|
||||
rra
|
||||
jr c, keyb_wait_ibf_empty ;if IBF, wait
|
||||
ret
|
||||
|
||||
keyb_wait_obf:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
rra
|
||||
jr nc, keyb_wait_obf ;if IBF, wait
|
||||
ret
|
||||
|
||||
|
||||
; a data
|
||||
; z is 0 if success
|
||||
keyb_wr_wait_ack:
|
||||
out (CS_VT82C42_DATA),a ;write command byte
|
||||
call keyb_wait_obf ;wait until sent
|
||||
_keyb_wr_wait_ack_l1: ;wait for reponse
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
bit 1,a ;check input buffer full
|
||||
jr nz, _keyb_wr_wait_ack_l1
|
||||
in a, (CS_VT82C42_DATA)
|
||||
cp 0xFA
|
||||
ret
|
||||
|
||||
;Status message strings
|
||||
STR_keyboard_init_okay:
|
||||
.BYTE "PS/2 Keyboard initialized.",0
|
||||
STR_keyboard_init_err:
|
||||
.BYTE "PS/2 Controller error! System HALT!",0
|
||||
STR_keyboard_init_failed:
|
||||
.BYTE "PS/2 Keyboard error! System HALT!",0
|
||||
STR_keyboard_init_missing:
|
||||
.BYTE "PS/2 no keyboard found!",0
|
||||
256
OperatingSystem/Applications/displaydemo/include/krdv_vdp.s
Normal file
256
OperatingSystem/Applications/displaydemo/include/krdv_vdp.s
Normal file
@@ -0,0 +1,256 @@
|
||||
;----------------------------------------------------------------
|
||||
;BIOS Driver for VDP V9958
|
||||
;by Dennis Gunia (07/2024)
|
||||
;----------------------------------------------------------------
|
||||
|
||||
;================================================================
|
||||
; I/O registers
|
||||
;================================================================
|
||||
VDP_REGISTER .EQU 0xE1
|
||||
VDP_RAM .EQU 0xE0
|
||||
|
||||
;================================================================
|
||||
; VDP Registers
|
||||
;================================================================
|
||||
; registers
|
||||
VDPR_MODE0 .EQU 0
|
||||
VDPR_MODE1 .EQU 1
|
||||
VDPR_MODE2 .EQU 8
|
||||
VDPR_MODE3 .EQU 9
|
||||
VDPR_COLOR .EQU 7
|
||||
VDPR_PATNMEBASE .EQU 2
|
||||
VDPR_PATGENBASE .EQU 4
|
||||
VDPR_COLTBBASE0 .EQU 3
|
||||
VDPR_COLTBBASE1 .EQU 10
|
||||
; register bits
|
||||
TMS_R8_MS .EQU 128 ;Mouse: when set to 1, sets the color bus into input mode and enables mouse. If set to 0, sets color bus into output mode and disables mouse
|
||||
TMS_R8_LP .EQU 64 ;Light pen: when set to 1, enables light pen
|
||||
TMS_R8_TP .EQU 32 ;Sets the color of code 0 to the color of the palette
|
||||
TMS_R8_CB .EQU 16 ;Color bus: when set to 1, sets color bus into input mode. If set to 0, sets color bus into output mode
|
||||
TMS_R8_VR .EQU 8 ;If set to 1, VRAM is 64Kx1Bit or 64Kx4bits. If set to 0, VRAM is 16Kx1Bit or 16Kx4Bits
|
||||
TMS_R8_SPD .EQU 2 ;if set to 1, sprites are not displayed and related VRAM reads are not performed
|
||||
TMS_R8_BW .EQU 1 ;if set to 1, output is grayscale in 32 tones
|
||||
; colors
|
||||
TmsTransparent .EQU 0
|
||||
TmsBlack .EQU 1
|
||||
TmsMediumGreen .EQU 2
|
||||
TmsLightGreen .EQU 3
|
||||
TmsDarkBlue .EQU 4
|
||||
TmsLightBlue .EQU 5
|
||||
TmsDarkRed .EQU 6
|
||||
TmsCyan .EQU 7
|
||||
TmsMediumRed .EQU 8
|
||||
TmsLightRed .EQU 9
|
||||
TmsDarkYellow .EQU 0ah
|
||||
TmsLightYellow .EQU 0bh
|
||||
TmsDarkGreen .EQU 0ch
|
||||
TmsMagenta .EQU 0dh
|
||||
TmsGray .EQU 0eh
|
||||
TmsWhite .EQU 0fh
|
||||
;================================================================
|
||||
; I/O access functions
|
||||
;================================================================
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; set vdp register
|
||||
;
|
||||
; inputs: a (value), e (register)
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_SETREG:
|
||||
out (VDP_REGISTER), a
|
||||
ld a,e
|
||||
or 80h
|
||||
out (VDP_REGISTER), a
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; read vdp status register
|
||||
;
|
||||
; inputs: a (register)
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_STS:
|
||||
out (VDP_RAM),a ;write addr
|
||||
ld a,15 + 128
|
||||
out (VDP_RAM),a ;selct reg for read
|
||||
in a,(VDP_RAM)
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; set vdp ram pointer for read
|
||||
;
|
||||
; inputs: ahl (address)
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_RAMADDR_RD:
|
||||
rlc h
|
||||
rla
|
||||
rlc h
|
||||
rla
|
||||
srl h
|
||||
srl h
|
||||
out (VDP_REGISTER),a
|
||||
ld a,14 + 128
|
||||
out (VDP_REGISTER),a
|
||||
ld a,l
|
||||
out (VDP_REGISTER),a
|
||||
ld a,h
|
||||
out (VDP_REGISTER),a
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; set vdp ram pointer for write
|
||||
;
|
||||
; inputs: ahl (address)
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_RAMADDR_WR:
|
||||
rlc h
|
||||
rla
|
||||
rlc h
|
||||
rla
|
||||
srl h
|
||||
srl h
|
||||
out (VDP_REGISTER),a
|
||||
ld a,14 + 128
|
||||
out (VDP_REGISTER),a
|
||||
ld a,l
|
||||
out (VDP_REGISTER),a
|
||||
ld a,h
|
||||
or 64
|
||||
out (VDP_REGISTER),a
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; set vdp console color
|
||||
;
|
||||
; inputs: b (back color), c (front color)
|
||||
; destroys: e, af
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_COLOR:
|
||||
ld a,c ;load front color to a
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
or b ;combine back color
|
||||
ld e, VDPR_COLOR
|
||||
call VDP_SETREG
|
||||
; set blink color
|
||||
ld e, 12 ; set blink color
|
||||
ld a,b ;load front color to a
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
or c ;combine back color
|
||||
call VDP_SETREG
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; copy block of memory to vdp
|
||||
;
|
||||
; inputs: hl (source in local ram)
|
||||
; de (destination in vram)
|
||||
; bc (byte counter)
|
||||
; destroys: af
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_LOADRAM:
|
||||
;setup address
|
||||
push hl
|
||||
ex de,hl
|
||||
ld a,0
|
||||
call VDP_RAMADDR_WR
|
||||
pop hl
|
||||
_VDP_LOADRAM_LOOP:
|
||||
ld a,(hl) ;load byte from system
|
||||
inc hl
|
||||
out (VDP_RAM),a
|
||||
dec bc ;decrement counter
|
||||
ld a,b ;check if zero
|
||||
or c
|
||||
jr nz, _VDP_LOADRAM_LOOP ;if not loop
|
||||
ret ;else exit
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; fill block of memory in vdp
|
||||
;
|
||||
; inputs: a (value to write)
|
||||
; de (destination in vram)
|
||||
; bc (byte counter)
|
||||
; destroys: hl
|
||||
;------------------------------------------------------------------------------
|
||||
VDP_FILL:
|
||||
push af
|
||||
ex de,hl
|
||||
call VDP_RAMADDR_WR
|
||||
_VDP_FILL_LOOP:
|
||||
pop af
|
||||
out (VDP_RAM),a
|
||||
push af
|
||||
dec bc ;decrement counter
|
||||
ld a,b ;check if zero
|
||||
or c
|
||||
jr nz, _VDP_FILL_LOOP ;if not loop
|
||||
pop af
|
||||
ret
|
||||
|
||||
|
||||
;================================================================
|
||||
; Init screen modes
|
||||
;================================================================
|
||||
VDP_INIT_TEXT2:
|
||||
; init vdp (80col text)
|
||||
ld e, VDPR_MODE0
|
||||
ld a, 00000100b ;TEXT2
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_MODE1 ;blank screen wit 64K enabled
|
||||
ld a, 00001000b
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_MODE2
|
||||
ld a, TMS_R8_SPD
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_MODE3
|
||||
ld a, 00000010b
|
||||
call VDP_SETREG
|
||||
; set memory layout
|
||||
; set pattern name table
|
||||
ld e, VDPR_PATNMEBASE
|
||||
ld a, 00000011b
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_PATGENBASE
|
||||
ld a, 00000010b
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_COLTBBASE0
|
||||
ld a, 00101111b
|
||||
call VDP_SETREG
|
||||
ld e, VDPR_COLTBBASE1
|
||||
ld a, 00000000b
|
||||
call VDP_SETREG
|
||||
;enable cpu wait (for fast writes. Required!!!!)
|
||||
ld e,25
|
||||
ld a,4
|
||||
call VDP_SETREG
|
||||
;setup cursor:
|
||||
ld e, 13 ; set blink rate
|
||||
ld a, 0x22
|
||||
call VDP_SETREG
|
||||
;fill nametable to 0
|
||||
ld de, 0x0000
|
||||
ld bc, 0x2000
|
||||
ld a, 0
|
||||
call VDP_FILL
|
||||
;load font
|
||||
ld hl, [VDP_FONT_6x8_80COL]
|
||||
ld bc, 256*8
|
||||
ld de, 0x1000
|
||||
call VDP_LOADRAM
|
||||
;enable screen wit 64K enabled
|
||||
ld e, VDPR_MODE1
|
||||
ld a, 01010000b
|
||||
call VDP_SETREG
|
||||
ret
|
||||
|
||||
;================================================================
|
||||
; Fonts
|
||||
;================================================================
|
||||
VDP_FONT_6x8_80COL:
|
||||
.include "font80.s"
|
||||
@@ -0,0 +1,5 @@
|
||||
;----------------------------------------------------------------
|
||||
;Ringbuffer data structure
|
||||
;by Dennis Gunia (07/2024)
|
||||
;----------------------------------------------------------------
|
||||
|
||||
706
OperatingSystem/Applications/displaydemo/include/tms.s
Normal file
706
OperatingSystem/Applications/displaydemo/include/tms.s
Normal file
@@ -0,0 +1,706 @@
|
||||
; TMS9918A graphics subroutines
|
||||
; Copyright 2018-2020 J.B. Langston
|
||||
;
|
||||
; Permission is hereby granted, free of charge, to any person obtaining a
|
||||
; copy of this software and associated documentation files (the "Software"),
|
||||
; to deal in the Software without restriction, including without limitation
|
||||
; the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
; and/or sell copies of the Software, and to permit persons to whom the
|
||||
; Software is furnished to do so, subject to the following conditions:
|
||||
;
|
||||
; The above copyright notice and this permission notice shall be included in
|
||||
; all copies or substantial portions of the Software.
|
||||
;
|
||||
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
; DEALINGS IN THE SOFTWARE.
|
||||
|
||||
; VDP Programmer's Guide: http://map.grauw.nl/resources/video/ti-vdp-programmers-guide.pdf
|
||||
|
||||
phase 0xE400
|
||||
; ---------------------------------------------------------------------------
|
||||
; configuration parameters; can be changed at runtime
|
||||
TmsPort:
|
||||
defb 0xE0 ; port for TMS vram (reg is 1 higher)
|
||||
TmsWait:
|
||||
defb 64 ; iterations to wait after ram access
|
||||
TmsMode:
|
||||
defw 0 ; mode registers
|
||||
TmsNameAddr:
|
||||
defw 3800h ; name table address (multiples of 400H)
|
||||
TmsColorAddr:
|
||||
defw 2000h ; color table address (multiples of 40H)
|
||||
TmsPatternAddr:
|
||||
defw 0 ; pattern table (multiples of 800H)
|
||||
TmsSpritePatternAddr:
|
||||
defw 1800h ; sprite attribute table (multiples of 80H)
|
||||
TmsSpriteAttrAddr:
|
||||
defw 3bc0h ; sprite pattern table (multiples of 800H)
|
||||
TmsScreenColors:
|
||||
defb 0 ; background (low nybble), text color (high nybble)
|
||||
; ---------------------------------------------------------------------------
|
||||
; register constants
|
||||
dephase
|
||||
setup_vars:
|
||||
|
||||
ld a,0xE0
|
||||
ld (TmsPort),a
|
||||
|
||||
ld a,2
|
||||
ld (TmsWait),a
|
||||
|
||||
ld a,0
|
||||
ld (TmsMode),a
|
||||
ld a,0
|
||||
ld (TmsMode+1),a
|
||||
|
||||
ld a,0
|
||||
ld (TmsNameAddr),a
|
||||
ld a,38h
|
||||
ld (TmsNameAddr+1),a
|
||||
|
||||
ld a,0
|
||||
ld (TmsPatternAddr),a
|
||||
ld a,0
|
||||
ld (TmsPatternAddr+1),a
|
||||
|
||||
ld a,0
|
||||
ld (TmsColorAddr),a
|
||||
ld a,20h
|
||||
ld (TmsColorAddr+1),a
|
||||
|
||||
|
||||
ld a,0
|
||||
ld (TmsSpritePatternAddr),a
|
||||
ld a,0x18
|
||||
ld (TmsSpritePatternAddr+1),a
|
||||
|
||||
|
||||
ld a,0xc0
|
||||
ld (TmsSpriteAttrAddr),a
|
||||
ld a,0x3b
|
||||
ld (TmsSpriteAttrAddr+1),a
|
||||
|
||||
ret
|
||||
|
||||
TmsWriteBit: equ 40h ; bit to indicate memory write
|
||||
|
||||
; Registers
|
||||
TmsCtrl0Reg: equ 80h
|
||||
TmsCtrl1Reg: equ 81h
|
||||
TmsNameReg: equ 82h
|
||||
TmsColorTableReg: equ 83h
|
||||
TmsPatternReg: equ 84h
|
||||
TmsSpriteAttrReg: equ 85h
|
||||
TmsSpritePatternReg: equ 86h
|
||||
TmsColorReg: equ 87h
|
||||
|
||||
; Control Register Bits
|
||||
TmsM3: equ 200h
|
||||
TmsExtVideo: equ 100h
|
||||
Tms16k: equ 80h
|
||||
TmsDisplayEnable: equ 40h
|
||||
TmsIntEnableBit: equ 20h
|
||||
TmsM1: equ 10h
|
||||
TmsM2: equ 8
|
||||
TmsSprite32: equ 2
|
||||
TmsSpriteMag: equ 1
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; table lengths
|
||||
|
||||
TmsTileNameLen: equ 300h
|
||||
TmsTextNameLen: equ 3c0h
|
||||
|
||||
TmsTileColorLen: equ 20h
|
||||
TmsBitmapColorLen: equ 800h
|
||||
|
||||
TmsTilePatternLen: equ 800h
|
||||
TmsTextPatternLen: equ 800h
|
||||
TmsMulticolorPatternLen: equ 600h
|
||||
TmsBitmapPatternLen: equ 1800h
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; color constants
|
||||
|
||||
TmsTransparent: equ 0
|
||||
TmsBlack: equ 1
|
||||
TmsMediumGreen: equ 2
|
||||
TmsLightGreen: equ 3
|
||||
TmsDarkBlue: equ 4
|
||||
TmsLightBlue: equ 5
|
||||
TmsDarkRed: equ 6
|
||||
TmsCyan: equ 7
|
||||
TmsMediumRed: equ 8
|
||||
TmsLightRed: equ 9
|
||||
TmsDarkYellow: equ 0ah
|
||||
TmsLightYellow: equ 0bh
|
||||
TmsDarkGreen: equ 0ch
|
||||
TmsMagenta: equ 0dh
|
||||
TmsGray: equ 0eh
|
||||
TmsWhite: equ 0fh
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; port I/O routines
|
||||
|
||||
; These routines access the ports configured in TmsPort.
|
||||
|
||||
; These memory locations can be set at runtime to support different hardware
|
||||
; configurations from the same binary. TmsProbe automatically detects the
|
||||
; TMS9918A on common ports.
|
||||
|
||||
; The TMS9918A RAM must not be accessed more than once every 8 us or display
|
||||
; corruption may occur. During vblank and with the display disabled,
|
||||
; accesses can be 2 us apart, but we will always use 8 us minimum delay.
|
||||
|
||||
; TmsRamIn/TmsRamOut include a configurable delay loop, which waits for the
|
||||
; configured iterations between VRAM writes to work properly with faster CPUs
|
||||
|
||||
; Minimum time to execute each procedure call:
|
||||
; Z80: 88 cycles, 8.8 us @ 10 MHz
|
||||
; Z180: 80 cycles, 8.64 us @ 9.216 MHz, 4.32 us @ 18.432, 2.16 us @ 36.864
|
||||
;
|
||||
; Additional delay per djnz iteration:
|
||||
; Z80: 8 cycles * (iterations - 1)
|
||||
; 0.8 us @ 10 MHz
|
||||
; Z180: 7 cycles * (iterations - 1)
|
||||
; 0.756 us @ 9.216 MHz, 0.378 us @ 18.432, 0.189 us @ 36.864
|
||||
|
||||
; Delay loop iterations required for different CPU speeds:
|
||||
; Z80 @ 10 MHz or less: 1
|
||||
; Z180 @ 9.216 MHz or less: 1
|
||||
; Z180 @ 18.432 MHz: 10
|
||||
; Z180 @ 36.864 MHz: 31
|
||||
TmsWaits: defb 1, 10, 31 ; wait iterations to add for different CPU speeds
|
||||
|
||||
; set up wait time based on clock multiplier in E
|
||||
TmsSetWait:
|
||||
ld a,1
|
||||
ld (TmsWait), a
|
||||
ret
|
||||
|
||||
; try to find TMS9918A on common ports
|
||||
TmsProbe:
|
||||
ld hl, TmsPorts
|
||||
ld b, TmsNumPorts
|
||||
TmsProbeNext:
|
||||
ld a, (hl)
|
||||
ld (TmsPort), a
|
||||
call TmsRegIn ; clear vsync bit
|
||||
call TmsRegIn ; check it again
|
||||
jp m, TmsProbeFailed ; if still set, not a TMS9918A
|
||||
ld de, 0ffffh ; long enough for another vsync
|
||||
TmsProbeWait:
|
||||
call TmsRegIn ; check vsync bit again
|
||||
ret m ; if set, it's a TMS9918A (and Z is clear)
|
||||
dec de ; otherwise, keep waiting
|
||||
ld a, e
|
||||
or d
|
||||
jp nz, TmsProbeWait
|
||||
TmsProbeFailed:
|
||||
inc hl ; if still clear after this long, try next port
|
||||
djnz TmsProbeNext
|
||||
xor a ; set Z if we ran out of ports to check
|
||||
ret
|
||||
|
||||
TmsPorts: ; List of ports to probe:
|
||||
defb 0x80 ; ColecoVision / SG-1000
|
||||
defb 98h ; MSX
|
||||
defb 10h ; Sord M5 (conflicts with z80ctrl SIO port)
|
||||
;defb 8 ; Tatung Einstein (conflicts with z80ctrl drive ports)
|
||||
;defb 1 ; MTX (not supported by TMS9918A video card)
|
||||
; add additional ports to check here
|
||||
TmsNumPorts: equ $ - TmsPorts
|
||||
|
||||
; set a single register value
|
||||
; A = register value
|
||||
; E = register to set
|
||||
TmsSetReg:
|
||||
call TmsRegOut
|
||||
ld a, e
|
||||
; fallthrough to TmsRegOut
|
||||
|
||||
; write to configured register port
|
||||
; parameters:
|
||||
; A = value to write
|
||||
TmsRegOut:
|
||||
push bc
|
||||
ld bc, (TmsPort)
|
||||
inc c
|
||||
out (c), a
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; read from configured register port
|
||||
; returns:
|
||||
; A = value read
|
||||
TmsRegIn:
|
||||
push bc
|
||||
ld bc, (TmsPort)
|
||||
inc c
|
||||
in a, (c)
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; write to configured VRAM port
|
||||
; parameters:
|
||||
; A = value to write
|
||||
; Z80 | Z180 cycles...
|
||||
TmsRamOut: ; 17 | 16 (call)
|
||||
push bc ; 11 | 11
|
||||
ld bc, (TmsPort) ; 20 | 18
|
||||
out (c), a ; 12 | 10
|
||||
TmsRamOutDelay:
|
||||
djnz TmsRamOutDelay ; 8 | 7 plus (13 | 9) * (iterations-1)
|
||||
pop bc ; 10 | 9
|
||||
ret ; 10 | 9
|
||||
|
||||
; read from configured VRAM port
|
||||
; returns:
|
||||
; A = value read
|
||||
TmsRamIn:
|
||||
push bc
|
||||
ld bc, (TmsPort)
|
||||
TmsRamInDelay:
|
||||
djnz TmsRamInDelay
|
||||
in a, (c)
|
||||
ld bc, (TmsPort)
|
||||
TmsRamInDelay2:
|
||||
djnz TmsRamInDelay2
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; register configuration routines
|
||||
|
||||
; set the background color
|
||||
; A = requested color
|
||||
TmsBackground:
|
||||
and 0fh
|
||||
ld b, a
|
||||
ld a, (TmsScreenColors)
|
||||
and 0f0h
|
||||
or b
|
||||
ld (TmsScreenColors), a
|
||||
ld e, TmsColorReg
|
||||
jp TmsSetReg
|
||||
|
||||
; set the sprite configuration
|
||||
; A = sprite options
|
||||
TmsSpriteConfig:
|
||||
and TmsSprite32|TmsSpriteMag
|
||||
ld b, a
|
||||
ld a, (TmsMode)
|
||||
and ~(TmsSprite32|TmsSpriteMag)
|
||||
or b
|
||||
ld (TmsMode), a
|
||||
ld e, TmsCtrl1Reg
|
||||
jp TmsSetReg
|
||||
|
||||
|
||||
; enable vblank interrupts
|
||||
TmsIntEnable:
|
||||
ld a, (TmsMode)
|
||||
or TmsIntEnableBit
|
||||
ld (TmsMode), a
|
||||
ld e, TmsCtrl1Reg
|
||||
jp TmsSetReg
|
||||
|
||||
; disable vblank interrupts
|
||||
TmsIntDisable:
|
||||
ld a, (TmsMode)
|
||||
and ~TmsIntEnableBit
|
||||
ld (TmsMode), a
|
||||
ld e, TmsCtrl1Reg
|
||||
jp TmsSetReg
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; initialization routines
|
||||
|
||||
TmsBlankFlags: equ Tms16k
|
||||
TmsTileFlags: equ Tms16k | TmsDisplayEnable
|
||||
TmsTextFlags: equ Tms16k | TmsDisplayEnable | TmsM1
|
||||
TmsMulticolorFlags: equ Tms16k | TmsDisplayEnable | TmsM2
|
||||
TmsBitmapFlags: equ Tms16k | TmsDisplayEnable | TmsM3
|
||||
|
||||
; reset registers and clear all 16KB of video memory
|
||||
TmsReset:
|
||||
ld hl, TmsBlankFlags ; blank the screen with 16KB enabled
|
||||
ld (TmsMode), hl
|
||||
ld a, l
|
||||
ld e, TmsCtrl1Reg
|
||||
call TmsSetReg
|
||||
ld a, h
|
||||
ld e, TmsCtrl0Reg
|
||||
call TmsSetReg
|
||||
ld a, TmsTransparent
|
||||
call TmsBackground
|
||||
ld a, TmsTransparent
|
||||
call TmsTextColor
|
||||
ld de, 0 ; clear entire VRAM
|
||||
ld bc, 4000h
|
||||
ld a, 0
|
||||
call TmsFill
|
||||
ret
|
||||
|
||||
; initialize for multicolor mode
|
||||
TmsMulticolor:
|
||||
call TmsReset
|
||||
ld de, (TmsNameAddr)
|
||||
call TmsWriteAddr
|
||||
ld d, 6 ; name table has 6 sections
|
||||
ld e, 0 ; lines in first section start at 0
|
||||
TmsSectionLoop:
|
||||
ld c, 4 ; each section has 4 identical lines
|
||||
TmsLineLoop:
|
||||
ld b, 32 ; each line is 32 bytes long
|
||||
ld a, e ; same starting value for each line in section
|
||||
TmsByteLoop:
|
||||
call TmsRamOut
|
||||
inc a ; byte value
|
||||
djnz TmsByteLoop
|
||||
dec c ; line counter
|
||||
jp nz, TmsLineLoop
|
||||
ld e, a ; next starting value = current + 32
|
||||
dec d ; section counter
|
||||
jp nz, TmsSectionLoop
|
||||
ld hl, TmsMulticolorFlags
|
||||
ld (TmsMode), hl
|
||||
jp TmsInitNonBitmap
|
||||
|
||||
; initialize for tiled graphics
|
||||
TmsTile:
|
||||
call TmsReset
|
||||
ld hl, TmsTileFlags
|
||||
ld (TmsMode), hl
|
||||
jp TmsInitNonBitmap
|
||||
|
||||
; initialize for text mode
|
||||
; HL = address of font to load
|
||||
TmsTextMode:
|
||||
push hl
|
||||
call TmsReset
|
||||
pop hl
|
||||
ld de, (TmsPatternAddr) ; load font from address in hl
|
||||
ld bc, TmsTextPatternLen
|
||||
call TmsWrite
|
||||
ld hl, TmsTextFlags
|
||||
ld (TmsMode), hl
|
||||
; fallthrough to TmsInitNonBitmap
|
||||
|
||||
; non-bitmap color and pattern table configuration
|
||||
TmsInitNonBitmap:
|
||||
; set up color table address (register = address / 400H)
|
||||
ld a, (TmsColorAddr)
|
||||
and 0c0h
|
||||
ld (TmsColorAddr), a
|
||||
ld d, a
|
||||
ld a, (TmsColorAddr+1)
|
||||
and 3fh
|
||||
ld (TmsColorAddr+1), a
|
||||
rl d
|
||||
rla
|
||||
rl d
|
||||
rla
|
||||
ld e, TmsColorTableReg
|
||||
call TmsSetReg
|
||||
|
||||
; set up pattern table address (register = address / 800H)
|
||||
xor a
|
||||
ld (TmsPatternAddr), a
|
||||
ld a, (TmsPatternAddr+1)
|
||||
and 38h
|
||||
ld (TmsPatternAddr+1), a
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
ld e, TmsPatternReg
|
||||
call TmsSetReg
|
||||
jp TmsInitCommon
|
||||
|
||||
; initialize for bitmapped graphics
|
||||
TmsBitmap:
|
||||
call TmsReset
|
||||
ld de, (TmsNameAddr) ; initialize name table with 3 sets
|
||||
call TmsWriteAddr ; of 256 bytes ranging from 00-FF
|
||||
ld b, 3
|
||||
xor a
|
||||
TmsBitmapLoop:
|
||||
call TmsRamOut
|
||||
inc a
|
||||
jp nz, TmsBitmapLoop
|
||||
djnz TmsBitmapLoop
|
||||
ld hl, TmsBitmapFlags
|
||||
ld (TmsMode), hl
|
||||
|
||||
; set up color table at 0H (register = 7FH) or 2000H (register = 0FFH)
|
||||
xor a
|
||||
ld (TmsColorAddr), a
|
||||
ld (TmsPatternAddr), a
|
||||
ld a, (TmsColorAddr+1)
|
||||
and 20h
|
||||
ld (TmsColorAddr+1), a
|
||||
ld a, 0ffh ; color table at 2000H
|
||||
jp nz, TmsColorTableHigh
|
||||
ld a, 7fh ; color table at 0H
|
||||
TmsColorTableHigh:
|
||||
ld e, TmsColorTableReg
|
||||
call TmsSetReg
|
||||
|
||||
; set up pattern table at 0H (register = 3) or 2000H (register = 7)
|
||||
ld a, (TmsPatternAddr+1)
|
||||
and 20h
|
||||
ld (TmsPatternAddr+1), a
|
||||
ld a, 7 ; pattern table at 2000H
|
||||
jp nz, TmsPatternTableHigh
|
||||
ld a, 3 ; pattern table at 0H
|
||||
TmsPatternTableHigh:
|
||||
ld e, TmsPatternReg
|
||||
call TmsSetReg
|
||||
; fall through to TmsInitCommon
|
||||
|
||||
|
||||
; common initialization for all modes
|
||||
TmsInitCommon:
|
||||
; set up name table address (register = address / 400H)
|
||||
xor a
|
||||
ld (TmsNameAddr), a
|
||||
ld a, (TmsNameAddr+1)
|
||||
and 3ch
|
||||
ld (TmsNameAddr+1), a
|
||||
rrca
|
||||
rrca
|
||||
ld e, TmsNameReg
|
||||
call TmsSetReg
|
||||
|
||||
; set up sprite pattern table address (register = address / 80H)
|
||||
ld a, (TmsSpriteAttrAddr)
|
||||
and 80h
|
||||
ld (TmsSpriteAttrAddr), a
|
||||
ld d, a
|
||||
ld a, (TmsSpriteAttrAddr+1)
|
||||
and 7fh
|
||||
rl d
|
||||
rla
|
||||
ld e, TmsSpriteAttrReg
|
||||
call TmsSetReg
|
||||
|
||||
; set up sprite attribute table address (register = address / 800H)
|
||||
xor a
|
||||
ld (TmsSpritePatternAddr), a
|
||||
ld a, (TmsSpritePatternAddr+1)
|
||||
and 38h
|
||||
ld (TmsSpritePatternAddr+1), a
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
ld e, TmsSpritePatternReg
|
||||
call TmsSetReg
|
||||
|
||||
; set up control registers
|
||||
ld e, TmsCtrl1Reg
|
||||
ld a, (TmsMode)
|
||||
call TmsSetReg
|
||||
ld a, (TmsMode+1)
|
||||
ld e, TmsCtrl0Reg
|
||||
jp TmsSetReg
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; memory access routines
|
||||
|
||||
; set the next address of vram to write
|
||||
; DE = address
|
||||
TmsWriteAddr:
|
||||
ld a, e ; send lsb
|
||||
call TmsRegOut
|
||||
ld a, d ; mask off msb to max of 16KB
|
||||
and 3fh
|
||||
or TmsWriteBit ; indicate that this is a write
|
||||
call TmsRegOut
|
||||
ret
|
||||
|
||||
; set the next address of vram to read
|
||||
; DE = address
|
||||
TmsReadAddr:
|
||||
ld a, e ; send lsb
|
||||
call TmsRegOut
|
||||
ld a, d ; mask off msb to max of 16KB
|
||||
and 3Fh
|
||||
call TmsRegOut
|
||||
ret
|
||||
|
||||
; copy bytes from ram to vram
|
||||
; HL = ram source address
|
||||
; DE = vram destination address
|
||||
; BC = byte count
|
||||
TmsWrite:
|
||||
call TmsWriteAddr
|
||||
TmsWriteLoop:
|
||||
ld a, (hl)
|
||||
call TmsRamOut
|
||||
inc hl
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jp nz, TmsWriteLoop
|
||||
ret
|
||||
|
||||
; fill a section of memory with a single value
|
||||
; A = value to fill
|
||||
; DE = vram destination address
|
||||
; BC = byte count
|
||||
TmsFill:
|
||||
push af
|
||||
call TmsWriteAddr
|
||||
pop af
|
||||
TmsFillLoop:
|
||||
call TmsRamOut
|
||||
dec c
|
||||
jp nz, TmsFillLoop
|
||||
djnz TmsFillLoop
|
||||
ret
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; text routines
|
||||
; set text color
|
||||
; A = requested color
|
||||
TmsTextColor:
|
||||
add a, a ; text color into high nybble
|
||||
add a, a
|
||||
add a, a
|
||||
add a, a
|
||||
ld b, a ; save for later
|
||||
ld a, (TmsScreenColors) ; get current colors
|
||||
and 0fh ; mask off old text color
|
||||
or b ; set new text color
|
||||
ld (TmsScreenColors), a
|
||||
ld e, TmsColorReg
|
||||
jp TmsSetReg ; save it back
|
||||
|
||||
; set the address to place text at X/Y coordinate
|
||||
; A = X
|
||||
; E = Y
|
||||
TmsTextPos:
|
||||
ld d, 0
|
||||
ld hl, 0
|
||||
add hl, de ; Y x 1
|
||||
add hl, hl ; Y x 2
|
||||
add hl, hl ; Y x 4
|
||||
add hl, de ; Y x 5
|
||||
add hl, hl ; Y x 10
|
||||
add hl, hl ; Y x 20
|
||||
add hl, hl ; Y x 40
|
||||
ld e, a
|
||||
add hl, de ; add X for final address
|
||||
ld de, (TmsNameAddr) ; add name table base address
|
||||
add hl, de
|
||||
ex de, hl
|
||||
jp TmsWriteAddr
|
||||
|
||||
; copy a null-terminated string to VRAM
|
||||
; HL = ram source address
|
||||
TmsStrOut:
|
||||
ld a, (hl)
|
||||
cp 0 ; return when NULL is encountered
|
||||
ret z
|
||||
call TmsRamOut
|
||||
inc hl
|
||||
jp TmsStrOut
|
||||
|
||||
; repeat a character a certain number of times
|
||||
; A = character to output
|
||||
; B = count
|
||||
TmsRepeat:
|
||||
call TmsRamOut
|
||||
djnz TmsRepeat
|
||||
ret
|
||||
|
||||
; output a character
|
||||
; A = character to output
|
||||
TmsChrOut: equ TmsRamOut
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; bitmap routines
|
||||
|
||||
TmsClearPixel: equ 0A02Fh ; cpl, and b
|
||||
TmsSetPixel: equ 0B0h ; nop, or b
|
||||
|
||||
; set operation for TmsPlotPixel to perform
|
||||
; HL = pixel operation (TmsClearPixel, TmsSetPixel)
|
||||
TmsPixelOp:
|
||||
ld (TmsPixelOpPlaceHolder), hl
|
||||
ret
|
||||
|
||||
; set or clear pixel at X, Y position
|
||||
; B = Y position
|
||||
; C = X position
|
||||
TmsPlotPixel:
|
||||
ld a, b ; bail out if Y coord > 191
|
||||
cp 192
|
||||
ret nc
|
||||
call TmsXYAddr ; get address in DE for X/Y coord in BC
|
||||
ld a, c ; get lower 3 bits of X coord
|
||||
and 7
|
||||
ld b, 0
|
||||
ld c, a
|
||||
ld hl, TmsMaskLookup ; address of mask in table
|
||||
add hl, bc
|
||||
ld b, (hl) ; save mask in B
|
||||
ld hl, (TmsPatternAddr) ; get base address for pattern table
|
||||
add hl, de
|
||||
ex de, hl
|
||||
call TmsReadAddr ; set read within pattern table
|
||||
call TmsRamIn
|
||||
TmsPixelOpPlaceHolder:
|
||||
or b ; mask bit in previous byte
|
||||
nop ; place holder for 2 byte mask operation
|
||||
push af
|
||||
call TmsWriteAddr ; set write address within pattern table
|
||||
pop af
|
||||
jp TmsRamOut
|
||||
|
||||
TmsMaskLookup:
|
||||
defb 80h, 40h, 20h, 10h, 8h, 4h, 2h, 1h
|
||||
|
||||
; set the color for a block of pixels in bitmap mode
|
||||
; B = Y position
|
||||
; C = X position
|
||||
; A = foreground/background color to set
|
||||
TmsPixelColor:
|
||||
push af
|
||||
ld a, b ; bail out if Y coord > 191
|
||||
cp 192
|
||||
ret nc
|
||||
call TmsXYAddr ; get address in DE for X/Y coord in BC
|
||||
ld hl, (TmsColorAddr) ; add the color table base address
|
||||
add hl, de
|
||||
ex de, hl
|
||||
call TmsWriteAddr ; set write address within color table
|
||||
pop af
|
||||
jp TmsRamOut
|
||||
|
||||
; calculate address byte containing X/Y coordinate
|
||||
; B = Y position
|
||||
; C = X position
|
||||
; returns address in DE
|
||||
TmsXYAddr:
|
||||
ld a, b ; d = (y / 8)
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
and 1fh
|
||||
ld d, a
|
||||
|
||||
ld a, c ; e = (x & f8)
|
||||
and 0f8h
|
||||
ld e, a
|
||||
|
||||
ld a, b ; e += (y & 7)
|
||||
and 7
|
||||
or e
|
||||
ld e, a
|
||||
ret
|
||||
2552
OperatingSystem/Applications/displaydemo/include/tmsfont.s
Normal file
2552
OperatingSystem/Applications/displaydemo/include/tmsfont.s
Normal file
File diff suppressed because it is too large
Load Diff
43
OperatingSystem/Applications/displaydemo/kbdtest.asm
Normal file
43
OperatingSystem/Applications/displaydemo/kbdtest.asm
Normal file
@@ -0,0 +1,43 @@
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
START_ADDR .EQU 0x8000
|
||||
|
||||
org START_ADDR
|
||||
com_header:
|
||||
jp com_prg
|
||||
db 0x00
|
||||
dw 0x00, 0x00, 0x00 ;always 0
|
||||
dw [START_ADDR] ;start addr
|
||||
dw [_eof] ;end of file
|
||||
dw [_eof - START_ADDR] ;length
|
||||
dc 48,0x00
|
||||
|
||||
com_prg:
|
||||
; Program start
|
||||
ld hl, [_isr_pio_test]
|
||||
ld (INT_VEC_TABLE + 2), hl
|
||||
|
||||
;setup PIO
|
||||
ld a, 11001111b ;setup as controll port
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 11110111b ;set all as inputs
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 00000010b ;set interrupt vector
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 11010111b ;enable interrupt; logic or, mask follows
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 00001011b ;set interrupt mask
|
||||
;out (INT_PIO_ADDRC), a
|
||||
;in a,(INT_PIO_ADDRD); clear buffer
|
||||
ld a, 10000011b ;enable interrupt
|
||||
out (INT_PIO_ADDRC), a
|
||||
;call keyboard_init
|
||||
;call keyb_cmd_enable
|
||||
;call keyb_enable_int
|
||||
|
||||
ret
|
||||
|
||||
.include "kdrv_vt82c42.s"
|
||||
.include "kdrv_int.s"
|
||||
_eof:
|
||||
|
||||
|
||||
323
OperatingSystem/Applications/displaydemo/main.asm
Normal file
323
OperatingSystem/Applications/displaydemo/main.asm
Normal file
@@ -0,0 +1,323 @@
|
||||
IDE_CMD_WRITESEC .EQU 0x30
|
||||
|
||||
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
START_ADDR .EQU 0x8000
|
||||
|
||||
org START_ADDR
|
||||
com_header:
|
||||
jp com_prg
|
||||
db 0x00
|
||||
dw 0x00, 0x00, 0x00 ;always 0
|
||||
dw [START_ADDR] ;start addr
|
||||
dw [_eof] ;end of file
|
||||
dw [_eof - START_ADDR] ;length
|
||||
dc 48,0x00
|
||||
|
||||
com_prg:
|
||||
; Program starts here
|
||||
|
||||
call TermInit
|
||||
ret
|
||||
;-------------------------------------------------
|
||||
; Z8C/MEGA80 VDP Console IO Functions
|
||||
; by Dennis Gunia 2022/02
|
||||
; Version 0.1
|
||||
;
|
||||
; For Z8C Monitor
|
||||
;-------------------------------------------------
|
||||
|
||||
; Constant Values
|
||||
TermVarMemoryLocation equ 0x7000
|
||||
|
||||
|
||||
; Dynamic VARs
|
||||
TermVarTemplate:
|
||||
phase TermVarMemoryLocation ;Change pointers to this template to the specified location
|
||||
TermCurrentX: ; Start sector
|
||||
defb 0x01
|
||||
TermCurrentY: ; Start sector
|
||||
defb 0x04
|
||||
TermCursorState:
|
||||
defb 0x00
|
||||
TermCursorEnabled:
|
||||
defb 0x00
|
||||
TermVarTemplateEnd:
|
||||
dephase
|
||||
|
||||
|
||||
|
||||
TermInit:
|
||||
; Copy TermVarTemplate to memory
|
||||
LD HL, TermVarMemoryLocation ;Load destination into HL
|
||||
LD BC, [TermVarTemplate] ;Load source into BC
|
||||
LD DE, [TermVarTemplateEnd] ;Load end into DE
|
||||
TermInit_copy_loop:
|
||||
LD A,(BC) ;Copy value
|
||||
LD (HL),A
|
||||
INC BC ;Increment pointers
|
||||
INC HL
|
||||
PUSH HL ;Backup HL
|
||||
SBC HL,DE ;Check if next pointer matches end
|
||||
POP HL ;Restore HL
|
||||
JP NZ, TermInit_copy_loop ;Loop if pointer != end
|
||||
; template copy done
|
||||
|
||||
|
||||
; install font
|
||||
call setup_vars
|
||||
ld hl, TmsFont
|
||||
call TmsTextMode ; initialize text mode
|
||||
|
||||
ld a, TmsDarkRed ; set colors
|
||||
call TmsBackground
|
||||
ld a, TmsWhite
|
||||
call TmsTextColor
|
||||
|
||||
ld a, 0 ; put title at 11, 1
|
||||
ld e, 0
|
||||
call TmsTextPos
|
||||
ld hl, TitleMessage ; output title
|
||||
call TmsStrOut
|
||||
|
||||
ld a, 0 ; put title at 11, 1
|
||||
ld e, 4
|
||||
call TmsTextPos
|
||||
|
||||
|
||||
ret
|
||||
|
||||
TermSetCursor:
|
||||
ld a, (TermCurrentY)
|
||||
ld e, a
|
||||
ld a, (TermCurrentX)
|
||||
|
||||
call TmsTextPos
|
||||
ret
|
||||
|
||||
TermPrintStr:
|
||||
; BC contains String offset
|
||||
; Prints null terminated string
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
TermPrintStr_LOOP:
|
||||
LD A,(BC)
|
||||
|
||||
; Return if nullbyte
|
||||
OR 0
|
||||
JR Z, TermPrintStr_EXIT
|
||||
; Print Char
|
||||
CALL TermPrintChar
|
||||
|
||||
; INC BC and JP start of loop
|
||||
INC BC
|
||||
jp TermPrintStr_LOOP
|
||||
TermPrintStr_EXIT:
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
TermPrintChar:
|
||||
push AF
|
||||
push BC
|
||||
push DE
|
||||
push HL
|
||||
; check if special char
|
||||
cp 0x7F ; Backspace
|
||||
jp z, TermPrintCharSPDelete
|
||||
cp 13
|
||||
jp z, TermPrintCharSPCR
|
||||
cp 10
|
||||
jp z, TermPrintCharSPLF
|
||||
; a has char
|
||||
call TmsChrOut
|
||||
ld a,(TermCurrentX)
|
||||
inc a
|
||||
cp 39
|
||||
jp z,TermPrintCharWrap; if line end
|
||||
jp nc,TermPrintCharWrap; if line end
|
||||
ld (TermCurrentX), a
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
TermPrintCharWrap:
|
||||
xor a
|
||||
ld (TermCurrentX), a
|
||||
ld a,(TermCurrentY)
|
||||
cp 23 ; if already last line
|
||||
jp z, TermPrintCharSPLFScroll
|
||||
inc a
|
||||
ld (TermCurrentY),a
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
TermPrintCharSPDelete:
|
||||
ld a,(TermCurrentX)
|
||||
and a
|
||||
jp z, TermPrintCharSPDeleteWrap ; if at pos X 0 then go previous line
|
||||
dec a ; else decrement X
|
||||
ld (TermCurrentX), a
|
||||
call TermSetCursor
|
||||
ld a, " "
|
||||
call TmsChrOut
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
TermPrintCharSPDeleteWrap:
|
||||
ld a,39
|
||||
ld (TermCurrentX), a
|
||||
ld a,(TermCurrentY)
|
||||
dec a
|
||||
ld (TermCurrentY),a
|
||||
call TermSetCursor
|
||||
ld a, " "
|
||||
call TmsChrOut
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
|
||||
TermPrintCharSPLF: ; linefeed
|
||||
ld a,(TermCurrentY)
|
||||
cp 23 ; if already last line
|
||||
jp z, TermPrintCharSPLFScroll
|
||||
inc a
|
||||
ld (TermCurrentY),a
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
TermPrintCharSPLFScroll:
|
||||
call TermScroll
|
||||
ld a,23
|
||||
ld (TermCurrentY),a
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
TermPrintCharSPCR: ; linefeed
|
||||
xor a
|
||||
ld (TermCurrentX),a
|
||||
call TermSetCursor
|
||||
jp TermPrintCharDone
|
||||
|
||||
TermPrintCharDone:
|
||||
pop HL
|
||||
pop DE
|
||||
pop BC
|
||||
pop AF
|
||||
ret
|
||||
|
||||
TermScroll:
|
||||
ld bc, 0x3800 ; load start of text-buffer into pointer
|
||||
|
||||
TermScrollLine:
|
||||
ld h,b
|
||||
ld l,c
|
||||
|
||||
ld de, 40 ; line width
|
||||
add hl, de
|
||||
|
||||
ld a,l ; setup VDP address
|
||||
out (0x81),a
|
||||
ld a,h
|
||||
and 3fh
|
||||
out (0x81),a
|
||||
call VDPWait
|
||||
in a, (0x80) ; read byte
|
||||
push af
|
||||
|
||||
ld a,c ; setup VDP address
|
||||
out (0x81),a
|
||||
ld a,b
|
||||
and 3fh
|
||||
or 40h ; write bit
|
||||
out (0x81),a
|
||||
pop af
|
||||
call VDPWait
|
||||
out (0x80),a
|
||||
|
||||
inc bc
|
||||
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld de, VDPTextBufferEnd ; buffer end
|
||||
sbc hl, de
|
||||
|
||||
jp nz, TermScrollLine
|
||||
|
||||
; clear last line
|
||||
ld bc,920
|
||||
ld a,c ; setup VDP address
|
||||
out (0x81),a
|
||||
ld a,b
|
||||
and 3fh
|
||||
or 40h ; write bit
|
||||
out (0x81),a
|
||||
ld c,40
|
||||
TermScrollClearLine:
|
||||
ld bc, 0x3800 + 920
|
||||
TermScrollClearLineLoop:
|
||||
|
||||
ld a,c ; setup VDP addressh
|
||||
out (0x81),a
|
||||
ld a,b
|
||||
and 3fh
|
||||
or 40h ; write bit
|
||||
out (0x81),a
|
||||
ld a, ' '
|
||||
out (0x80),a
|
||||
call VDPWait
|
||||
|
||||
inc bc
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld de, 0x3800 + 960 ; buffer end
|
||||
sbc hl, de
|
||||
|
||||
jp nz, TermScrollClearLineLoop
|
||||
ret
|
||||
|
||||
VDPWait:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
ret
|
||||
|
||||
VDPTextBufferStart equ 0
|
||||
VDPTextBufferEnd equ 0x3800 + 920
|
||||
|
||||
TitleMessage:
|
||||
db ' Z8C Mk IV - A Z80 Homebrew Computer '
|
||||
db ' ROM Ver. 1.0 by Dennis Gunia (2024) '
|
||||
db ' 64k RAM - 10MHz Z80 CPU ',0
|
||||
|
||||
TmsSubs:
|
||||
.include "tms.s" ; TMS graphics routines
|
||||
; .include "utility.s" ; BDOS utility routines
|
||||
.include "font1.s"
|
||||
|
||||
|
||||
TermClear:
|
||||
ld bc, 0x3800
|
||||
TermClearLoop:
|
||||
ld a,c ; setup VDP addressh
|
||||
out (0x81),a
|
||||
ld a,b
|
||||
and 3fh
|
||||
or 40h ; write bit
|
||||
out (0x81),a
|
||||
ld a, ' '
|
||||
out (0x80),a
|
||||
call VDPWait
|
||||
inc bc
|
||||
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld de, 0x3800 + 960 ; buffer end
|
||||
sbc hl, de
|
||||
jp nz, TermClearLoop
|
||||
|
||||
xor a
|
||||
ld (TermCurrentX), a
|
||||
ld (TermCurrentY), a
|
||||
|
||||
call TermSetCursor
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; Program ends here
|
||||
_eof:
|
||||
62
OperatingSystem/Applications/displaydemo/setcolor.asm
Normal file
62
OperatingSystem/Applications/displaydemo/setcolor.asm
Normal file
@@ -0,0 +1,62 @@
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
START_ADDR .EQU 0x8000
|
||||
|
||||
org START_ADDR
|
||||
com_header:
|
||||
jp com_prg
|
||||
db 0x00
|
||||
dw 0x00, 0x00, 0x00 ;always 0
|
||||
dw [START_ADDR] ;start addr
|
||||
dw [_eof] ;end of file
|
||||
dw [_eof - START_ADDR] ;length
|
||||
dc 48,0x00
|
||||
|
||||
com_prg:
|
||||
; Program start
|
||||
call VDP_INIT_TEXT2
|
||||
call VTERM_INIT
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
ld hl,[STR_Banner_Start_Test]
|
||||
call VTERM_PRINT_STR
|
||||
|
||||
|
||||
|
||||
call VTERM_CURSOR_ON
|
||||
|
||||
ld b, TmsBlack
|
||||
ld c, TmsWhite
|
||||
call VDP_COLOR
|
||||
|
||||
TEST_ECHO:
|
||||
call read_char
|
||||
jp z, TEST_ECHO
|
||||
call VTERM_PRINT
|
||||
jr TEST_ECHO
|
||||
ret
|
||||
|
||||
STR_Banner_Start_Test:
|
||||
db 10,13,"Z8C Monitor V2.1 by Dennis Gunia (2022-2024)",10,13,"TEST",10,13,"NEW LINE",10,13,"TEST > ",0
|
||||
|
||||
|
||||
.include "kdrv_vdpterm.s"
|
||||
.include "krdv_vdp.s"
|
||||
.include "kdrv_vt82c42.s"
|
||||
.include "kdrv_int.s"
|
||||
_eof:
|
||||
|
||||
|
||||
1
OperatingSystem/Applications/fancyprint/.zout/.gitignore
vendored
Normal file
1
OperatingSystem/Applications/fancyprint/.zout/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
main*
|
||||
595
OperatingSystem/Applications/fancyprint/.zout/symbols.s
Normal file
595
OperatingSystem/Applications/fancyprint/.zout/symbols.s
Normal file
@@ -0,0 +1,595 @@
|
||||
;This file is generated by the build script.
|
||||
;Do not make any changes here!
|
||||
|
||||
?a0000 equ 0x14A5
|
||||
?a0001 equ 0x1562
|
||||
ADDR_RTC equ 0xD0
|
||||
A_RTS_OFF equ 0x1BE
|
||||
A_RTS_ON equ 0x1C7
|
||||
BOOT_PHASE0 equ 0x83
|
||||
BOOT_PHASE1 equ 0xA5
|
||||
BOOT_PHASE1_LOOP equ 0xAE
|
||||
BOOT_PHASE2 equ 0xB9
|
||||
B_BEEP equ 0x50
|
||||
B_DSKSEL equ 0x71
|
||||
B_FATCD equ 0x7A
|
||||
B_FATCREATE equ 0x7D
|
||||
B_FATOPEN equ 0x74
|
||||
B_FATREAD equ 0x77
|
||||
B_FATWRITE equ 0x80
|
||||
B_IICRECV equ 0x56
|
||||
B_IICSEND equ 0x53
|
||||
B_KEYREAD equ 0x6B
|
||||
B_KEYSEND equ 0x6E
|
||||
B_PRINTAHEX equ 0x62
|
||||
B_PRINTCHAR equ 0x59
|
||||
B_PRINTINLINE equ 0x5F
|
||||
B_PRINTLN equ 0x65
|
||||
B_PRINTSTR equ 0x5C
|
||||
B_READCHAR equ 0x68
|
||||
COMMAND equ 0x1944
|
||||
COMMAND_BACKSPACE equ 0x1985
|
||||
COMMAND_LUT equ 0x18B2
|
||||
COMMAND_PROCESS equ 0x19AB
|
||||
COMMAND_PROCESS_FOUND equ 0x19E6
|
||||
COMMAND_PROCESS_LOOP equ 0x19AE
|
||||
COMMAND_PROCESS_LOOP_STR1 equ 0x19B7
|
||||
COMMAND_PROCESS_LOOP_STR2 equ 0x19CD
|
||||
COMMAND_PROCESS_NEXT_ENTRY equ 0x19D2
|
||||
COMMAND_PROCESS_NEXT_ENTRYI equ 0x19D1
|
||||
COMMAND_PROCESS_NOT_FOUND equ 0x19DD
|
||||
COMMAND_READ equ 0x1956
|
||||
CONSOLE_INIT equ 0xDC
|
||||
CONSOLE_INIT_CTC equ 0xDC
|
||||
CONSOLE_INIT_SIO equ 0xE4
|
||||
CS_APU_CTRL equ 0xF9
|
||||
CS_APU_DATA equ 0xF8
|
||||
CS_BANK equ 0x00
|
||||
CS_CTC_0 equ 0x04
|
||||
CS_CTC_1 equ 0x05
|
||||
CS_CTC_2 equ 0x06
|
||||
CS_CTC_3 equ 0x07
|
||||
CS_DIP equ 0x01
|
||||
CS_PIA_CR equ 0x33
|
||||
CS_PIA_PA equ 0x30
|
||||
CS_PIA_PB equ 0x31
|
||||
CS_PIA_PC equ 0x32
|
||||
CS_PIO_AC equ 0xF6
|
||||
CS_PIO_AD equ 0xF4
|
||||
CS_PIO_BC equ 0xF7
|
||||
CS_PIO_BD equ 0xF5
|
||||
CS_SIO_A_C equ 0x09
|
||||
CS_SIO_A_D equ 0x08
|
||||
CS_SIO_B_C equ 0x0B
|
||||
CS_SIO_B_D equ 0x0A
|
||||
DHEX_TO_BYTE equ 0x235
|
||||
DHEX_TO_BYTE_FAILED equ 0x251
|
||||
ERR_SYNTAX equ 0x19FC
|
||||
EXEC_RST_08 equ 0xDD5
|
||||
EXEC_RST_10 equ 0xDD9
|
||||
EXEC_RST_18 equ 0xDE5
|
||||
HEX_TO_BIN equ 0x255
|
||||
HEX_TO_BIN_2 equ 0x263
|
||||
HEX_TO_INVALID_2 equ 0x26A
|
||||
IDE_CMD_IDENT equ 0xEC
|
||||
IDE_CMD_READSEC equ 0x20
|
||||
IDE_DEV_TABLE equ 0x1307
|
||||
IDE_RD equ 0x40
|
||||
IDE_REG_ALTSTS equ 0x16
|
||||
IDE_REG_CMDSTS equ 0x0F
|
||||
IDE_REG_DATA equ 0x08
|
||||
IDE_REG_DRVADDR equ 0x17
|
||||
IDE_REG_ERROR equ 0x09
|
||||
IDE_REG_HCYL equ 0x0D
|
||||
IDE_REG_HEAD equ 0x0E
|
||||
IDE_REG_LBA0 equ 0x0B
|
||||
IDE_REG_LBA1 equ 0x0C
|
||||
IDE_REG_LBA2 equ 0x0D
|
||||
IDE_REG_LBA3 equ 0x0E
|
||||
IDE_REG_LCYL equ 0x0C
|
||||
IDE_REG_SECTOR equ 0x0A
|
||||
IDE_REG_SSECTOR equ 0x0B
|
||||
IDE_RST equ 0x80
|
||||
IDE_WR equ 0x20
|
||||
IIC_CLK equ 0x01
|
||||
IIC_DATA equ 0x02
|
||||
INT_VEC equ 0x1B
|
||||
IO_AY0_ADDR equ 0x40
|
||||
IO_AY0_DATA equ 0x41
|
||||
IO_AY1_ADDR equ 0x42
|
||||
IO_AY1_DATA equ 0x43
|
||||
IO_REG0 equ 0x20
|
||||
IO_RTC_AMPM equ 0x25
|
||||
IO_RTC_CTR_D equ 0x2D
|
||||
IO_RTC_CTR_E equ 0x2E
|
||||
IO_RTC_CTR_F equ 0x2F
|
||||
IO_RTC_DAY0 equ 0x26
|
||||
IO_RTC_DAY1 equ 0x27
|
||||
IO_RTC_HOUR equ 0x24
|
||||
IO_RTC_MIN0 equ 0x22
|
||||
IO_RTC_MIN1 equ 0x23
|
||||
IO_RTC_MON0 equ 0x28
|
||||
IO_RTC_MON1 equ 0x29
|
||||
IO_RTC_SEC0 equ 0x20
|
||||
IO_RTC_SEC1 equ 0x21
|
||||
IO_RTC_WEEK equ 0x2C
|
||||
IO_RTC_YEAR1 equ 0x2B
|
||||
IO_RTC_YERR0 equ 0x2A
|
||||
MEM_FAT_AMOUNT equ 0x44B8
|
||||
MEM_FAT_CLUSTERLEN equ 0x44BB
|
||||
MEM_FAT_COUNT1 equ 0x44BC
|
||||
MEM_FAT_CURDIR equ 0x44DF
|
||||
MEM_FAT_CURRDIR equ 0x453F
|
||||
MEM_FAT_DATASTART equ 0x44C1
|
||||
MEM_FAT_DIRSEC equ 0x44CD
|
||||
MEM_FAT_EXEC_COUNT equ 0x4545
|
||||
MEM_FAT_EXEC_CURR equ 0x4543
|
||||
MEM_FAT_EXEC_START equ 0x4547
|
||||
MEM_FAT_FILEREMAIN equ 0x44C9
|
||||
MEM_FAT_OF0_ATTRIBUTE equ 0x452F
|
||||
MEM_FAT_OF0_CCLUST equ 0x4531
|
||||
MEM_FAT_OF0_DATREM equ 0x453B
|
||||
MEM_FAT_OF0_DATSEC equ 0x4537
|
||||
MEM_FAT_OF0_FATSEC equ 0x4533
|
||||
MEM_FAT_RESERVED equ 0x44B6
|
||||
MEM_FAT_ROOTSTART equ 0x44C5
|
||||
MEM_FAT_SECTORS equ 0x44B9
|
||||
MEM_FAT_TMPFNAME equ 0x44CF
|
||||
MEM_FAT_TMPPOINTER equ 0x44BD
|
||||
MEM_IDE_BUFFER equ 0x42B6
|
||||
MEM_IDE_DEVICE equ 0x41CB
|
||||
MEM_IDE_DEV_TABLE equ 0x41D5
|
||||
MEM_IDE_FSBUFFER equ 0x44B6
|
||||
MEM_IDE_PARTITION equ 0x41CD
|
||||
MEM_IDE_POINTER equ 0x41D1
|
||||
MEM_IDE_SELECTED equ 0x4215
|
||||
MEM_IDE_STATUS equ 0x41CC
|
||||
MEM_IDE_STRING_0 equ 0x4216
|
||||
MEM_IDE_STRING_1 equ 0x423E
|
||||
MEM_IDE_STRING_2 equ 0x4266
|
||||
MEM_IDE_STRING_3 equ 0x428E
|
||||
MSG_CLEAR equ 0x1B6
|
||||
NOT_IMPLEMENTED equ 0x19F5
|
||||
OP_CALL equ 0x1A57
|
||||
OP_CD equ 0x1E27
|
||||
OP_CLR equ 0x1BEB
|
||||
OP_DASM equ 0x1AD8
|
||||
OP_DIR equ 0x1E23
|
||||
OP_DUMP equ 0x1A77
|
||||
OP_EXEC equ 0x1A3E
|
||||
OP_FSEXEC equ 0x1E44
|
||||
OP_IIC_IN equ 0x1B9F
|
||||
OP_IIC_OUT equ 0x1B3F
|
||||
OP_IO_IN equ 0x1B08
|
||||
OP_IO_OUT equ 0x1B1E
|
||||
OP_LSDSK equ 0x1E00
|
||||
OP_RTIME equ 0x1BEF
|
||||
OP_SELDSK equ 0x1E04
|
||||
OP_SET equ 0x1AA7
|
||||
OP_STIME equ 0x1D87
|
||||
POST_CHECK_APU equ 0x1E7D
|
||||
POST_CHECK_IDE_30 equ 0x1EA8
|
||||
POST_CHECK_IDE_40 equ 0x1EBB
|
||||
POST_CHECK_PIO equ 0x1E58
|
||||
POST_START equ 0x1E48
|
||||
POST_TEST_RTC equ 0x1ED5
|
||||
PRG_RAM_START equ 0x4110
|
||||
PRG_RAM_TOP equ 0xFF00
|
||||
PRINTINLINE equ 0x1D0
|
||||
PRINTSPEED equ 0x7FFE
|
||||
PROG_MEM_START equ 0x4000
|
||||
PROG_ROM_START equ 0x100
|
||||
RST_00 equ 0x00
|
||||
RST_08 equ 0x08
|
||||
RST_10 equ 0x10
|
||||
RST_18 equ 0x18
|
||||
STACK_RAM_TOP equ 0xFFFF
|
||||
START_ROM equ 0x00
|
||||
STRCONV_BYTES_TO_HEX equ 0x26C
|
||||
STRCONV_BYTES_TO_HEX_1 equ 0x27B
|
||||
STRCONV_BYTES_TO_HEX_2 equ 0x285
|
||||
STR_Banner_Start equ 0x2689
|
||||
STR_PD_HEADER equ 0x186B
|
||||
SYS_BUF_START equ 0x4010
|
||||
SYS_RAM_START equ 0x4000
|
||||
VAR_CONSOLE_BAUD equ 0x18
|
||||
VAR_CONSOLE_CONF equ 0x0F
|
||||
VDP_MEM equ 0x80
|
||||
VDP_REG equ 0x81
|
||||
_COMMAND_PROCESS_FOUND equ 0x19F4
|
||||
_OP_CALL equ 0x1A76
|
||||
_OP_IIC_ACK_ERR equ 0x1B84
|
||||
_OP_IIC_ACK_ERR_str equ 0x1B8B
|
||||
_OP_IIC_IN_LOOP equ 0x1BD1
|
||||
_OP_IIC_IN_LOOP_TEXT equ 0x1BDE
|
||||
_OP_IIC_OUT_LOOP equ 0x1B55
|
||||
_OP_IIC_OUT_SEND equ 0x1B71
|
||||
_OP_RTIME_NN equ 0x1BF2
|
||||
_OP_RTIME_RD_CMD equ 0x1CAA
|
||||
_OP_SELDSK_INVALID equ 0x1E13
|
||||
_OP_SELDSK_INVALID_STR equ 0x1E2B
|
||||
_OP_SET_LOOP equ 0x1ABF
|
||||
_OP_STIME_INVALID equ 0x1D4D
|
||||
_OP_STIME_PROMPT equ 0x1D64
|
||||
_OP_STIME_PROMPT_ERR equ 0x1D7C
|
||||
_OP_STIME_STR_DAY equ 0x1CAB
|
||||
_OP_STIME_STR_HOUR equ 0x1CFC
|
||||
_OP_STIME_STR_MIN equ 0x1D17
|
||||
_OP_STIME_STR_MON equ 0x1CC6
|
||||
_OP_STIME_STR_SEC equ 0x1D32
|
||||
_OP_STIME_STR_YEAR equ 0x1CE1
|
||||
_POST_CHECK_APU_FAILED equ 0x1E9C
|
||||
_POST_CHECK_IDE_FAILED equ 0x1ECE
|
||||
_POST_CHECK_PIO_FAILED equ 0x1E71
|
||||
_POST_TEST_RTC_INVALID equ 0x1F0F
|
||||
_POST_TEST_RTC_NOTFOUND equ 0x1F08
|
||||
_STR_NOT_FOUND equ 0x1A17
|
||||
_STR_NOT_IMPLEMENTED equ 0x1A03
|
||||
_STR_SYNTAX equ 0x1A2B
|
||||
_beep_pause_l1 equ 0xE01
|
||||
_compare_filename_loop equ 0x234A
|
||||
_compare_filename_nomatch equ 0x2358
|
||||
_fancy_print_beep_pause equ 0x806A
|
||||
_fancy_print_delay_loop equ 0x8076
|
||||
_fat_cd_navigate equ 0x24FF
|
||||
_fat_cd_navigate_end equ 0x2545
|
||||
_fat_cd_navigate_errfile equ 0x256D
|
||||
_fat_cd_navigate_errfile_str equ 0x259F
|
||||
_fat_cd_navigate_error equ 0x2557
|
||||
_fat_cd_navigate_error_str equ 0x2575
|
||||
_fat_cd_navigate_findsec equ 0x2504
|
||||
_fat_cd_navigate_findsec_skipslash equ 0x2530
|
||||
_fat_cd_navigate_goback_fl equ 0x24BB
|
||||
_fat_cd_navigate_inerror equ 0x2565
|
||||
_fat_cd_navigate_inerrorS equ 0x255F
|
||||
_fat_cd_navigate_inerrore equ 0x2566
|
||||
_fat_cd_navigate_inputerr_str equ 0x258C
|
||||
_fat_cd_navigate_l2 equ 0x2536
|
||||
_fat_exec_notexec equ 0x2665
|
||||
_fat_exec_notfound equ 0x264C
|
||||
_fat_exec_read_done equ 0x2634
|
||||
_fat_exec_readloop1 equ 0x2616
|
||||
_fat_get_root_table_invalid equ 0x213A
|
||||
_fat_getfatsec_notroot equ 0x2179
|
||||
_fat_increment_32 equ 0x22D0
|
||||
_fat_lfs_loop equ 0x2246
|
||||
_fat_lfs_loop_compare_end equ 0x2282
|
||||
_fat_lfs_loop_compare_match equ 0x2286
|
||||
_fat_lfs_loop_compare_next_sector equ 0x2258
|
||||
_fat_math_add32 equ 0x22E4
|
||||
_fat_math_mul32 equ 0x2315
|
||||
_fat_math_mul32_l equ 0x231C
|
||||
_fat_math_mul32_noadd equ 0x2329
|
||||
_fat_math_sector_add_16 equ 0x22BC
|
||||
_fat_print_directory_dir equ 0x243A
|
||||
_fat_print_directory_loop equ 0x23CD
|
||||
_fat_print_directory_loop_break equ 0x2499
|
||||
_fat_print_directory_loop_file equ 0x23E9
|
||||
_fat_print_directory_loop_next equ 0x2465
|
||||
_fat_print_directory_loop_next_sector equ 0x2470
|
||||
_format_filename_fat16_clean equ 0x2361
|
||||
_format_filename_fat16_loop equ 0x2368
|
||||
_format_filename_fat16_loop_copy equ 0x237B
|
||||
_format_filename_fat16_loop_skip_8 equ 0x2372
|
||||
_ide_readsector_512_floop equ 0xE5D
|
||||
_ideif_drv_sel_fail equ 0x15D2
|
||||
_ideif_drv_sel_fstr0 equ 0x168F
|
||||
_ideif_drv_sel_pstr equ 0x1686
|
||||
_ideif_drv_sel_sstr0 equ 0x169D
|
||||
_ideif_drv_sel_syn equ 0x16AA
|
||||
_ideif_init_drive_charloop equ 0x1499
|
||||
_ideif_init_drive_found equ 0x147B
|
||||
_ideif_init_drive_loop equ 0x1463
|
||||
_ideif_init_drive_nodrv equ 0x1476
|
||||
_ideif_init_drive_prt_fnd equ 0x14F7
|
||||
_ideif_init_drive_prt_l1 equ 0x14E5
|
||||
_ideif_init_drive_prt_ln equ 0x14EF
|
||||
_ideif_prnt_devtable_hdr equ 0x1612
|
||||
_ideif_prnt_devtable_l1 equ 0x1373
|
||||
_ideif_prnt_devtable_l1_e2 equ 0x1439
|
||||
_ideif_prnt_devtable_l1_es equ 0x13B8
|
||||
_ideif_prnt_devtable_l1_ms equ 0x1436
|
||||
_ideif_prnt_devtable_l1_nxt equ 0x1380
|
||||
_ideif_prnt_devtable_l1_s00 equ 0x13A6
|
||||
_ideif_prnt_devtable_l1_s01 equ 0x13AB
|
||||
_ideif_prnt_devtable_l1_s02 equ 0x13B0
|
||||
_ideif_prnt_devtable_l1_sFF equ 0x13B5
|
||||
_ideif_prnt_devtable_l1_sel equ 0x137E
|
||||
_ideif_prnt_devtable_master equ 0x1676
|
||||
_ideif_prnt_devtable_s00 equ 0x164A
|
||||
_ideif_prnt_devtable_s01 equ 0x1655
|
||||
_ideif_prnt_devtable_s02 equ 0x1660
|
||||
_ideif_prnt_devtable_sFF equ 0x166B
|
||||
_ideif_prnt_devtable_slave equ 0x167E
|
||||
_read_bcd_invalid equ 0x18D
|
||||
_shift4 equ 0x1DFB
|
||||
beep equ 0xDE8
|
||||
beep_loop equ 0xDEA
|
||||
beep_pause equ 0xE00
|
||||
compare_filename equ 0x2346
|
||||
dasm_00 equ 0x9ED
|
||||
dasm_01 equ 0xCD9
|
||||
dasm_02 equ 0xA73
|
||||
dasm_03 equ 0xCAB
|
||||
dasm_08 equ 0xAF0
|
||||
dasm_09 equ 0xC7E
|
||||
dasm_0A equ 0xA55
|
||||
dasm_0B equ 0xCC2
|
||||
dasm_10 equ 0xA35
|
||||
dasm_12 equ 0xA7E
|
||||
dasm_18 equ 0x9F8
|
||||
dasm_1A equ 0xA5F
|
||||
dasm_20 equ 0xA12
|
||||
dasm_22 equ 0xD1F
|
||||
dasm_27 equ 0xAB8
|
||||
dasm_28 equ 0xA0B
|
||||
dasm_2A equ 0xCF0
|
||||
dasm_2F equ 0xABC
|
||||
dasm_30 equ 0xA03
|
||||
dasm_32 equ 0xA89
|
||||
dasm_37 equ 0xAC8
|
||||
dasm_38 equ 0x9FC
|
||||
dasm_3A equ 0xA69
|
||||
dasm_3F equ 0xAC4
|
||||
dasm_76 equ 0xACC
|
||||
dasm_80C6 equ 0xB49
|
||||
dasm_BE equ 0xAE6
|
||||
dasm_C3 equ 0x9F1
|
||||
dasm_C88E equ 0xB6F
|
||||
dasm_C9 equ 0xA41
|
||||
dasm_CD equ 0xA3B
|
||||
dasm_D9 equ 0xAFD
|
||||
dasm_DD equ 0xA23
|
||||
dasm_DD_01 equ 0xCE0
|
||||
dasm_DD_09 equ 0xC99
|
||||
dasm_DD_22 equ 0xD35
|
||||
dasm_DD_23 equ 0xCB0
|
||||
dasm_DD_2A equ 0xD07
|
||||
dasm_DD_2B equ 0xCC7
|
||||
dasm_DD_34 equ 0xC49
|
||||
dasm_DD_35 equ 0xC66
|
||||
dasm_DD_86 equ 0xB51
|
||||
dasm_DD_8E equ 0xB77
|
||||
dasm_DD_96 equ 0xB9A
|
||||
dasm_DD_9E equ 0xBBA
|
||||
dasm_DD_A6 equ 0xBDB
|
||||
dasm_DD_AE equ 0xC12
|
||||
dasm_DD_B6 equ 0xBF7
|
||||
dasm_DD_BE equ 0xC2E
|
||||
dasm_DD_E1 equ 0xD87
|
||||
dasm_DD_E3 equ 0xB0D
|
||||
dasm_DD_E5 equ 0xD71
|
||||
dasm_DD_F9 equ 0xD57
|
||||
dasm_E1 equ 0xD81
|
||||
dasm_E3 equ 0xB01
|
||||
dasm_E5 equ 0xD6B
|
||||
dasm_E9 equ 0xA1A
|
||||
dasm_ED_42 equ 0xC90
|
||||
dasm_ED_43 equ 0xD2B
|
||||
dasm_ED_44 equ 0xAC0
|
||||
dasm_ED_45 equ 0xA4B
|
||||
dasm_ED_46 equ 0xAD7
|
||||
dasm_ED_4A equ 0xC87
|
||||
dasm_ED_4B equ 0xCFC
|
||||
dasm_ED_4D equ 0xA46
|
||||
dasm_ED_56 equ 0xADC
|
||||
dasm_ED_5E equ 0xAE1
|
||||
dasm_ED_A0 equ 0xB25
|
||||
dasm_ED_A1 equ 0xB37
|
||||
dasm_ED_A8 equ 0xB2E
|
||||
dasm_ED_A9 equ 0xB40
|
||||
dasm_ED_B0 equ 0xB29
|
||||
dasm_ED_B1 equ 0xB3B
|
||||
dasm_ED_B8 equ 0xB32
|
||||
dasm_ED_B9 equ 0xB44
|
||||
dasm_F3 equ 0xAD1
|
||||
dasm_F9 equ 0xD4D
|
||||
dasm_FB equ 0xAD4
|
||||
dasm_FD equ 0xA2C
|
||||
dasm_FD_01 equ 0xCE8
|
||||
dasm_FD_09 equ 0xCA2
|
||||
dasm_FD_22 equ 0xD41
|
||||
dasm_FD_23 equ 0xCB9
|
||||
dasm_FD_2A equ 0xD13
|
||||
dasm_FD_2B equ 0xCD0
|
||||
dasm_FD_34 equ 0xC55
|
||||
dasm_FD_35 equ 0xC72
|
||||
dasm_FD_86 equ 0xB60
|
||||
dasm_FD_8E equ 0xB86
|
||||
dasm_FD_96 equ 0xBA6
|
||||
dasm_FD_9E equ 0xBC8
|
||||
dasm_FD_A6 equ 0xBE7
|
||||
dasm_FD_AE equ 0xC1E
|
||||
dasm_FD_B6 equ 0xC02
|
||||
dasm_FD_BE equ 0xC39
|
||||
dasm_FD_E1 equ 0xD8F
|
||||
dasm_FD_E3 equ 0xB19
|
||||
dasm_FD_E5 equ 0xD79
|
||||
dasm_FD_F9 equ 0xD61
|
||||
dasm_FF equ 0xA50
|
||||
dasm_UU equ 0xD97
|
||||
dasm_UW equ 0xD9B
|
||||
dasm__AND equ 0xBD6
|
||||
dasm__CP equ 0xC2A
|
||||
dasm__DEC equ 0xC61
|
||||
dasm__ED_47 equ 0xAA8
|
||||
dasm__ED_4F equ 0xAB0
|
||||
dasm__ED_57 equ 0xA98
|
||||
dasm__ED_5F equ 0xAA0
|
||||
dasm__INC equ 0xC44
|
||||
dasm__LD equ 0xA94
|
||||
dasm__OR equ 0xBF3
|
||||
dasm__SBC equ 0xBB2
|
||||
dasm__SUB equ 0xB95
|
||||
dasm__XOR equ 0xC0D
|
||||
dasm_opcode_table equ 0x595
|
||||
dasm_print16hex_addr equ 0x3C2
|
||||
dasm_print8hex equ 0x3DA
|
||||
dasm_printFlags_table equ 0xDA0
|
||||
dasm_printRegister8_table equ 0xDB0
|
||||
dasm_printRegister8_table_HL equ 0xDD0
|
||||
dasm_printRegisterIX_table equ 0xDB8
|
||||
dasm_printRegisterIY_table equ 0xDC0
|
||||
dasm_printRegisterSP_table equ 0xDC8
|
||||
disassemble equ 0x286
|
||||
disassemble_continue equ 0x36C
|
||||
disassemble_err equ 0x35C
|
||||
disassemble_next equ 0x28A
|
||||
disassemble_print_opcode_params_end equ 0x359
|
||||
disassemble_print_opcode_params_loop equ 0x305
|
||||
disassemble_print_opcode_raw equ 0x2C7
|
||||
disassemble_print_opcode_raw_fill equ 0x2DB
|
||||
disassemble_table_first_match equ 0x39E
|
||||
disassemble_table_found equ 0x3B8
|
||||
disassemble_table_notfound equ 0x3BC
|
||||
disassemble_table_seek equ 0x37A
|
||||
disassemble_table_seek_loop equ 0x37E
|
||||
dump_pretty equ 0x1810
|
||||
dump_pretty_ascii equ 0x183A
|
||||
dump_pretty_ascii_cont equ 0x1858
|
||||
dump_pretty_ascii_loop equ 0x1842
|
||||
dump_pretty_ascii_none equ 0x1853
|
||||
dump_pretty_col equ 0x182D
|
||||
dump_pretty_end equ 0x186A
|
||||
dump_pretty_nextrow equ 0x185E
|
||||
dump_pretty_row equ 0x1818
|
||||
endPrint equ 0x1DE
|
||||
fancy_print equ 0x8000
|
||||
fancy_print_beep equ 0x8051
|
||||
fancy_print_beep_lp equ 0x8053
|
||||
fancy_print_beep_pause equ 0x8069
|
||||
fancy_print_char equ 0x803D
|
||||
fancy_print_delay equ 0x8076
|
||||
fancy_print_demo_text equ 0x8080
|
||||
fancy_print_loop equ 0x8013
|
||||
fancy_print_loop_char equ 0x8038
|
||||
fancy_print_loop_speed equ 0x8021
|
||||
fancy_print_loop_wait equ 0x802D
|
||||
fat_cd_single equ 0x249B
|
||||
fat_copy_lba_pointer equ 0x233D
|
||||
fat_exec equ 0x25B6
|
||||
fat_get_root_table equ 0x206D
|
||||
fat_getfatsec equ 0x2162
|
||||
fat_openfile equ 0x2217
|
||||
fat_openfile_noprepare equ 0x221F
|
||||
fat_print_directory equ 0x2382
|
||||
fat_readfilesec equ 0x21EA
|
||||
fat_reset_pointer equ 0x232E
|
||||
format_filename_fat16 equ 0x235C
|
||||
ide_printerror equ 0xE94
|
||||
ide_readsector_512_fast equ 0xE49
|
||||
ide_readsector_timeout equ 0xE7E
|
||||
ide_regread_8 equ 0xE33
|
||||
ide_regwrite_8 equ 0xE19
|
||||
ide_reset equ 0xE0D
|
||||
ide_writesector_256 equ 0xE93
|
||||
ideif_drv_sel equ 0x159A
|
||||
ideif_get_drv_pointer equ 0x153A
|
||||
ideif_init_all equ 0x154E
|
||||
ideif_init_devtable equ 0x1347
|
||||
ideif_init_drive equ 0x145A
|
||||
ideif_prnt_devtable equ 0x1365
|
||||
iic_init equ 0x171C
|
||||
iic_read_ack equ 0x1763
|
||||
iic_receive_buffer equ 0x16ED
|
||||
iic_receive_buffer_done equ 0x1710
|
||||
iic_receive_buffer_err equ 0x1716
|
||||
iic_receive_buffer_loop equ 0x16FE
|
||||
iic_receive_byte equ 0x17E9
|
||||
iic_receive_byte_loop equ 0x17F6
|
||||
iic_send_ack equ 0x1789
|
||||
iic_send_buffer equ 0x16C3
|
||||
iic_send_buffer_done equ 0x16E1
|
||||
iic_send_buffer_err equ 0x16E7
|
||||
iic_send_buffer_loop equ 0x16D3
|
||||
iic_send_byte equ 0x17C3
|
||||
iic_send_byte_loop equ 0x17CF
|
||||
iic_send_ebit equ 0x1742
|
||||
iic_send_nack equ 0x17A6
|
||||
iic_send_sbit equ 0x1729
|
||||
interrupt_vectors equ 0x4000
|
||||
mon_var_template equ 0x44
|
||||
mon_var_template_end equ 0x50F
|
||||
nxtILC equ 0x1D3
|
||||
param_01 equ 0x3E8
|
||||
param_02 equ 0x40F
|
||||
param_03 equ 0x42C
|
||||
param_03_done equ 0x464
|
||||
param_03_neg equ 0x44D
|
||||
param_04 equ 0x468
|
||||
param_04_i equ 0x478
|
||||
param_05 equ 0x47E
|
||||
param_06 equ 0x48B
|
||||
param_07 equ 0x4A5
|
||||
param_08 equ 0x4B2
|
||||
param_09 equ 0x4C7
|
||||
param_09_0A equ 0x4CD
|
||||
param_0A equ 0x4BE
|
||||
param_10 equ 0x4DC
|
||||
param_11 equ 0x4EC
|
||||
param_11_12 equ 0x4FB
|
||||
param_11_12_all equ 0x51B
|
||||
param_11_12_def equ 0x50E
|
||||
param_11_12_ix equ 0x513
|
||||
param_11_12_iy equ 0x518
|
||||
param_12 equ 0x4F4
|
||||
param_13 equ 0x52C
|
||||
param_80 equ 0x54B
|
||||
param_80_seek equ 0x552
|
||||
param_81 equ 0x542
|
||||
param_comma equ 0x586
|
||||
param_printRegister equ 0x561
|
||||
param_printRegisterA equ 0x57F
|
||||
param_printRegisterHL equ 0x577
|
||||
print_16_hex equ 0x1A9
|
||||
print_32_hex equ 0x190
|
||||
print_a_hex equ 0x143
|
||||
print_bcd equ 0x155
|
||||
print_char equ 0x115
|
||||
print_clear equ 0x126
|
||||
print_newLine equ 0x12D
|
||||
print_reg equ 0x1E3
|
||||
print_str equ 0x11D
|
||||
print_str_fixed equ 0x18AA
|
||||
print_wait_out equ 0x138
|
||||
read_bcd equ 0x177
|
||||
read_char equ 0x15B
|
||||
read_in_sts equ 0x16D
|
||||
read_lba_sector equ 0x1561
|
||||
str_dev_done equ 0x160A
|
||||
str_dev_waitready equ 0x15F2
|
||||
str_error_start equ 0xEC9
|
||||
str_error_start1 equ 0xEE6
|
||||
str_error_start2 equ 0xEEF
|
||||
str_error_time equ 0xEF8
|
||||
str_post_apu equ 0x1F67
|
||||
str_post_ide_30 equ 0x1F16
|
||||
str_post_ide_40 equ 0x1F31
|
||||
str_post_nd equ 0x1F9D
|
||||
str_post_ok equ 0x1FD5
|
||||
str_post_pio equ 0x1F4C
|
||||
str_post_rtc equ 0x1F82
|
||||
str_post_rtc_iv equ 0x1FAB
|
||||
var_apu_present equ 0x410A
|
||||
var_buffer_len equ 0x4100
|
||||
var_bytes_count equ 0x411A
|
||||
var_curserchar equ 0x4106
|
||||
var_curserlastaddr equ 0x4107
|
||||
var_curseron equ 0x4105
|
||||
var_curserstate equ 0x4104
|
||||
var_curserx equ 0x4102
|
||||
var_cursery equ 0x4103
|
||||
var_dir equ 0x412B
|
||||
var_idebuffer equ 0x41CB
|
||||
var_input equ 0x417B
|
||||
var_last_char equ 0x4101
|
||||
var_opcode equ 0x4114
|
||||
var_opcode_length equ 0x4116
|
||||
var_opcode_pcount equ 0x4119
|
||||
var_opcode_start equ 0x4110
|
||||
var_opcode_string equ 0x4117
|
||||
var_opcode_table equ 0x4112
|
||||
var_opcode_x equ 0x4115
|
||||
var_pio_present equ 0x4109
|
||||
var_ps2mem equ 0x411B
|
||||
var_scratch equ 0x410B
|
||||
1
OperatingSystem/Applications/fancyprint/include/extern_symbols.s
Symbolic link
1
OperatingSystem/Applications/fancyprint/include/extern_symbols.s
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../monitor_v2/zout/symbols.s
|
||||
134
OperatingSystem/Applications/fancyprint/main.asm
Normal file
134
OperatingSystem/Applications/fancyprint/main.asm
Normal file
@@ -0,0 +1,134 @@
|
||||
CS_PIO_BD .EQU 0xF5
|
||||
CS_PIO_BC .EQU 0xF7
|
||||
CS_PIO_AD .EQU 0xF4
|
||||
CS_PIO_AC .EQU 0xF6
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
.org 0x8000
|
||||
|
||||
PRINTSPEED .EQU 0x7FFE
|
||||
|
||||
|
||||
fancy_print:
|
||||
call print_clear
|
||||
ld bc, 65535
|
||||
call fancy_print_delay
|
||||
ld hl,[fancy_print_demo_text]
|
||||
ld bc, 4500
|
||||
ld (PRINTSPEED), bc
|
||||
fancy_print_loop:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
or a
|
||||
ret z
|
||||
cp 0xFE
|
||||
jr z, fancy_print_loop_wait
|
||||
cp 0xFD
|
||||
jr z, fancy_print_loop_speed
|
||||
jr fancy_print_loop_char
|
||||
fancy_print_loop_speed:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld c,a
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld b,a
|
||||
ld (PRINTSPEED), bc
|
||||
jr fancy_print_loop
|
||||
|
||||
fancy_print_loop_wait:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld c,a
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld b,a
|
||||
call fancy_print_delay
|
||||
jr fancy_print_loop
|
||||
|
||||
fancy_print_loop_char:
|
||||
call fancy_print_char
|
||||
jr fancy_print_loop
|
||||
|
||||
fancy_print_char:
|
||||
call print_char
|
||||
ld DE, 0xA0
|
||||
ld bc, 12
|
||||
call fancy_print_beep
|
||||
ld bc, (PRINTSPEED)
|
||||
call fancy_print_delay
|
||||
ret
|
||||
|
||||
fancy_print_beep:
|
||||
push AF
|
||||
push DE
|
||||
fancy_print_beep_lp:
|
||||
LD A,0x08
|
||||
OUT (CS_PIO_AD), A
|
||||
call fancy_print_beep_pause
|
||||
LD A,0x00
|
||||
OUT (CS_PIO_AD), A
|
||||
call fancy_print_beep_pause
|
||||
DEC DE
|
||||
ld A,D
|
||||
or E
|
||||
jr NZ, fancy_print_beep_lp
|
||||
pop de
|
||||
pop af
|
||||
ret
|
||||
|
||||
fancy_print_beep_pause:
|
||||
PUSH BC
|
||||
_fancy_print_beep_pause:
|
||||
NEG ; 8 T-states
|
||||
NEG ; 8 T-states
|
||||
DEC BC ; 6 T-states
|
||||
LD A,C ; 9 T-states
|
||||
OR B ; 4 T-states
|
||||
JP NZ,_fancy_print_beep_pause ; 10 T-states
|
||||
POP BC
|
||||
RET ; Pause complete, RETurn
|
||||
|
||||
; bc contians length
|
||||
fancy_print_delay:
|
||||
_fancy_print_delay_loop:
|
||||
push AF
|
||||
pop AF
|
||||
push AF
|
||||
pop AF
|
||||
dec bc
|
||||
ld a,b
|
||||
or c
|
||||
jr nz, _fancy_print_delay_loop
|
||||
ret
|
||||
|
||||
;; 0x00 exits the print
|
||||
;; 0xFE <uint16: delay> pauses the print
|
||||
;; 0xFD <uint16: delay> changes the print speed
|
||||
fancy_print_demo_text:
|
||||
db "Hello Dennis ... ",0xFE
|
||||
dw 65535
|
||||
db "It's been a ", 0xFD
|
||||
dw 24500
|
||||
db "long long time.", 0xFD
|
||||
dw 4500
|
||||
db 10,13,0xFE
|
||||
dw 65535
|
||||
db 0xFE
|
||||
dw 65535
|
||||
db "I almost thought",0xFE
|
||||
dw 65535
|
||||
db 0xFD
|
||||
dw 50000
|
||||
db " ... ", 0xFD
|
||||
dw 4500
|
||||
db "you forgot me ...",0xFE
|
||||
dw 65535
|
||||
db 0xFE
|
||||
dw 65535
|
||||
db 10,13
|
||||
db 10,13
|
||||
db "I'm glad you are back!"
|
||||
db 10,13
|
||||
db 10,13
|
||||
db 0
|
||||
|
||||
1
OperatingSystem/Applications/mkdir/include/extern_symbols.s
Symbolic link
1
OperatingSystem/Applications/mkdir/include/extern_symbols.s
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../monitor_v2/zout/symbols.s
|
||||
100
OperatingSystem/Applications/mkdir/main.asm
Normal file
100
OperatingSystem/Applications/mkdir/main.asm
Normal file
@@ -0,0 +1,100 @@
|
||||
IDE_CMD_WRITESEC .EQU 0x30
|
||||
|
||||
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
START_ADDR .EQU 0x8000
|
||||
|
||||
org START_ADDR
|
||||
com_header:
|
||||
jp com_prg
|
||||
db 0x00
|
||||
dw 0x00, 0x00, 0x00 ;always 0
|
||||
dw [START_ADDR] ;start addr
|
||||
dw [_eof] ;end of file
|
||||
dw [_eof - START_ADDR] ;length
|
||||
dc 48,0x00
|
||||
|
||||
com_prg:
|
||||
; Program starts here
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; write_lba_sector
|
||||
;
|
||||
; Writes A*512 byte sector ro disk
|
||||
; HL contains pointer to LBA address
|
||||
; DE contains data location
|
||||
; A contains sector count
|
||||
;------------------------------------------------------------------------------
|
||||
write_lba_sector:
|
||||
push af
|
||||
ide_wait_rdy
|
||||
pop af
|
||||
;setup registers
|
||||
LD B,IDE_REG_SECTOR ;amount of sectores
|
||||
CALL ide_regwrite_8
|
||||
LD A,(HL)
|
||||
LD B,IDE_REG_LBA0
|
||||
CALL ide_regwrite_8
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
LD B,IDE_REG_LBA1
|
||||
CALL ide_regwrite_8
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
LD B,IDE_REG_LBA2
|
||||
CALL ide_regwrite_8
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
AND 00001111b
|
||||
OR 11100000b
|
||||
LD B,IDE_REG_LBA3
|
||||
CALL ide_regwrite_8
|
||||
|
||||
LD A,IDE_CMD_WRITESEC ;send read command
|
||||
LD B,IDE_REG_CMDSTS
|
||||
CALL ide_regwrite_8
|
||||
jp ide_writesector_512_fast
|
||||
|
||||
ide_writesector_512_fast:
|
||||
ld b, IDE_REG_CMDSTS ;check status
|
||||
call ide_regread_8
|
||||
bit 0,a ;Error Bit set
|
||||
jp nz, ide_printerror ;then abort
|
||||
bit 3,a ;wait for drq
|
||||
jr z,ide_writesector_512_fast
|
||||
|
||||
ld b,0 ;256x
|
||||
ld a, 10000000b ;CommandByte-A, Mode 0, PA Out, PC Out, PB Out
|
||||
out (CS_PIA_CR), a ;Set Data direction to IN
|
||||
_ide_writesector_512_loop:
|
||||
ld a, IDE_REG_DATA ;CS0 and A=0 -> I/O register
|
||||
out (CS_PIA_PC), a ;set register
|
||||
ld a,(hl)
|
||||
out (CS_PIA_PA),a
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
out (CS_PIA_PB),a
|
||||
inc hl
|
||||
or IDE_WR ;Set Read bit
|
||||
out (CS_PIA_PC), a ;Write Read to bit controll lines
|
||||
ld a, IDE_REG_DATA ;CS0 and A=0 -> I/O register
|
||||
out (CS_PIA_PC), a ;set register
|
||||
djnz _ide_writesector_512_loop ; loop for 512 bytes
|
||||
_ide_writesector_512_waitready:
|
||||
ld b, IDE_REG_CMDSTS;check drive status
|
||||
call ide_regread_8
|
||||
bit 0,a ;Error Bit set
|
||||
jp nz, ide_printerror ;then abort
|
||||
bit 7,a ;test if data is written
|
||||
jp nz _ide_writesector_512_waitready ; if still writing, loop
|
||||
bit 3,a ;test if drive awaits next sector
|
||||
jp nz, ide_writesector_512_fast
|
||||
ret z
|
||||
|
||||
; Program ends here
|
||||
_eof:
|
||||
1
OperatingSystem/monitor_v2/.zout/.gitignore
vendored
Normal file
1
OperatingSystem/monitor_v2/.zout/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
main*
|
||||
585
OperatingSystem/monitor_v2/.zout/symbols.s
Normal file
585
OperatingSystem/monitor_v2/.zout/symbols.s
Normal file
@@ -0,0 +1,585 @@
|
||||
;This file is generated by the build script.
|
||||
;Do not make any changes here!
|
||||
|
||||
?a0000 equ 0x14BB
|
||||
?a0001 equ 0x1578
|
||||
ADDR_RTC equ 0xD0
|
||||
A_RTS_OFF equ 0x1D4
|
||||
A_RTS_ON equ 0x1DD
|
||||
BOOT_PHASE0 equ 0x86
|
||||
BOOT_PHASE1 equ 0xA4
|
||||
BOOT_PHASE1_LOOP equ 0xAD
|
||||
BOOT_PHASE2 equ 0xB8
|
||||
B_BEEP equ 0x50
|
||||
B_DSKSEL equ 0x74
|
||||
B_FATCD equ 0x7D
|
||||
B_FATCREATE equ 0x80
|
||||
B_FATOPEN equ 0x77
|
||||
B_FATREAD equ 0x7A
|
||||
B_FATWRITE equ 0x83
|
||||
B_IICRECV equ 0x56
|
||||
B_IICSEND equ 0x53
|
||||
B_KEYREAD equ 0x6B
|
||||
B_KEYREADASCII equ 0x6E
|
||||
B_KEYSEND equ 0x71
|
||||
B_PRINTAHEX equ 0x62
|
||||
B_PRINTCHAR equ 0x59
|
||||
B_PRINTINLINE equ 0x5F
|
||||
B_PRINTLN equ 0x65
|
||||
B_PRINTSTR equ 0x5C
|
||||
B_READCHAR equ 0x68
|
||||
COMMAND equ 0x195D
|
||||
COMMAND_ABORT equ 0x195A
|
||||
COMMAND_BACKSPACE equ 0x199E
|
||||
COMMAND_LUT equ 0x18C8
|
||||
COMMAND_PROCESS equ 0x19C4
|
||||
COMMAND_PROCESS_FOUND equ 0x19FF
|
||||
COMMAND_PROCESS_LOOP equ 0x19C7
|
||||
COMMAND_PROCESS_LOOP_STR1 equ 0x19D0
|
||||
COMMAND_PROCESS_LOOP_STR2 equ 0x19E6
|
||||
COMMAND_PROCESS_NEXT_ENTRY equ 0x19EB
|
||||
COMMAND_PROCESS_NEXT_ENTRYI equ 0x19EA
|
||||
COMMAND_PROCESS_NOT_FOUND equ 0x19F6
|
||||
COMMAND_READ equ 0x196F
|
||||
CONSOLE_INIT equ 0xDB
|
||||
CONSOLE_INIT_CTC equ 0xDB
|
||||
CONSOLE_INIT_SIO equ 0xE3
|
||||
CS_APU_CTRL equ 0xF9
|
||||
CS_APU_DATA equ 0xF8
|
||||
CS_BANK equ 0x00
|
||||
CS_CTC_0 equ 0x04
|
||||
CS_CTC_1 equ 0x05
|
||||
CS_CTC_2 equ 0x06
|
||||
CS_CTC_3 equ 0x07
|
||||
CS_DIP equ 0x01
|
||||
CS_PIA_CR equ 0x33
|
||||
CS_PIA_PA equ 0x30
|
||||
CS_PIA_PB equ 0x31
|
||||
CS_PIA_PC equ 0x32
|
||||
CS_PIO_AC equ 0xF6
|
||||
CS_PIO_AD equ 0xF4
|
||||
CS_PIO_BC equ 0xF7
|
||||
CS_PIO_BD equ 0xF5
|
||||
CS_SIO_A_C equ 0x09
|
||||
CS_SIO_A_D equ 0x08
|
||||
CS_SIO_B_C equ 0x0B
|
||||
CS_SIO_B_D equ 0x0A
|
||||
DHEX_TO_BYTE equ 0x24B
|
||||
DHEX_TO_BYTE_FAILED equ 0x267
|
||||
ERR_SYNTAX equ 0x1A15
|
||||
EXEC_RST_08 equ 0xDEB
|
||||
EXEC_RST_10 equ 0xDEF
|
||||
EXEC_RST_18 equ 0xDFB
|
||||
HEX_TO_BIN equ 0x26B
|
||||
HEX_TO_BIN_2 equ 0x279
|
||||
HEX_TO_INVALID_2 equ 0x280
|
||||
IDE_CMD_IDENT equ 0xEC
|
||||
IDE_CMD_READSEC equ 0x20
|
||||
IDE_CMD_WRITESEC equ 0x30
|
||||
IDE_DEV_TABLE equ 0x131D
|
||||
IDE_RD equ 0x40
|
||||
IDE_REG_ALTSTS equ 0x16
|
||||
IDE_REG_CMDSTS equ 0x0F
|
||||
IDE_REG_DATA equ 0x08
|
||||
IDE_REG_DRVADDR equ 0x17
|
||||
IDE_REG_ERROR equ 0x09
|
||||
IDE_REG_HCYL equ 0x0D
|
||||
IDE_REG_HEAD equ 0x0E
|
||||
IDE_REG_LBA0 equ 0x0B
|
||||
IDE_REG_LBA1 equ 0x0C
|
||||
IDE_REG_LBA2 equ 0x0D
|
||||
IDE_REG_LBA3 equ 0x0E
|
||||
IDE_REG_LCYL equ 0x0C
|
||||
IDE_REG_SECTOR equ 0x0A
|
||||
IDE_REG_SSECTOR equ 0x0B
|
||||
IDE_RST equ 0x80
|
||||
IDE_WR equ 0x20
|
||||
IIC_CLK equ 0x01
|
||||
IIC_DATA equ 0x02
|
||||
INT_VEC equ 0x1B
|
||||
IO_AY0_ADDR equ 0x40
|
||||
IO_AY0_DATA equ 0x41
|
||||
IO_AY1_ADDR equ 0x42
|
||||
IO_AY1_DATA equ 0x43
|
||||
IO_REG0 equ 0x20
|
||||
IO_RTC_AMPM equ 0x25
|
||||
IO_RTC_CTR_D equ 0x2D
|
||||
IO_RTC_CTR_E equ 0x2E
|
||||
IO_RTC_CTR_F equ 0x2F
|
||||
IO_RTC_DAY0 equ 0x26
|
||||
IO_RTC_DAY1 equ 0x27
|
||||
IO_RTC_HOUR equ 0x24
|
||||
IO_RTC_MIN0 equ 0x22
|
||||
IO_RTC_MIN1 equ 0x23
|
||||
IO_RTC_MON0 equ 0x28
|
||||
IO_RTC_MON1 equ 0x29
|
||||
IO_RTC_SEC0 equ 0x20
|
||||
IO_RTC_SEC1 equ 0x21
|
||||
IO_RTC_WEEK equ 0x2C
|
||||
IO_RTC_YEAR1 equ 0x2B
|
||||
IO_RTC_YERR0 equ 0x2A
|
||||
MEM_FAT_AMOUNT equ 0x44B8
|
||||
MEM_FAT_CLUSTERLEN equ 0x44BB
|
||||
MEM_FAT_COUNT1 equ 0x44BC
|
||||
MEM_FAT_CURDIR equ 0x44DF
|
||||
MEM_FAT_CURRDIR equ 0x453F
|
||||
MEM_FAT_DATASTART equ 0x44C1
|
||||
MEM_FAT_DIRSEC equ 0x44CD
|
||||
MEM_FAT_EXEC_COUNT equ 0x4545
|
||||
MEM_FAT_EXEC_CURR equ 0x4543
|
||||
MEM_FAT_EXEC_START equ 0x4547
|
||||
MEM_FAT_FILEREMAIN equ 0x44C9
|
||||
MEM_FAT_OF0_ATTRIBUTE equ 0x452F
|
||||
MEM_FAT_OF0_CCLUST equ 0x4531
|
||||
MEM_FAT_OF0_DATREM equ 0x453B
|
||||
MEM_FAT_OF0_DATSEC equ 0x4537
|
||||
MEM_FAT_OF0_FATSEC equ 0x4533
|
||||
MEM_FAT_RESERVED equ 0x44B6
|
||||
MEM_FAT_ROOTSTART equ 0x44C5
|
||||
MEM_FAT_SECTORS equ 0x44B9
|
||||
MEM_FAT_TMPFNAME equ 0x44CF
|
||||
MEM_FAT_TMPPOINTER equ 0x44BD
|
||||
MEM_IDE_BUFFER equ 0x42B6
|
||||
MEM_IDE_DEVICE equ 0x41CB
|
||||
MEM_IDE_DEV_TABLE equ 0x41D5
|
||||
MEM_IDE_FSBUFFER equ 0x44B6
|
||||
MEM_IDE_PARTITION equ 0x41CD
|
||||
MEM_IDE_POINTER equ 0x41D1
|
||||
MEM_IDE_SELECTED equ 0x4215
|
||||
MEM_IDE_STATUS equ 0x41CC
|
||||
MEM_IDE_STRING_0 equ 0x4216
|
||||
MEM_IDE_STRING_1 equ 0x423E
|
||||
MEM_IDE_STRING_2 equ 0x4266
|
||||
MEM_IDE_STRING_3 equ 0x428E
|
||||
MSG_CLEAR equ 0x1CC
|
||||
NOT_IMPLEMENTED equ 0x1A0E
|
||||
OP_CALL equ 0x1A70
|
||||
OP_CD equ 0x1E40
|
||||
OP_CLR equ 0x1C04
|
||||
OP_DASM equ 0x1AF1
|
||||
OP_DIR equ 0x1E3C
|
||||
OP_DUMP equ 0x1A90
|
||||
OP_EXEC equ 0x1A57
|
||||
OP_FSEXEC equ 0x1E5D
|
||||
OP_IIC_IN equ 0x1BB8
|
||||
OP_IIC_OUT equ 0x1B58
|
||||
OP_IO_IN equ 0x1B21
|
||||
OP_IO_OUT equ 0x1B37
|
||||
OP_LSDSK equ 0x1E19
|
||||
OP_RTIME equ 0x1C08
|
||||
OP_SELDSK equ 0x1E1D
|
||||
OP_SET equ 0x1AC0
|
||||
OP_STIME equ 0x1DA0
|
||||
POST_CHECK_APU equ 0x1E96
|
||||
POST_CHECK_IDE_30 equ 0x1EC1
|
||||
POST_CHECK_IDE_40 equ 0x1ED4
|
||||
POST_CHECK_PIO equ 0x1E71
|
||||
POST_START equ 0x1E61
|
||||
POST_TEST_RTC equ 0x1EEE
|
||||
PRG_RAM_START equ 0x4110
|
||||
PRG_RAM_TOP equ 0xFF00
|
||||
PRINTINLINE equ 0x1E6
|
||||
PROG_MEM_START equ 0x4000
|
||||
PROG_ROM_START equ 0x100
|
||||
RST_00 equ 0x00
|
||||
RST_08 equ 0x08
|
||||
RST_10 equ 0x10
|
||||
RST_18 equ 0x18
|
||||
STACK_RAM_TOP equ 0xFFFF
|
||||
START_ROM equ 0x00
|
||||
STRCONV_BYTES_TO_HEX equ 0x282
|
||||
STRCONV_BYTES_TO_HEX_1 equ 0x291
|
||||
STRCONV_BYTES_TO_HEX_2 equ 0x29B
|
||||
STR_Banner_Start equ 0x26A2
|
||||
STR_PD_HEADER equ 0x1881
|
||||
SYS_BUF_START equ 0x4010
|
||||
SYS_RAM_START equ 0x4000
|
||||
VAR_CONSOLE_BAUD equ 0x18
|
||||
VAR_CONSOLE_CONF equ 0x0F
|
||||
VDP_MEM equ 0x80
|
||||
VDP_REG equ 0x81
|
||||
_COMMAND_PROCESS_FOUND equ 0x1A0D
|
||||
_OP_CALL equ 0x1A8F
|
||||
_OP_IIC_ACK_ERR equ 0x1B9D
|
||||
_OP_IIC_ACK_ERR_str equ 0x1BA4
|
||||
_OP_IIC_IN_LOOP equ 0x1BEA
|
||||
_OP_IIC_IN_LOOP_TEXT equ 0x1BF7
|
||||
_OP_IIC_OUT_LOOP equ 0x1B6E
|
||||
_OP_IIC_OUT_SEND equ 0x1B8A
|
||||
_OP_RTIME_NN equ 0x1C0B
|
||||
_OP_RTIME_RD_CMD equ 0x1CC3
|
||||
_OP_SELDSK_INVALID equ 0x1E2C
|
||||
_OP_SELDSK_INVALID_STR equ 0x1E44
|
||||
_OP_SET_LOOP equ 0x1AD8
|
||||
_OP_STIME_INVALID equ 0x1D66
|
||||
_OP_STIME_PROMPT equ 0x1D7D
|
||||
_OP_STIME_PROMPT_ERR equ 0x1D95
|
||||
_OP_STIME_STR_DAY equ 0x1CC4
|
||||
_OP_STIME_STR_HOUR equ 0x1D15
|
||||
_OP_STIME_STR_MIN equ 0x1D30
|
||||
_OP_STIME_STR_MON equ 0x1CDF
|
||||
_OP_STIME_STR_SEC equ 0x1D4B
|
||||
_OP_STIME_STR_YEAR equ 0x1CFA
|
||||
_POST_CHECK_APU_FAILED equ 0x1EB5
|
||||
_POST_CHECK_IDE_FAILED equ 0x1EE7
|
||||
_POST_CHECK_PIO_FAILED equ 0x1E8A
|
||||
_POST_TEST_RTC_INVALID equ 0x1F28
|
||||
_POST_TEST_RTC_NOTFOUND equ 0x1F21
|
||||
_STR_NOT_FOUND equ 0x1A30
|
||||
_STR_NOT_IMPLEMENTED equ 0x1A1C
|
||||
_STR_SYNTAX equ 0x1A44
|
||||
_beep_pause_l1 equ 0xE17
|
||||
_compare_filename_loop equ 0x2363
|
||||
_compare_filename_nomatch equ 0x2371
|
||||
_fat_cd_navigate equ 0x2518
|
||||
_fat_cd_navigate_end equ 0x255E
|
||||
_fat_cd_navigate_errfile equ 0x2586
|
||||
_fat_cd_navigate_errfile_str equ 0x25B8
|
||||
_fat_cd_navigate_error equ 0x2570
|
||||
_fat_cd_navigate_error_str equ 0x258E
|
||||
_fat_cd_navigate_findsec equ 0x251D
|
||||
_fat_cd_navigate_findsec_skipslash equ 0x2549
|
||||
_fat_cd_navigate_goback_fl equ 0x24D4
|
||||
_fat_cd_navigate_inerror equ 0x257E
|
||||
_fat_cd_navigate_inerrorS equ 0x2578
|
||||
_fat_cd_navigate_inerrore equ 0x257F
|
||||
_fat_cd_navigate_inputerr_str equ 0x25A5
|
||||
_fat_cd_navigate_l2 equ 0x254F
|
||||
_fat_exec_notexec equ 0x267E
|
||||
_fat_exec_notfound equ 0x2665
|
||||
_fat_exec_read_done equ 0x264D
|
||||
_fat_exec_readloop1 equ 0x262F
|
||||
_fat_get_root_table_invalid equ 0x2153
|
||||
_fat_getfatsec_notroot equ 0x2192
|
||||
_fat_increment_32 equ 0x22E9
|
||||
_fat_lfs_loop equ 0x225F
|
||||
_fat_lfs_loop_compare_end equ 0x229B
|
||||
_fat_lfs_loop_compare_match equ 0x229F
|
||||
_fat_lfs_loop_compare_next_sector equ 0x2271
|
||||
_fat_math_add32 equ 0x22FD
|
||||
_fat_math_mul32 equ 0x232E
|
||||
_fat_math_mul32_l equ 0x2335
|
||||
_fat_math_mul32_noadd equ 0x2342
|
||||
_fat_math_sector_add_16 equ 0x22D5
|
||||
_fat_print_directory_dir equ 0x2453
|
||||
_fat_print_directory_loop equ 0x23E6
|
||||
_fat_print_directory_loop_break equ 0x24B2
|
||||
_fat_print_directory_loop_file equ 0x2402
|
||||
_fat_print_directory_loop_next equ 0x247E
|
||||
_fat_print_directory_loop_next_sector equ 0x2489
|
||||
_format_filename_fat16_clean equ 0x237A
|
||||
_format_filename_fat16_loop equ 0x2381
|
||||
_format_filename_fat16_loop_copy equ 0x2394
|
||||
_format_filename_fat16_loop_skip_8 equ 0x238B
|
||||
_ide_readsector_512_floop equ 0xE73
|
||||
_ideif_drv_sel_fail equ 0x15E8
|
||||
_ideif_drv_sel_fstr0 equ 0x16A5
|
||||
_ideif_drv_sel_pstr equ 0x169C
|
||||
_ideif_drv_sel_sstr0 equ 0x16B3
|
||||
_ideif_drv_sel_syn equ 0x16C0
|
||||
_ideif_init_drive_charloop equ 0x14AF
|
||||
_ideif_init_drive_found equ 0x1491
|
||||
_ideif_init_drive_loop equ 0x1479
|
||||
_ideif_init_drive_nodrv equ 0x148C
|
||||
_ideif_init_drive_prt_fnd equ 0x150D
|
||||
_ideif_init_drive_prt_l1 equ 0x14FB
|
||||
_ideif_init_drive_prt_ln equ 0x1505
|
||||
_ideif_prnt_devtable_hdr equ 0x1628
|
||||
_ideif_prnt_devtable_l1 equ 0x1389
|
||||
_ideif_prnt_devtable_l1_e2 equ 0x144F
|
||||
_ideif_prnt_devtable_l1_es equ 0x13CE
|
||||
_ideif_prnt_devtable_l1_ms equ 0x144C
|
||||
_ideif_prnt_devtable_l1_nxt equ 0x1396
|
||||
_ideif_prnt_devtable_l1_s00 equ 0x13BC
|
||||
_ideif_prnt_devtable_l1_s01 equ 0x13C1
|
||||
_ideif_prnt_devtable_l1_s02 equ 0x13C6
|
||||
_ideif_prnt_devtable_l1_sFF equ 0x13CB
|
||||
_ideif_prnt_devtable_l1_sel equ 0x1394
|
||||
_ideif_prnt_devtable_master equ 0x168C
|
||||
_ideif_prnt_devtable_s00 equ 0x1660
|
||||
_ideif_prnt_devtable_s01 equ 0x166B
|
||||
_ideif_prnt_devtable_s02 equ 0x1676
|
||||
_ideif_prnt_devtable_sFF equ 0x1681
|
||||
_ideif_prnt_devtable_slave equ 0x1694
|
||||
_read_bcd_invalid equ 0x1A3
|
||||
_shift4 equ 0x1E14
|
||||
beep equ 0xDFE
|
||||
beep_loop equ 0xE00
|
||||
beep_pause equ 0xE16
|
||||
compare_filename equ 0x235F
|
||||
dasm_00 equ 0xA03
|
||||
dasm_01 equ 0xCEF
|
||||
dasm_02 equ 0xA89
|
||||
dasm_03 equ 0xCC1
|
||||
dasm_08 equ 0xB06
|
||||
dasm_09 equ 0xC94
|
||||
dasm_0A equ 0xA6B
|
||||
dasm_0B equ 0xCD8
|
||||
dasm_10 equ 0xA4B
|
||||
dasm_12 equ 0xA94
|
||||
dasm_18 equ 0xA0E
|
||||
dasm_1A equ 0xA75
|
||||
dasm_20 equ 0xA28
|
||||
dasm_22 equ 0xD35
|
||||
dasm_27 equ 0xACE
|
||||
dasm_28 equ 0xA21
|
||||
dasm_2A equ 0xD06
|
||||
dasm_2F equ 0xAD2
|
||||
dasm_30 equ 0xA19
|
||||
dasm_32 equ 0xA9F
|
||||
dasm_37 equ 0xADE
|
||||
dasm_38 equ 0xA12
|
||||
dasm_3A equ 0xA7F
|
||||
dasm_3F equ 0xADA
|
||||
dasm_76 equ 0xAE2
|
||||
dasm_80C6 equ 0xB5F
|
||||
dasm_BE equ 0xAFC
|
||||
dasm_C3 equ 0xA07
|
||||
dasm_C88E equ 0xB85
|
||||
dasm_C9 equ 0xA57
|
||||
dasm_CD equ 0xA51
|
||||
dasm_D9 equ 0xB13
|
||||
dasm_DD equ 0xA39
|
||||
dasm_DD_01 equ 0xCF6
|
||||
dasm_DD_09 equ 0xCAF
|
||||
dasm_DD_22 equ 0xD4B
|
||||
dasm_DD_23 equ 0xCC6
|
||||
dasm_DD_2A equ 0xD1D
|
||||
dasm_DD_2B equ 0xCDD
|
||||
dasm_DD_34 equ 0xC5F
|
||||
dasm_DD_35 equ 0xC7C
|
||||
dasm_DD_86 equ 0xB67
|
||||
dasm_DD_8E equ 0xB8D
|
||||
dasm_DD_96 equ 0xBB0
|
||||
dasm_DD_9E equ 0xBD0
|
||||
dasm_DD_A6 equ 0xBF1
|
||||
dasm_DD_AE equ 0xC28
|
||||
dasm_DD_B6 equ 0xC0D
|
||||
dasm_DD_BE equ 0xC44
|
||||
dasm_DD_E1 equ 0xD9D
|
||||
dasm_DD_E3 equ 0xB23
|
||||
dasm_DD_E5 equ 0xD87
|
||||
dasm_DD_F9 equ 0xD6D
|
||||
dasm_E1 equ 0xD97
|
||||
dasm_E3 equ 0xB17
|
||||
dasm_E5 equ 0xD81
|
||||
dasm_E9 equ 0xA30
|
||||
dasm_ED_42 equ 0xCA6
|
||||
dasm_ED_43 equ 0xD41
|
||||
dasm_ED_44 equ 0xAD6
|
||||
dasm_ED_45 equ 0xA61
|
||||
dasm_ED_46 equ 0xAED
|
||||
dasm_ED_4A equ 0xC9D
|
||||
dasm_ED_4B equ 0xD12
|
||||
dasm_ED_4D equ 0xA5C
|
||||
dasm_ED_56 equ 0xAF2
|
||||
dasm_ED_5E equ 0xAF7
|
||||
dasm_ED_A0 equ 0xB3B
|
||||
dasm_ED_A1 equ 0xB4D
|
||||
dasm_ED_A8 equ 0xB44
|
||||
dasm_ED_A9 equ 0xB56
|
||||
dasm_ED_B0 equ 0xB3F
|
||||
dasm_ED_B1 equ 0xB51
|
||||
dasm_ED_B8 equ 0xB48
|
||||
dasm_ED_B9 equ 0xB5A
|
||||
dasm_F3 equ 0xAE7
|
||||
dasm_F9 equ 0xD63
|
||||
dasm_FB equ 0xAEA
|
||||
dasm_FD equ 0xA42
|
||||
dasm_FD_01 equ 0xCFE
|
||||
dasm_FD_09 equ 0xCB8
|
||||
dasm_FD_22 equ 0xD57
|
||||
dasm_FD_23 equ 0xCCF
|
||||
dasm_FD_2A equ 0xD29
|
||||
dasm_FD_2B equ 0xCE6
|
||||
dasm_FD_34 equ 0xC6B
|
||||
dasm_FD_35 equ 0xC88
|
||||
dasm_FD_86 equ 0xB76
|
||||
dasm_FD_8E equ 0xB9C
|
||||
dasm_FD_96 equ 0xBBC
|
||||
dasm_FD_9E equ 0xBDE
|
||||
dasm_FD_A6 equ 0xBFD
|
||||
dasm_FD_AE equ 0xC34
|
||||
dasm_FD_B6 equ 0xC18
|
||||
dasm_FD_BE equ 0xC4F
|
||||
dasm_FD_E1 equ 0xDA5
|
||||
dasm_FD_E3 equ 0xB2F
|
||||
dasm_FD_E5 equ 0xD8F
|
||||
dasm_FD_F9 equ 0xD77
|
||||
dasm_FF equ 0xA66
|
||||
dasm_UU equ 0xDAD
|
||||
dasm_UW equ 0xDB1
|
||||
dasm__AND equ 0xBEC
|
||||
dasm__CP equ 0xC40
|
||||
dasm__DEC equ 0xC77
|
||||
dasm__ED_47 equ 0xABE
|
||||
dasm__ED_4F equ 0xAC6
|
||||
dasm__ED_57 equ 0xAAE
|
||||
dasm__ED_5F equ 0xAB6
|
||||
dasm__INC equ 0xC5A
|
||||
dasm__LD equ 0xAAA
|
||||
dasm__OR equ 0xC09
|
||||
dasm__SBC equ 0xBC8
|
||||
dasm__SUB equ 0xBAB
|
||||
dasm__XOR equ 0xC23
|
||||
dasm_opcode_table equ 0x5AB
|
||||
dasm_print16hex_addr equ 0x3D8
|
||||
dasm_print8hex equ 0x3F0
|
||||
dasm_printFlags_table equ 0xDB6
|
||||
dasm_printRegister8_table equ 0xDC6
|
||||
dasm_printRegister8_table_HL equ 0xDE6
|
||||
dasm_printRegisterIX_table equ 0xDCE
|
||||
dasm_printRegisterIY_table equ 0xDD6
|
||||
dasm_printRegisterSP_table equ 0xDDE
|
||||
disassemble equ 0x29C
|
||||
disassemble_continue equ 0x382
|
||||
disassemble_err equ 0x372
|
||||
disassemble_next equ 0x2A0
|
||||
disassemble_print_opcode_params_end equ 0x36F
|
||||
disassemble_print_opcode_params_loop equ 0x31B
|
||||
disassemble_print_opcode_raw equ 0x2DD
|
||||
disassemble_print_opcode_raw_fill equ 0x2F1
|
||||
disassemble_table_first_match equ 0x3B4
|
||||
disassemble_table_found equ 0x3CE
|
||||
disassemble_table_notfound equ 0x3D2
|
||||
disassemble_table_seek equ 0x390
|
||||
disassemble_table_seek_loop equ 0x394
|
||||
dump_pretty equ 0x1826
|
||||
dump_pretty_ascii equ 0x1850
|
||||
dump_pretty_ascii_cont equ 0x186E
|
||||
dump_pretty_ascii_loop equ 0x1858
|
||||
dump_pretty_ascii_none equ 0x1869
|
||||
dump_pretty_col equ 0x1843
|
||||
dump_pretty_end equ 0x1880
|
||||
dump_pretty_nextrow equ 0x1874
|
||||
dump_pretty_row equ 0x182E
|
||||
endPrint equ 0x1F4
|
||||
fat_cd_single equ 0x24B4
|
||||
fat_copy_lba_pointer equ 0x2356
|
||||
fat_exec equ 0x25CF
|
||||
fat_get_root_table equ 0x2086
|
||||
fat_getfatsec equ 0x217B
|
||||
fat_openfile equ 0x2230
|
||||
fat_openfile_noprepare equ 0x2238
|
||||
fat_print_directory equ 0x239B
|
||||
fat_readfilesec equ 0x2203
|
||||
fat_reset_pointer equ 0x2347
|
||||
format_filename_fat16 equ 0x2375
|
||||
ide_printerror equ 0xEAA
|
||||
ide_readsector_512_fast equ 0xE5F
|
||||
ide_readsector_timeout equ 0xE94
|
||||
ide_regread_8 equ 0xE49
|
||||
ide_regwrite_8 equ 0xE2F
|
||||
ide_reset equ 0xE23
|
||||
ide_writesector_256 equ 0xEA9
|
||||
ideif_drv_sel equ 0x15B0
|
||||
ideif_get_drv_pointer equ 0x1550
|
||||
ideif_init_all equ 0x1564
|
||||
ideif_init_devtable equ 0x135D
|
||||
ideif_init_drive equ 0x1470
|
||||
ideif_prnt_devtable equ 0x137B
|
||||
iic_init equ 0x1732
|
||||
iic_read_ack equ 0x1779
|
||||
iic_receive_buffer equ 0x1703
|
||||
iic_receive_buffer_done equ 0x1726
|
||||
iic_receive_buffer_err equ 0x172C
|
||||
iic_receive_buffer_loop equ 0x1714
|
||||
iic_receive_byte equ 0x17FF
|
||||
iic_receive_byte_loop equ 0x180C
|
||||
iic_send_ack equ 0x179F
|
||||
iic_send_buffer equ 0x16D9
|
||||
iic_send_buffer_done equ 0x16F7
|
||||
iic_send_buffer_err equ 0x16FD
|
||||
iic_send_buffer_loop equ 0x16E9
|
||||
iic_send_byte equ 0x17D9
|
||||
iic_send_byte_loop equ 0x17E5
|
||||
iic_send_ebit equ 0x1758
|
||||
iic_send_nack equ 0x17BC
|
||||
iic_send_sbit equ 0x173F
|
||||
interrupt_vectors equ 0x4000
|
||||
mon_var_template equ 0x44
|
||||
mon_var_template_end equ 0x50F
|
||||
nxtILC equ 0x1E9
|
||||
param_01 equ 0x3FE
|
||||
param_02 equ 0x425
|
||||
param_03 equ 0x442
|
||||
param_03_done equ 0x47A
|
||||
param_03_neg equ 0x463
|
||||
param_04 equ 0x47E
|
||||
param_04_i equ 0x48E
|
||||
param_05 equ 0x494
|
||||
param_06 equ 0x4A1
|
||||
param_07 equ 0x4BB
|
||||
param_08 equ 0x4C8
|
||||
param_09 equ 0x4DD
|
||||
param_09_0A equ 0x4E3
|
||||
param_0A equ 0x4D4
|
||||
param_10 equ 0x4F2
|
||||
param_11 equ 0x502
|
||||
param_11_12 equ 0x511
|
||||
param_11_12_all equ 0x531
|
||||
param_11_12_def equ 0x524
|
||||
param_11_12_ix equ 0x529
|
||||
param_11_12_iy equ 0x52E
|
||||
param_12 equ 0x50A
|
||||
param_13 equ 0x542
|
||||
param_80 equ 0x561
|
||||
param_80_seek equ 0x568
|
||||
param_81 equ 0x558
|
||||
param_comma equ 0x59C
|
||||
param_printRegister equ 0x577
|
||||
param_printRegisterA equ 0x595
|
||||
param_printRegisterHL equ 0x58D
|
||||
print_16_hex equ 0x1BF
|
||||
print_32_hex equ 0x1A6
|
||||
print_a_hex equ 0x142
|
||||
print_bcd equ 0x154
|
||||
print_char equ 0x114
|
||||
print_clear equ 0x125
|
||||
print_newLine equ 0x12C
|
||||
print_reg equ 0x1F9
|
||||
print_str equ 0x11C
|
||||
print_str_fixed equ 0x18C0
|
||||
print_wait_out equ 0x137
|
||||
read_bcd equ 0x18D
|
||||
read_char equ 0x16C
|
||||
read_char_raw equ 0x15A
|
||||
read_in_sts equ 0x183
|
||||
read_lba_sector equ 0x1577
|
||||
str_dev_done equ 0x1620
|
||||
str_dev_waitready equ 0x1608
|
||||
str_error_start equ 0xEDF
|
||||
str_error_start1 equ 0xEFC
|
||||
str_error_start2 equ 0xF05
|
||||
str_error_time equ 0xF0E
|
||||
str_post_apu equ 0x1F80
|
||||
str_post_ide_30 equ 0x1F2F
|
||||
str_post_ide_40 equ 0x1F4A
|
||||
str_post_nd equ 0x1FB6
|
||||
str_post_ok equ 0x1FEE
|
||||
str_post_pio equ 0x1F65
|
||||
str_post_rtc equ 0x1F9B
|
||||
str_post_rtc_iv equ 0x1FC4
|
||||
var_apu_present equ 0x410A
|
||||
var_buffer_len equ 0x4100
|
||||
var_bytes_count equ 0x411A
|
||||
var_curserchar equ 0x4106
|
||||
var_curserlastaddr equ 0x4107
|
||||
var_curseron equ 0x4105
|
||||
var_curserstate equ 0x4104
|
||||
var_curserx equ 0x4102
|
||||
var_cursery equ 0x4103
|
||||
var_dir equ 0x412B
|
||||
var_idebuffer equ 0x41CB
|
||||
var_input equ 0x417B
|
||||
var_last_char equ 0x4101
|
||||
var_opcode equ 0x4114
|
||||
var_opcode_length equ 0x4116
|
||||
var_opcode_pcount equ 0x4119
|
||||
var_opcode_start equ 0x4110
|
||||
var_opcode_string equ 0x4117
|
||||
var_opcode_table equ 0x4112
|
||||
var_opcode_x equ 0x4115
|
||||
var_pio_present equ 0x4109
|
||||
var_ps2mem equ 0x411B
|
||||
var_scratch equ 0x410B
|
||||
@@ -7,6 +7,7 @@
|
||||
beep:
|
||||
push AF
|
||||
push DE
|
||||
di
|
||||
beep_loop:
|
||||
LD A,0x08
|
||||
OUT (CS_PIO_AD), A
|
||||
@@ -20,6 +21,7 @@ beep_loop:
|
||||
jr NZ, beep_loop
|
||||
pop de
|
||||
pop af
|
||||
ei
|
||||
ret
|
||||
|
||||
beep_pause:
|
||||
|
||||
@@ -23,6 +23,10 @@ COMMAND_LUT:
|
||||
db "?", 0, [OP_DUMP], [OP_DUMP]>>8 ;Print memory
|
||||
db 0xFF ;End of Table
|
||||
|
||||
COMMAND_ABORT:
|
||||
;cleanup stack
|
||||
ld sp, STACK_RAM_TOP
|
||||
; return to prompt
|
||||
COMMAND:
|
||||
call print_newLine
|
||||
ld hl,[var_dir]
|
||||
@@ -148,6 +152,8 @@ COMMAND_PROCESS_FOUND:
|
||||
_COMMAND_PROCESS_FOUND
|
||||
JP (HL)
|
||||
|
||||
|
||||
|
||||
NOT_IMPLEMENTED:
|
||||
LD HL,[_STR_NOT_IMPLEMENTED]
|
||||
CALL print_str
|
||||
|
||||
@@ -6,51 +6,19 @@
|
||||
;9600 -> 12 / 00110000
|
||||
;
|
||||
|
||||
|
||||
CONSOLE_INIT:
|
||||
CONSOLE_INIT_CTC:
|
||||
;LD A,00001111b ; Set /16 Divider, CPU Trigger, Time COnstant Follows
|
||||
LD A,01001111b ; External Trigger, Time COnstant Follows
|
||||
OUT (CS_CTC_0),A
|
||||
IN A,(CS_DIP) ; Read BAUD from DIP-Switches
|
||||
;LD A,39
|
||||
OUT (CS_CTC_0),A
|
||||
CONSOLE_INIT_SIO:
|
||||
LD A,00110000b ;write into WR0: error reset, select WR0
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,018h ;write into WR0: channel reset
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,004h ;write into WR0: select WR4
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,01000100b ;write into WR4: clkx16,1 stop bit, no parity
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,005h ;write into WR0: select WR5
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,11101000b ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,01h ;write into WR0: select WR1
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,00000100b ;no interrupt in CH B, special RX condition affects vect
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,02h ;write into WR0: select WR2
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,0h ;write into WR2: cmd line int vect (see int vec table)
|
||||
;bits D3,D2,D1 are changed according to RX condition
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,003h ;write into WR0: select WR3
|
||||
OUT (CS_SIO_A_C),A
|
||||
LD a,0C1h ;RX 8bit, auto enable off, RX on
|
||||
OUT (CS_SIO_A_C),A
|
||||
;Channel A RX active
|
||||
RET
|
||||
call con_rb_init; initialize ring buffer
|
||||
call consio_init_a
|
||||
ret
|
||||
|
||||
|
||||
; A contains char
|
||||
; Destroys A
|
||||
print_char:
|
||||
push af
|
||||
out (CS_SIO_A_D),a
|
||||
call print_wait_out
|
||||
call consio_tx_a
|
||||
pop af
|
||||
;call print_char
|
||||
ret
|
||||
; HL contains pointer to string
|
||||
; Destroy A, HL
|
||||
@@ -105,7 +73,7 @@ print_bcd:
|
||||
call print_char
|
||||
ret
|
||||
|
||||
read_char:
|
||||
read_char_raw:
|
||||
call A_RTS_ON
|
||||
nop
|
||||
xor a ; a = 0
|
||||
@@ -117,14 +85,8 @@ read_char:
|
||||
in a, (CS_SIO_A_D) ; read char if avail
|
||||
ret ; return
|
||||
|
||||
|
||||
read_in_sts:
|
||||
out (CS_SIO_A_C), a ; select reg 0
|
||||
in a, (CS_SIO_A_C) ; read reg 0
|
||||
and 1 ; mask D0 (recieve char available)
|
||||
ret z
|
||||
ld a, 0xFF
|
||||
ret
|
||||
read_char:
|
||||
jp consio_rx_a
|
||||
|
||||
read_bcd;
|
||||
call read_char
|
||||
@@ -158,6 +120,59 @@ print_16_hex:
|
||||
call print_a_hex
|
||||
ret
|
||||
|
||||
;input ringbuffer
|
||||
;initialize ringbuffer
|
||||
con_rb_init:
|
||||
xor a
|
||||
ld (var_buffer_conin_in),a
|
||||
ld (var_buffer_conin_out),a
|
||||
ld (var_buffer_conin_sts),a
|
||||
ret
|
||||
|
||||
con_rb_read:
|
||||
push hl
|
||||
push de
|
||||
ld a,(var_buffer_conin_in)
|
||||
ld b,a
|
||||
ld a,(var_buffer_conin_out)
|
||||
cp b ;check if equal
|
||||
jp z, con_rb_read_empty
|
||||
;if not equal, buffer contians data
|
||||
ld h, high [var_buffer_conin_data] ;load high byte for pointer
|
||||
ld l, a
|
||||
ld a,(hl)
|
||||
push af
|
||||
;move pointer
|
||||
ld a,(var_buffer_conin_out)
|
||||
inc a
|
||||
ld (var_buffer_conin_out),a
|
||||
pop af
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
con_rb_read_empty:
|
||||
ld a,1
|
||||
ld (var_buffer_conin_sts),a
|
||||
xor a
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
|
||||
con_rb_write:
|
||||
push hl
|
||||
push af
|
||||
ld h, high [var_buffer_conin_data] ;load high byte for pointer
|
||||
ld a,(var_buffer_conin_in)
|
||||
ld l,a
|
||||
pop af
|
||||
ld (hl),a
|
||||
ld a,(var_buffer_conin_in)
|
||||
inc a
|
||||
ld (var_buffer_conin_in),a
|
||||
;TODO: check for overflow
|
||||
pop hl
|
||||
ret
|
||||
|
||||
|
||||
;MSG_CRSR_0:
|
||||
; db 0x1B, "[?25h",0
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
;================================================================
|
||||
IDE_CMD_IDENT .EQU 0xEC ;Identify drive.
|
||||
IDE_CMD_READSEC .EQU 0x20 ;Read sectors.
|
||||
IDE_CMD_WRITESEC .EQU 0x30 ;Write sectors.
|
||||
|
||||
;================================================================
|
||||
; IDE Variables
|
||||
|
||||
85
OperatingSystem/monitor_v2/include/kdrv_int.s
Normal file
85
OperatingSystem/monitor_v2/include/kdrv_int.s
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
INT_VEC_TABLE .equ [interrupt_vectors]
|
||||
INT_PIO_ADDRD .equ CS_PIO_AD
|
||||
INT_PIO_ADDRC .equ CS_PIO_AC
|
||||
|
||||
;initialize interrupt controller
|
||||
intctrl_init:
|
||||
;disable interrupt (just to make sure)
|
||||
di
|
||||
;setup interrupt table
|
||||
ld a,high [INT_VEC_TABLE]
|
||||
ld i,a
|
||||
|
||||
;setup PIO
|
||||
ld a, 10000011b ;enable interrupt
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 00000010b ;set interrupt vector
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 11001111b ;setup as controll port
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 11110111b ;set all as inputs
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 10010111b ;enable interrupt; logic or, mask follows
|
||||
out (INT_PIO_ADDRC), a
|
||||
ld a, 11000000b ;set interrupt mask
|
||||
out (INT_PIO_ADDRC), a
|
||||
|
||||
; set port
|
||||
xor a
|
||||
out (INT_PIO_ADDRD), a
|
||||
|
||||
;fill table
|
||||
ld hl,[INT_VEC_TABLE]
|
||||
ld b,128
|
||||
_intctrl_init_fill_loop:
|
||||
ld a, low [_int_invalid_int]
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ld a, high [_int_invalid_int]
|
||||
ld (hl),a
|
||||
inc hl
|
||||
djnz _intctrl_init_fill_loop
|
||||
|
||||
;set int vector for PIO
|
||||
ld hl, [_isr_pio]
|
||||
ld (INT_VEC_TABLE + 2), hl
|
||||
|
||||
;enable interrupts
|
||||
im 2
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; setup interrupt for PIO pin
|
||||
; inputs: a (interrupt pin)
|
||||
; hl (jump addr)
|
||||
;------------------------------------------------------------------------------
|
||||
initctrl_int_register:
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; removes interrupt for PIO pin
|
||||
; inputs: a (interrupt pin)
|
||||
;------------------------------------------------------------------------------
|
||||
initctrl_int_abandon:
|
||||
|
||||
; jumps to isr. MUST be exited with RETI opcode!
|
||||
_isr_pio:
|
||||
di
|
||||
ld hl, [_str_pio_interrupt]
|
||||
call print_str
|
||||
;get int from pio
|
||||
in a,(INT_PIO_ADDRD)
|
||||
call print_a_hex
|
||||
|
||||
_int_invalid_int:
|
||||
di
|
||||
ld hl, [_str_invalid_interrupt]
|
||||
call print_str
|
||||
ei
|
||||
reti
|
||||
|
||||
_str_invalid_interrupt:
|
||||
db 10,13,"[KERNEL] INT: Invalid interrupt call! Exiting ISR.",10,13,0
|
||||
|
||||
_str_pio_interrupt:
|
||||
db 10,13,"[KERNEL] INT: (DEBUG) Interrupt call from PIO.",10,13,0
|
||||
124
OperatingSystem/monitor_v2/include/kdrv_sio.s
Normal file
124
OperatingSystem/monitor_v2/include/kdrv_sio.s
Normal file
@@ -0,0 +1,124 @@
|
||||
;----------------------------------------------------------------
|
||||
;BIOS Driver for Serial Console
|
||||
;by Dennis Gunia (07/2024)
|
||||
;
|
||||
;----------------------------------------------------------------
|
||||
|
||||
;================================================================
|
||||
; I/O access functions
|
||||
;================================================================
|
||||
;initialize SIO Port A
|
||||
|
||||
consio_init_a:
|
||||
call consio_init_ctc_a
|
||||
call consio_init_a_sio
|
||||
;call consio_init_a_int
|
||||
ret
|
||||
|
||||
consio_init_a_sio:
|
||||
ld A, 00110000b ;write into WR0: error reset, select WR0
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 018h ;write into WR0: channel reset
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 004h ;write into WR0: select WR4
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 01000100b ;write into WR4: clkx16,1 stop bit, no parity
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 005h ;write into WR0: select WR5
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 11101000b ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 01h ;write into WR0: select WR1
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 00000100b ;no interrupt in CH B, special RX condition affects vect
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 02h ;write into WR0: select WR2
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 0h ;write into WR2: cmd line int vect (see int vec table)
|
||||
;bits D3,D2,D1 are changed according to RX condition
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 003h ;write into WR0: select WR3
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 0C1h ;RX 8bit, auto enable off, RX on
|
||||
out (CS_SIO_A_C), a
|
||||
ret
|
||||
|
||||
consio_init_a_int:
|
||||
;setup SIO interrupt vector
|
||||
ld a, 2 ;write WR2
|
||||
out (CS_SIO_B_C), a
|
||||
ld a, 00000100b ;write Vector
|
||||
out (CS_SIO_B_C), a
|
||||
;setup SIO
|
||||
ld a, 1 ;write WR1
|
||||
out (CS_SIO_A_C), a
|
||||
ld a, 00011000b ;enable INT on all RX
|
||||
out (CS_SIO_A_C), a
|
||||
;set ISR addr
|
||||
ld hl, [consio_isr]
|
||||
ld (INT_VEC_TABLE + 4), hl
|
||||
ret
|
||||
|
||||
consio_init_ctc_a:
|
||||
ld a, 01001111b; External Trigger, Time COnstant Follows
|
||||
out (CS_CTC_0),a
|
||||
in a, (CS_DIP) ; Read BAUD from DIP-Switches
|
||||
out (CS_CTC_0),a
|
||||
ret
|
||||
|
||||
|
||||
consio_tx_a:
|
||||
out (CS_SIO_A_D),a
|
||||
consio_tx_a_waitout:
|
||||
; check for TX buffer empty
|
||||
sub a ;clear a, write into WR0: select RR0
|
||||
inc a ;select RR1
|
||||
out (CS_SIO_A_C),A
|
||||
in A,(CS_SIO_A_C) ;read RRx
|
||||
bit 0,A
|
||||
jr z,consio_tx_a_waitout
|
||||
ret
|
||||
|
||||
consio_rx_a:
|
||||
call consio_rx_rts_a_on
|
||||
xor a ; a = 0
|
||||
out (CS_SIO_A_C), a ; select reg 0
|
||||
in a, (CS_SIO_A_C) ; read reg 0
|
||||
and 1 ; mask D0 (recieve char available)
|
||||
call A_RTS_OFF
|
||||
ret Z ; return 0 if no char
|
||||
in a, (CS_SIO_A_D) ; read char if avail
|
||||
ret ; return
|
||||
|
||||
consio_rx_rts_a_on:
|
||||
ld a,005h ;write into WR0: select WR5
|
||||
out (CS_SIO_A_C),A
|
||||
ld a,0EAh ;DTR active, TX 8bit, BREAK off, TX on, RTS active
|
||||
out (CS_SIO_A_C),A
|
||||
ret
|
||||
|
||||
consio_rx_rts_a_off:
|
||||
ld a,005h ;write into WR0: select WR5
|
||||
out (CS_SIO_A_C),A
|
||||
ld a,068h ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
|
||||
out (CS_SIO_A_C),A
|
||||
ret
|
||||
|
||||
consio_rx_a_sts:
|
||||
out (CS_SIO_A_C), a ; select reg 0
|
||||
in a, (CS_SIO_A_C) ; read reg 0
|
||||
and 1 ; mask D0 (recieve char available)
|
||||
ret z
|
||||
ld a, 0xFF
|
||||
ret
|
||||
|
||||
|
||||
;Interrupt service routine
|
||||
consio_isr:
|
||||
di
|
||||
ld a, 00111000b ;RET fro INT
|
||||
out (CS_SIO_B_C), a ;read data
|
||||
in a, (CS_SIO_A_D)
|
||||
call con_rb_write ;write to ringbuffer
|
||||
ei
|
||||
reti
|
||||
@@ -2,7 +2,7 @@
|
||||
; BIOS Routines entry points
|
||||
; Do not move in memory!!!!
|
||||
;-------------------------------------
|
||||
.org 0x0050
|
||||
org 0x0050
|
||||
B_BEEP:
|
||||
jp beep
|
||||
|
||||
|
||||
@@ -58,10 +58,23 @@ INT_VEC:
|
||||
;================================================================
|
||||
; Memory layout
|
||||
;================================================================
|
||||
|
||||
mon_var_template_sof .EQU mon_var_template + 1024
|
||||
|
||||
mon_var_template:
|
||||
phase SYS_RAM_START
|
||||
interrupt_vectors:
|
||||
defs 256
|
||||
var_buffer_conin_data: ;contains console input
|
||||
defs 256
|
||||
var_buffer_conin_in: ;pointer to write position of buffer
|
||||
defb 0
|
||||
var_buffer_conin_out: ;pointer to read position of buffer
|
||||
defb 0
|
||||
var_buffer_conin_sts:
|
||||
defb 0
|
||||
var_buffer_conout:
|
||||
defb 0
|
||||
var_buffer_len:
|
||||
defb 0
|
||||
var_last_char:
|
||||
@@ -100,8 +113,7 @@ mon_var_template_end:
|
||||
;================================================================
|
||||
; Start of monitor
|
||||
;================================================================
|
||||
org 0x0050
|
||||
.include "ref.s" ;static bios calls for programs
|
||||
.include "ref.s" ;static bios calls for programs
|
||||
|
||||
BOOT_PHASE0: ;Setup Hardware
|
||||
;Setup Stack-Pointer
|
||||
@@ -122,15 +134,23 @@ BOOT_PHASE0: ;Setup Hardware
|
||||
ld a, " "
|
||||
ld (var_curserchar),a
|
||||
|
||||
;setup interrupt table
|
||||
ld a,[interrupt_vectors]>>8
|
||||
ld i,a
|
||||
|
||||
;Enable interupts
|
||||
call intctrl_init
|
||||
;Initialize Console (Serial-Port)
|
||||
call CONSOLE_INIT
|
||||
call CONSOLE_INIT
|
||||
|
||||
|
||||
;clear memory area
|
||||
ld hl, [mon_var_template_sof]
|
||||
ld bc, [mon_var_template_end-mon_var_template_sof]
|
||||
ld de, [mon_var_template_sof+1]
|
||||
xor a
|
||||
ld (hl),a
|
||||
ldir
|
||||
|
||||
jp BOOT_PHASE2 ;skip rest of table init
|
||||
BOOT_PHASE1: ;Copy default values to RAM
|
||||
ld hl,mon_var_template
|
||||
ld hl,mon_var_template + 1024
|
||||
ld de,mon_var_template_end
|
||||
ld bc,SYS_RAM_START
|
||||
BOOT_PHASE1_LOOP:
|
||||
@@ -165,6 +185,8 @@ BOOT_PHASE2: ;Hardware initialized.
|
||||
xor a ;set dir to empty
|
||||
ld (var_dir),a
|
||||
ld (var_dir+1),a
|
||||
;enable interrupts
|
||||
ei
|
||||
; Start commandline
|
||||
jp COMMAND
|
||||
|
||||
@@ -183,6 +205,8 @@ BOOT_PHASE2: ;Hardware initialized.
|
||||
.include "kdrv_ide8255.s" ;include ide interface driver.
|
||||
.include "kdrv_ideif.s" ;include ide driver.
|
||||
.include "kdrv_siic.s"
|
||||
.include "kdrv_int.s"
|
||||
.include "kdrv_sio.s"
|
||||
.include "prettydump.s"
|
||||
.include "command.s"
|
||||
.include "cmd_mem.s"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,270 +0,0 @@
|
||||
!0000 C3 50 00
|
||||
!0008 C3 B6 0E
|
||||
!0010 C3 BA 0E
|
||||
!0018 C3 C6 0E
|
||||
!0044 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
!0054 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
!0064 00 00 00 00 00 00 00 00 00 00
|
||||
!0050 31 FF FF AF 32 04 40 32 05 40 3E 20 32 06 40 CD
|
||||
!0060 70 02 21 44 00 11 2A 40 01 00 40 7E 02 23 03 E5
|
||||
!0070 ED 52 E1 C2 6B 00 CD BC 02 21 C9 0E CD B1 02 CD
|
||||
!0080 8B 00 76 47 7A D3 40 78 D3 41 C9 CD C3 02 3E 3E
|
||||
!0090 CD A9 02 AF 32 00 40 CD EA 02 CA 97 00 F5 F1 FE
|
||||
!00A0 0D CA EE 00 FE 0A CA 97 00 FE 08 CA C8 00 F5 21
|
||||
!00B0 29 40 16 00 3A 00 40 5F 19 3C 32 00 40 F1 77 CD
|
||||
!00C0 A9 02 23 AF 77 C3 97 00 3A 00 40 A7 CA 97 00 3D
|
||||
!00D0 32 00 40 5F 16 00 21 29 40 19 AF 77 3E 08 CD A9
|
||||
!00E0 02 3E 20 CD A9 02 3E 08 CD A9 02 C3 97 00 3A 29
|
||||
!00F0 40 FE 24 CA 21 01 FE 3F CA 40 01 FE 21 CA AA 01
|
||||
!0100 FE 69 CA 0F 02 FE 6F CA E6 01 FE 64 CA 2B 02 FE
|
||||
!0110 78 CA 15 0F CD C3 02 21 F4 0E CD B1 02 C3 8B 00
|
||||
!0120 C9 AF 32 29 40 21 2A 40 CD 16 03 47 7B A7 C2 64
|
||||
!0130 02 21 2C 40 CD 16 03 4F 7B A7 C2 64 02 60 69 E9
|
||||
!0140 CD C3 02 21 2A 40 CD 16 03 47 7B A7 C2 64 02 21
|
||||
!0150 2C 40 CD 16 03 4F 7B A7 C2 64 02 3A 2E 40 FE 20
|
||||
!0160 C2 64 02 21 2F 40 CD 16 03 F5 7B A7 C2 64 02 21
|
||||
!0170 F9 0E CD B1 02 F1 60 69 47 CD C3 02 7C CD D9 02
|
||||
!0180 7D CD D9 02 3E 20 CD A9 02 0E 08 7E CD D9 02 23
|
||||
!0190 05 0D 78 A7 CA A4 01 79 A7 CA 79 01 3E 20 CD A9
|
||||
!01A0 02 C3 8B 01 CD C3 02 C3 8B 00 21 2A 40 CD 16 03
|
||||
!01B0 47 7B A7 C2 64 02 21 2C 40 CD 16 03 4F 7B A7 C2
|
||||
!01C0 64 02 21 2E 40 7E FE 00 CA E0 01 FE 20 C2 64 02
|
||||
!01D0 23 CD 16 03 02 7B A7 C2 64 02 03 23 23 C3 C5 01
|
||||
!01E0 CD C3 02 C3 8B 00 21 2A 40 CD 16 03 4F 7B A7 C2
|
||||
!01F0 64 02 3A 2C 40 FE 20 C2 64 02 21 2D 40 CD 16 03
|
||||
!0200 F5 7B A7 C2 64 02 F1 ED 79 CD C3 02 C3 8B 00 21
|
||||
!0210 2A 40 CD 16 03 4F 7B A7 C2 64 02 ED 78 F5 CD C3
|
||||
!0220 02 F1 CD D9 02 CD C3 02 C3 8B 00 CD C3 02 21 2A
|
||||
!0230 40 CD 16 03 47 7B A7 C2 64 02 21 2C 40 CD 16 03
|
||||
!0240 4F 7B A7 C2 64 02 3A 2E 40 FE 20 C2 64 02 21 2F
|
||||
!0250 40 CD 16 03 F5 7B A7 C2 64 02 60 69 F1 47 CD 67
|
||||
!0260 03 C3 8B 00 CD C3 02 21 EF 0E CD B1 02 C3 8B 00
|
||||
!0270 3E 4F D3 04 DB 01 D3 04 3E 30 D3 09 3E 18 D3 09
|
||||
!0280 3E 04 D3 09 3E 44 D3 09 3E 05 D3 09 3E E8 D3 09
|
||||
!0290 3E 01 D3 09 3E 04 D3 09 3E 02 D3 09 3E 00 D3 09
|
||||
!02A0 3E 03 D3 09 3E C1 D3 09 C9 F5 D3 08 CD CE 02 F1
|
||||
!02B0 C9 7E B7 28 06 CD A9 02 23 18 F6 C9 21 FC 02 CD
|
||||
!02C0 B1 02 C9 3E 0A CD A9 02 3E 0D CD A9 02 C9 97 3C
|
||||
!02D0 D3 09 DB 09 CB 47 28 F6 C9 F5 C5 D5 CD 4D 03 78
|
||||
!02E0 CD A9 02 79 CD A9 02 D1 C1 F1 CD 0D 03 00 AF D3
|
||||
!02F0 09 DB 09 E6 01 CD 04 03 C8 DB 08 C9 1B 5B 32 4A
|
||||
!0300 1B 5B 48 00 3E 05 D3 09 3E 68 D3 09 C9 3E 05 D3
|
||||
!0310 09 3E EA D3 09 C9 E5 7E CD 36 03 38 15 CB 27 CB
|
||||
!0320 27 CB 27 CB 27 57 23 7E CD 36 03 38 05 B2 E1 1E
|
||||
!0330 00 C9 1E FF E1 C9 D6 30 EA 4B 03 FE 0A 38 05 D6
|
||||
!0340 07 EA 4B 03 FE 10 30 03 E6 0F C9 37 C9 F5 1F 1F
|
||||
!0350 1F 1F CD 5C 03 47 F1 CD 5C 03 4F C9 E6 0F C6 30
|
||||
!0360 FE 3A D8 C6 07 C9 C9 78 32 1A 41 22 10 41 7E 32
|
||||
!0370 14 41 23 7E 32 15 41 2B CD 5B 04 78 B1 CA 3D 04
|
||||
!0380 ED 43 12 41 03 03 03 03 0A 32 16 41 03 0A 5F 03
|
||||
!0390 0A 57 ED 53 17 41 03 0A 32 19 41 2A 10 41 CD A3
|
||||
!03A0 04 3A 16 41 47 2A 10 41 7E CD D9 02 23 10 F9 3E
|
||||
!03B0 68 CD A9 02 3A 16 41 47 3E 06 90 47 3E 20 CD A9
|
||||
!03C0 02 3E 20 CD A9 02 10 F4 3E 20 CD A9 02 E5 2A 17
|
||||
!03D0 41 CD B1 02 3A 19 41 B7 CA 3A 04 2A 12 41 01 08
|
||||
!03E0 00 09 3A 19 41 47 7E FE 01 CC C9 04 FE 02 CC F0
|
||||
!03F0 04 FE 03 CC 0D 05 FE 04 CC 49 05 FE 05 CC 5F 05
|
||||
!0400 FE 06 CC 6C 05 FE 07 CC 86 05 FE 08 CC 93 05 FE
|
||||
!0410 09 CC A8 05 FE 10 CC BD 05 FE 11 CC CD 05 FE 12
|
||||
!0420 CC D5 05 FE 13 CC 0D 06 FE 0A CC 9F 05 FE 80 CC
|
||||
!0430 2C 06 FE 81 CC 23 06 23 10 AC E1 18 10 CD A3 04
|
||||
!0440 7E CD BB 04 23 E5 21 78 0E CD B1 02 E1 CD C3 02
|
||||
!0450 3A 1A 41 3D 32 1A 41 C2 6B 03 C9 E5 21 76 06 3A
|
||||
!0460 14 41 4F 7E FE FF CA 9D 04 F5 23 46 2B 79 A0 4F
|
||||
!0470 F1 B9 28 0B 06 00 0E 07 09 7E 4F 09 23 18 E0 23
|
||||
!0480 23 4E 23 3A 15 41 46 A0 B9 2B 2B 2B 28 0B 06 00
|
||||
!0490 0E 07 09 7E 4F 09 23 18 C6 44 4D E1 C9 06 00 0E
|
||||
!04A0 00 E1 C9 3E 24 CD A9 02 7C CD D9 02 7D CD D9 02
|
||||
!04B0 3E 68 CD A9 02 3E 20 CD A9 02 C9 CD D9 02 3E 68
|
||||
!04C0 CD A9 02 3E 20 CD A9 02 C9 E5 ED 5B 10 41 13 1A
|
||||
!04D0 6F 13 1A 67 3E 24 CD A9 02 7C CD D9 02 7D CD D9
|
||||
!04E0 02 3E 68 CD A9 02 3E 20 CD A9 02 CD 67 06 E1 C9
|
||||
!04F0 C5 ED 5B 10 41 1A 1F 1F E6 0E E5 21 81 0E 06 00
|
||||
!0500 4F 09 CD B1 02 3E 20 CD A9 02 E1 C1 C9 ED 5B 10
|
||||
!0510 41 13 1A F5 E6 80 C2 2E 05 3E 24 CD A9 02 3E 2B
|
||||
!0520 CD A9 02 F1 CD D9 02 3E 68 CD A9 02 18 17 3E 24
|
||||
!0530 CD A9 02 3E 2D CD A9 02 F1 ED 44 CD D9 02 3E 68
|
||||
!0540 CD A9 02 18 00 CD 67 06 C9 ED 5B 10 41 13 1A FE
|
||||
!0550 4D 28 06 3E 4E CD A9 02 C9 3E 49 CD A9 02 C9 C5
|
||||
!0560 ED 5B 10 41 1A E6 38 CD BB 04 C1 C9 C5 ED 5B 10
|
||||
!0570 41 1A 1F 1F 1F E6 07 CD 42 06 3E 20 CD A9 02 3E
|
||||
!0580 2C CD A9 02 C1 C9 C5 ED 5B 10 41 1A E6 07 CD 42
|
||||
!0590 06 C1 C9 C5 ED 5B 10 41 13 1A CD BB 04 C1 C9 E5
|
||||
!05A0 ED 5B 10 41 13 13 18 06 E5 ED 5B 10 41 13 1A 6F
|
||||
!05B0 13 1A 67 7C CD D9 02 7D CD D9 02 E1 C9 C5 ED 5B
|
||||
!05C0 10 41 1A 1F 1F 1F E6 07 CD 42 06 C1 C9 E5 C5 ED
|
||||
!05D0 5B 10 41 18 07 E5 C5 ED 5B 10 41 13 1A 1F 1F 1F
|
||||
!05E0 E6 06 F5 2A 10 41 7E FE DD 28 09 FE FD 28 0A 21
|
||||
!05F0 91 0E 18 08 21 99 0E 18 03 21 A1 0E F1 06 00 4F
|
||||
!0600 09 7E CD A9 02 23 7E CD A9 02 C1 E1 C9 E5 C5 ED
|
||||
!0610 5B 10 41 1A 1F 1F 1F E6 06 F5 2A 10 41 7E 21 A9
|
||||
!0620 0E 18 D9 E5 C5 2A 17 41 06 02 18 07 E5 C5 2A 17
|
||||
!0630 41 06 01 7E 23 A7 20 FB 05 C2 33 06 CD B1 02 C1
|
||||
!0640 E1 C9 E5 FE 06 28 11 FE 07 28 15 21 91 0E 06 00
|
||||
!0650 4F 09 7E CD A9 02 E1 C9 21 B1 0E CD B1 02 E1 C9
|
||||
!0660 3E 41 CD A9 02 E1 C9 78 FE 01 C8 3E 20 CD A9 02
|
||||
!0670 3E 2C CD A9 02 C9 00 FF 00 00 01 CE 0A 00 27 FF
|
||||
!0680 00 00 01 99 0B 00 2F FF 00 00 01 9D 0B 00 ED FF
|
||||
!0690 44 FF 02 A1 0B 00 3F FF 00 00 01 A5 0B 00 37 FF
|
||||
!06A0 00 00 01 A9 0B 00 76 FF 00 00 01 AD 0B 00 F3 FF
|
||||
!06B0 00 00 01 B2 0B 00 FB FF 00 00 01 B5 0B 00 ED FF
|
||||
!06C0 46 FF 02 B8 0B 00 ED FF 56 FF 02 BD 0B 00 ED FF
|
||||
!06D0 5E FF 02 C2 0B 00 EB FF 00 00 01 C7 0B 00 08 FF
|
||||
!06E0 00 00 01 D1 0B 00 D9 FF 00 00 01 DE 0B 00 E3 FF
|
||||
!06F0 00 00 01 E2 0B 00 DD FF E3 FF 02 EE 0B 00 FD FF
|
||||
!0700 E3 FF 02 FA 0B 00 ED FF A0 FF 02 06 0C 00 ED FF
|
||||
!0710 B0 FF 02 0A 0C 00 ED FF A8 FF 02 0F 0C 00 ED FF
|
||||
!0720 B8 FF 02 13 0C 00 ED FF A1 FF 02 18 0C 00 ED FF
|
||||
!0730 B1 FF 02 1C 0C 00 ED FF A9 FF 02 21 0C 00 ED FF
|
||||
!0740 B9 FF 02 25 0C 00 C3 FF 00 00 03 D2 0A 01 01 C2
|
||||
!0750 C7 00 00 03 D2 0A 03 02 80 01 18 FF 00 00 02 D9
|
||||
!0760 0A 01 03 38 FF 00 00 02 DD 0A 01 03 30 FF 00 00
|
||||
!0770 02 E4 0A 01 03 28 FF 00 00 02 EC 0A 01 03 20 FF
|
||||
!0780 00 00 02 F3 0A 01 03 E9 FF 00 00 02 FB 0A 00 DD
|
||||
!0790 FF E9 FF 02 04 0B 00 FD FF E9 FF 02 0D 0B 00 10
|
||||
!07A0 FF 00 00 02 16 0B 01 03 CD FF 00 00 03 1C 0B 01
|
||||
!07B0 01 C4 C7 00 00 03 1C 0B 02 02 01 C9 FF 00 00 01
|
||||
!07C0 22 0B 00 C0 C7 00 00 01 22 0B 01 02 ED FF 4D FF
|
||||
!07D0 02 27 0B 00 ED FF 45 FF 02 2C 0B 00 C7 C7 00 00
|
||||
!07E0 01 31 0B 01 05 0A FF 00 00 01 36 0B 00 1A FF 00
|
||||
!07F0 00 01 40 0B 00 3A FF 00 00 03 4A 0B 02 09 80 02
|
||||
!0800 FF 00 00 01 54 0B 00 12 FF 00 00 01 5F 0B 00 32
|
||||
!0810 FF 00 00 03 6A 0B 02 09 80 ED FF 57 FF 02 79 0B
|
||||
!0820 00 ED FF 5F FF 02 81 0B 00 ED FF 47 FF 02 89 0B
|
||||
!0830 00 ED FF 4F FF 02 91 0B 00 06 C7 00 00 02 75 0B
|
||||
!0840 02 06 08 40 C0 00 00 01 75 0B 02 06 07 80 F8 00
|
||||
!0850 00 01 2A 0C 01 07 C6 FF 00 00 02 2A 0C 01 08 DD
|
||||
!0860 FF 86 FF 03 32 0C 02 08 80 FD FF 86 FF 03 41 0C
|
||||
!0870 02 08 80 C8 F8 00 00 01 50 0C 01 07 8E F8 00 00
|
||||
!0880 02 50 0C 01 08 DD FF 8E FF 03 58 0C 02 08 80 FD
|
||||
!0890 FF 8E FF 03 67 0C 02 08 80 90 F8 00 00 01 76 0C
|
||||
!08A0 01 07 D6 FF 00 00 02 76 0C 01 08 DD FF 96 FF 03
|
||||
!08B0 7B 0C 02 08 80 FD FF 96 FF 03 87 0C 02 08 80 94
|
||||
!08C0 F8 00 00 01 93 0C 01 07 DE FF 00 00 02 93 0C 01
|
||||
!08D0 08 DD FF 9E FF 03 9B 0C 02 08 80 FD FF 9E FF 03
|
||||
!08E0 A9 0C 02 08 80 A0 F8 00 00 01 B7 0C 01 07 E6 FF
|
||||
!08F0 00 00 02 B7 0C 01 08 DD FF A6 FF 03 BC 0C 02 08
|
||||
!0900 80 FD FF A6 FF 03 C8 0C 02 08 80 B0 F8 00 00 01
|
||||
!0910 D4 0C 01 07 F6 FF 00 00 02 D4 0C 01 08 DD FF B6
|
||||
!0920 FF 03 D8 0C 02 08 80 FD FF B6 FF 03 E3 0C 02 08
|
||||
!0930 80 A8 F8 00 00 01 EE 0C 01 07 EE FF 00 00 02 EE
|
||||
!0940 0C 01 08 DD FF AE FF 03 F3 0C 02 08 80 FD FF AE
|
||||
!0950 FF 03 FF 0C 02 08 80 B8 F8 00 00 01 0B 0D 01 07
|
||||
!0960 FE FF 00 00 02 0B 0D 01 08 DD FF BE FF 03 0F 0D
|
||||
!0970 02 08 80 FD FF BE FF 03 1A 0D 02 08 80 04 C7 00
|
||||
!0980 00 01 25 0D 01 10 DD FF 34 FF 03 2A 0D 02 08 80
|
||||
!0990 FD FF 34 FF 03 36 0D 02 08 80 05 C7 00 00 01 42
|
||||
!09A0 0D 01 10 DD FF 35 FF 03 47 0D 02 08 80 FD FF 35
|
||||
!09B0 FF 03 53 0D 02 08 80 09 CF 00 00 01 5F 0D 01 11
|
||||
!09C0 ED FF 4A CF 02 68 0D 01 12 ED FF 42 CF 02 71 0D
|
||||
!09D0 01 12 DD FF 09 CF 02 7A 0D 01 12 FD FF 09 CF 02
|
||||
!09E0 83 0D 01 12 03 CF 00 00 01 8C 0D 01 11 DD FF 23
|
||||
!09F0 FF 02 91 0D 00 FD FF 23 FF 02 9A 0D 00 0B CF 00
|
||||
!0A00 00 01 A3 0D 01 11 DD FF 2B FF 02 A8 0D 00 FD FF
|
||||
!0A10 2B FF 02 B1 0D 00 01 CF 00 00 03 BA 0D 03 11 80
|
||||
!0A20 09 DD FF 21 FF 04 C1 0D 01 0A FD FF 21 FF 04 C9
|
||||
!0A30 0D 01 0A 2A FF 00 00 03 D1 0D 02 09 80 ED FF 4B
|
||||
!0A40 CF 04 DD 0D 04 12 80 0A 81 DD FF 2A FF 04 E8 0D
|
||||
!0A50 01 0A FD FF 2A FF 04 F4 0D 01 0A 22 FF 00 00 03
|
||||
!0A60 00 0E 02 0A 80 ED FF 43 CF 04 0C 0E 03 0A 80 12
|
||||
!0A70 DD FF 22 CF 04 16 0E 02 0A 80 FD FF 22 CF 04 22
|
||||
!0A80 0E 02 0A 80 F9 FF 00 00 01 2E 0E 00 DD FF F9 FF
|
||||
!0A90 02 38 0E 00 FD FF F9 FF 02 42 0E 00 C5 CF 00 00
|
||||
!0AA0 01 4C 0E 01 13 DD FF E5 FF 02 52 0E 00 FD FF E5
|
||||
!0AB0 FF 02 5A 0E 00 C1 CF 00 00 01 62 0E 01 13 DD FF
|
||||
!0AC0 E1 FF 02 68 0E 00 FD FF E1 FF 02 70 0E 00 4E 4F
|
||||
!0AD0 50 00 4A 50 20 00 2C 20 00 4A 52 20 00 4A 52 20
|
||||
!0AE0 43 2C 20 00 4A 52 20 4E 43 2C 20 00 4A 52 20 5A
|
||||
!0AF0 2C 20 00 4A 52 20 4E 5A 2C 20 00 4A 50 20 28 48
|
||||
!0B00 4C 29 20 00 4A 50 20 28 49 58 29 20 00 4A 50 20
|
||||
!0B10 28 49 59 29 20 00 44 4A 4E 5A 20 00 43 41 4C 4C
|
||||
!0B20 20 00 52 45 54 20 00 52 45 54 49 00 52 45 54 4E
|
||||
!0B30 00 52 53 54 20 00 4C 44 20 41 2C 28 42 43 29 00
|
||||
!0B40 4C 44 20 41 2C 28 44 45 29 00 4C 44 20 41 2C 28
|
||||
!0B50 00 68 29 00 4C 44 20 28 42 43 29 2C 20 41 00 4C
|
||||
!0B60 44 20 28 44 45 29 2C 20 41 00 4C 44 20 28 00 68
|
||||
!0B70 29 2C 20 41 00 4C 44 20 00 4C 44 20 41 2C 20 49
|
||||
!0B80 00 4C 44 20 41 2C 20 52 00 4C 44 20 49 2C 20 41
|
||||
!0B90 00 4C 44 20 52 2C 20 41 00 44 41 41 00 43 50 4C
|
||||
!0BA0 00 4E 45 47 00 43 43 46 00 53 43 46 00 48 41 4C
|
||||
!0BB0 54 00 44 49 00 45 49 00 49 4D 20 30 00 49 4D 20
|
||||
!0BC0 31 00 49 4D 20 32 00 45 58 20 44 45 2C 20 48 4C
|
||||
!0BD0 00 45 58 20 41 46 2C 20 41 46 E2 80 B2 00 45 58
|
||||
!0BE0 58 00 45 58 20 28 53 50 29 2C 20 48 4C 00 45 58
|
||||
!0BF0 20 28 53 50 29 2C 20 49 58 00 45 58 20 28 53 50
|
||||
!0C00 29 2C 20 49 59 00 4C 44 49 00 4C 44 49 52 00 4C
|
||||
!0C10 44 44 00 4C 44 44 52 00 43 50 49 00 43 50 49 52
|
||||
!0C20 00 43 50 44 00 43 50 44 52 00 41 44 44 20 41 2C
|
||||
!0C30 20 00 41 44 44 20 41 2C 20 28 49 58 2B 00 68 29
|
||||
!0C40 00 41 44 44 20 41 2C 20 28 49 59 2B 00 68 29 00
|
||||
!0C50 41 44 43 20 41 2C 20 00 41 44 43 20 41 2C 20 28
|
||||
!0C60 49 58 2B 00 68 29 00 41 44 43 20 41 2C 20 28 49
|
||||
!0C70 59 2B 00 68 29 00 53 55 42 20 00 53 55 42 20 28
|
||||
!0C80 49 58 2B 00 68 29 00 53 55 42 20 28 49 59 2B 00
|
||||
!0C90 68 29 00 53 42 43 20 41 2C 20 00 53 42 43 20 41
|
||||
!0CA0 2C 28 49 58 2B 00 68 29 00 53 42 43 20 41 2C 28
|
||||
!0CB0 49 59 2B 00 68 29 00 41 4E 44 20 00 41 4E 44 20
|
||||
!0CC0 28 49 58 2B 00 68 29 00 41 4E 44 20 28 49 59 2B
|
||||
!0CD0 00 68 29 00 4F 52 20 00 4F 52 20 28 49 58 2B 00
|
||||
!0CE0 68 29 00 4F 52 20 28 49 59 2B 00 68 29 00 58 4F
|
||||
!0CF0 52 20 00 58 4F 52 20 28 49 58 2B 00 68 29 00 58
|
||||
!0D00 4F 52 20 28 49 59 2B 00 68 29 00 43 50 20 00 43
|
||||
!0D10 50 20 28 49 58 2B 00 68 29 00 43 50 20 28 49 59
|
||||
!0D20 2B 00 68 29 00 49 4E 43 20 00 49 4E 43 20 28 49
|
||||
!0D30 58 2B 00 68 29 00 49 4E 43 20 28 49 59 2B 00 68
|
||||
!0D40 29 00 44 45 43 20 00 44 45 43 20 28 49 58 2B 00
|
||||
!0D50 68 29 00 44 45 43 20 28 49 59 2B 00 68 29 00 41
|
||||
!0D60 44 44 20 48 4C 2C 20 00 41 44 43 20 48 4C 2C 20
|
||||
!0D70 00 53 42 43 20 48 4C 2C 20 00 41 44 44 20 49 58
|
||||
!0D80 2C 20 00 41 44 44 20 49 59 2C 20 00 49 4E 43 20
|
||||
!0D90 00 49 4E 43 20 49 58 2C 20 00 49 4E 43 20 49 59
|
||||
!0DA0 2C 20 00 44 45 43 20 00 44 45 43 20 49 58 2C 20
|
||||
!0DB0 00 44 45 43 20 49 59 2C 20 00 4C 44 20 00 2C 20
|
||||
!0DC0 00 4C 44 20 49 58 2C 20 00 4C 44 20 49 59 2C 20
|
||||
!0DD0 00 4C 44 20 48 4C 2C 20 28 00 68 29 00 4C 44 20
|
||||
!0DE0 00 2C 20 28 00 68 29 00 4C 44 20 49 58 2C 20 28
|
||||
!0DF0 00 68 29 00 4C 44 20 49 59 2C 20 28 00 68 29 00
|
||||
!0E00 4C 44 20 28 00 68 29 2C 20 48 4C 00 4C 44 20 28
|
||||
!0E10 00 68 29 2C 20 00 4C 44 20 28 00 68 29 2C 20 49
|
||||
!0E20 58 00 4C 44 20 28 00 68 29 2C 20 49 59 00 4C 44
|
||||
!0E30 20 53 50 2C 20 48 4C 00 4C 44 20 53 50 2C 20 49
|
||||
!0E40 58 00 4C 44 20 53 50 2C 20 49 59 00 50 55 53 48
|
||||
!0E50 20 00 50 55 53 48 20 49 58 00 50 55 53 48 20 49
|
||||
!0E60 59 00 50 55 53 48 20 00 50 55 53 48 20 49 58 00
|
||||
!0E70 50 55 53 48 20 49 59 00 2E 3F 2E 00 20 20 20 20
|
||||
!0E80 00 4E 5A 5A 00 4E 43 43 00 50 4F 50 45 50 00 4D
|
||||
!0E90 00 42 43 44 45 48 4C 53 50 42 43 44 45 49 58 53
|
||||
!0EA0 50 42 43 44 45 49 59 53 50 42 43 44 45 48 4C 41
|
||||
!0EB0 46 28 48 4C 29 00 CD A9 02 C9 C5 D5 E5 CD EA 02
|
||||
!0EC0 F5 F1 E1 D1 C1 C9 3E 00 C9 5A 38 43 20 4D 6F 6E
|
||||
!0ED0 69 74 6F 72 20 56 32 20 62 79 20 44 65 6E 6E 69
|
||||
!0EE0 73 20 47 75 6E 69 61 20 28 32 30 32 32 29 00 73
|
||||
!0EF0 79 6E 3F 00 63 6D 64 3F 00 42 41 53 45 20 30 20
|
||||
!0F00 20 31 20 20 32 20 20 33 20 20 34 20 20 35 20 20
|
||||
!0F10 36 20 20 37 00 CD 04 03 3E A7 D3 06 3E 0E D3 06
|
||||
!0F20 3E 00 D3 04 21 F5 0F 22 04 42 21 00 00 22 FC 40
|
||||
!0F30 22 FE 40 3E 42 ED 47 ED 5E 21 70 10 CD B1 02 FB
|
||||
!0F40 CD A6 10 3E 43 CD 46 10 CD 19 10 DA 43 0F FE 04
|
||||
!0F50 CA AC 0F FE 18 CA 43 0F FE 01 CA 60 0F C3 B4 0F
|
||||
!0F60 CD 19 10 DA 98 10 47 32 FB 40 CD 19 10 DA 98 10
|
||||
!0F70 80 FE FF C2 B4 0F 3D 78 1F E6 7F 67 78 3D 0F E6
|
||||
!0F80 80 6F 11 00 44 19 06 80 0E 00 E5 CD 19 10 DA 98
|
||||
!0F90 10 E1 77 23 0C 05 C2 8A 0F CD 19 10 DA 98 10 57
|
||||
!0FA0 0C CD 19 10 DA 98 10 5F 0C C3 8A 10 3E 06 CD 46
|
||||
!0FB0 10 C3 EE 0F 3E 18 CD 46 10 3E 18 CD 46 10 3E 18
|
||||
!0FC0 CD 46 10 3E 18 CD 46 10 3E 18 CD 46 10 3E 18 CD
|
||||
!0FD0 46 10 3E 18 CD 46 10 3E 18 CD 46 10 3E 18 CD 46
|
||||
!0FE0 10 3E 18 CD 46 10 3E 18 21 57 10 CD B1 02 F3 CD
|
||||
!0FF0 C3 02 C3 8B 00 F3 08 D9 2A FC 40 23 22 FC 40 11
|
||||
!1000 04 04 ED 52 C2 14 10 21 00 00 22 FC 40 2A FE 40
|
||||
!1010 23 22 FE 40 08 D9 FB ED 4D F3 21 00 00 22 FC 40
|
||||
!1020 22 FE 40 FB CD 0D 03 2A FE 40 7D FE 03 CA 44 10
|
||||
!1030 AF D3 09 DB 09 E6 01 CA 27 10 DB 08 F5 CD 04 03
|
||||
!1040 F1 37 3F C9 37 C9 D3 08 CD 4C 10 C9 97 3C D3 09
|
||||
!1050 DB 09 CB 47 28 F6 C9 45 72 72 6F 72 3A 20 75 6E
|
||||
!1060 65 78 70 65 63 74 65 64 20 62 79 74 65 0D 0A 00
|
||||
!1070 41 77 61 69 74 20 78 6D 6F 64 65 6D 20 63 6F 6E
|
||||
!1080 6E 65 63 74 69 6F 6E 0D 0A 00 3E 06 CD 46 10 CD
|
||||
!1090 19 10 DA 8A 10 C3 4E 0F 3E 15 CD 46 10 CD 19 10
|
||||
!10A0 DA 98 10 C3 4E 0F 21 FF 00 01 01 00 00 00 00 00
|
||||
!10B0 ED 42 C8 18 F7
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user