URL
https://opencores.org/ocsvn/ffr16/ffr16/trunk
Subversion Repositories ffr16
[/] [ffr16/] [branches/] [APERT/] [sources/] [fpu/] [050803KN/] [compile/] [PASS3.DAT] - Rev 14
Go to most recent revision | Compare with Previous | Blame | View Log
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; FAT16 READER V.050303 - Armando Astarloa - 16 BIT VER.
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; APERT - UPV/EHU 2003 - DISTRIBUTED UNDER GPL LICENCE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0 -> TMP0 s1 -> TMP1 s2 -> TMP2 s3 -> TMP3 s4 -> TMP4 / SECTORS_PER_CLUSTER_READED s5 -> TMP5/SECTOR_WORDS_READED (256 TO 0)
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s6 -> TMP s7 -> SECTORS_PER_CLUSTER s8 -> CLUSTER_BEGIN_LBA0 (FAT) s9 -> CLUSTER_BEGIN_LBA1 sA -> CLUSTER_BEGIN_LBA2
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; sB -> CLUSTER_BEGIN_LBA3 sC -> ROOT_DIRECTORY_FIRST_CLUSTER0 (SUPPOSED LESS THAN 256 - USUALLY 2)
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; sD -> data[7:0] WB MASTER sE -> data[15:8] WB MASTER sF -> acummulator
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_OUT_7_0_MASTER
OPERAND2-00
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_OUT_15_8_MASTER
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_WB_OUT_MASTER
OPERAND2-02
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 = D4 = D3 = D2 = A0_MASTER D1 = W_WE_MASTER D0 = STB_O_MASTER
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STROBE_O_MASTER = 1 & W_WE=0 & WB_A0 = 0
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-READ_SLAVE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STROBE_O_MASTER = 1 & W_WE=1 & WB_A0 = 0
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-WRITE_LBA_15_0
OPERAND2-03
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-WRITE_LBA_27_16
OPERAND2-07
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- SLAVE INTERFACE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_OUT_7_0_SLAVE
OPERAND2-03
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_OUT_15_8_SLAVE
OPERAND2-04
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_WB_OUT_SLAVE
OPERAND2-05
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 D4 = D3 =
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D2 = TAG1_ERROR
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D1 = TAG0_WORD_AVAILABLE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D0 = ACK_O_SLAVE
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-ACK_O_SLAVE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TAG0_WORD_AVAILABLE
OPERAND2-02
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-ERROR
OPERAND2-04
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- BUS CONTROL SIGNALS
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_OUT_MASTER
OPERAND2-06
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 = D4 = D3 = D2 = D1 =
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D0 = WB_BUS_MASTER_WRITE_ENABLE
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-WB_BUS_MASTER_WRITE_ENABLE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_OUT_SLAVE
OPERAND2-07
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 = D4 = D3 = D2 = D1 =
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D0 = WB_BUS_SLAVE_WRITE_ENABLE
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-WB_BUS_SLAVE_WRITE_ENABLE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- EXTERNAL REGISTERS FOR MORE DATA ALLOCATION (OTHER OPTION IS THE USE OF
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- ANOTHER BLOCK RAM IF IT IS AVALIABLE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_0
OPERAND2-08
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_1
OPERAND2-09
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_2
OPERAND2-0A
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_3
OPERAND2-0B
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_4
OPERAND2-0C
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_5
OPERAND2-0D
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_6
OPERAND2-0E
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_OUT_7
OPERAND2-0F
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- INPUT PORTS
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_WB_IN_MASTER
OPERAND2-00
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 = D4 = D3 = D2 =
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D1 = ERROR_INPUT
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D0 = ACK_I_MASTER
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-ACK_I_MASTER
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-ERROR_INPUT
OPERAND2-02
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-CONTROL_WB_IN_SLAVE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D7 = D6 = D5 = D4 = D3 = D2 =
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D1 = -
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; D0 = STB_I_SLAVE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-STB_I_SLAVE
OPERAND2-01
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;CONSTANT TAG0_FORCE_RESET,02
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_IN_7_0_MASTER
OPERAND2-02
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-DATA_WB_IN_15_8_MASTER
OPERAND2-03
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- EXTERNAL REGISTERS FOR MORE DATA ALLOCATION (OTHER OPTION IS THE USE OF
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- ANOTHER BLOCK RAM IF IT IS AVALIABLE
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_0
OPERAND2-04
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_1
OPERAND2-05
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_2
OPERAND2-06
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_3
OPERAND2-07
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_4
OPERAND2-08
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_5
OPERAND2-09
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_6
OPERAND2-0A
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-CONSTANT
OPERAND1-TMP_IN_7
OPERAND2-0B
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;-- REGISTERS INITIALIZATION
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;--
ADDRESS-00
LABEL-inicialization
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WISHBONE INTERFACES INIZIALIZATION
ADDRESS-00
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-00
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-00
COMMENT-
ADDRESS-01
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-DATA_WB_OUT_7_0_MASTER
COMMENT-
ADDRESS-02
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-DATA_WB_OUT_15_8_MASTER
COMMENT-
ADDRESS-03
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-DATA_WB_OUT_7_0_SLAVE
COMMENT-
ADDRESS-04
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-DATA_WB_OUT_15_8_SLAVE
COMMENT-
ADDRESS-05
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-06
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_SLAVE
COMMENT-
ADDRESS-07
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-07
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WAIT FOR 410NS*3 (RESET DELAY)
ADDRESS-07
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-07
LABEL-main
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-07
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; PROCESS MASTER BOOT RECORD
ADDRESS-07
LABEL-
INSTRUCTION-CALL
OPERAND1-process_master_boot_record
OPERAND2-
COMMENT-
ADDRESS-08
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; PROCESS ROOT DIRECTORY
ADDRESS-08
LABEL-
INSTRUCTION-CALL
OPERAND1-process_root_directory
OPERAND2-
COMMENT-
ADDRESS-09
LABEL-start
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-09
LABEL-
INSTRUCTION-CALL
OPERAND1-cluster_2_lba
OPERAND2-
COMMENT-
ADDRESS-0A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;CALL write_lba_to_slave
ADDRESS-0A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; sector_per_cluster -> sector_per_cluster_readed
ADDRESS-0A
LABEL-
INSTRUCTION-LOAD
OPERAND1-s4
OPERAND2-s7
COMMENT-
ADDRESS-0B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; 256 -> (s6) SECTOR_WORDS_READED
ADDRESS-0B
LABEL-
INSTRUCTION-CALL
OPERAND1-read_sector
OPERAND2-
COMMENT-
ADDRESS-0C
LABEL-idle
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-0C
LABEL-
INSTRUCTION-INPUT
OPERAND1-s6
OPERAND2-CONTROL_WB_IN_SLAVE
COMMENT-
ADDRESS-0D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CHECK STB INPUT
ADDRESS-0D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CONTROL_WB_IN_SLAVE-> TMP (s6)
ADDRESS-0D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF STB=1 GO TO THE NEXT STATE
ADDRESS-0D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF STB=0 GO TO THE IDLE STATE
ADDRESS-0D
LABEL-
INSTRUCTION-AND
OPERAND1-s6
OPERAND2-STB_I_SLAVE
COMMENT-
ADDRESS-0E
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-idle
COMMENT-
ADDRESS-0F
LABEL-transfer_word_to_master
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-0F
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-10
LABEL-
INSTRUCTION-CALL
OPERAND1-write_a_word_to_master
OPERAND2-
COMMENT-
ADDRESS-11
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (SECTOR WORDS READED)-1
ADDRESS-11
LABEL-
INSTRUCTION-SUB
OPERAND1-s5
OPERAND2-01
COMMENT-
ADDRESS-12
LABEL-check_sectors_words_readed
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-12
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF sector_words_readed = 0 THEN READ_NEW_SECTOR
ADDRESS-12
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF sector_words_readed > 0 THEN TRANSFER_WORD_TO_MASTER
ADDRESS-12
LABEL-
INSTRUCTION-AND
OPERAND1-s5
OPERAND2-s5
COMMENT-
ADDRESS-13
LABEL-
INSTRUCTION-CALL
OPERAND1-Z
OPERAND2-check_sector_per_cluster_readed
COMMENT-
ADDRESS-14
LABEL-
INSTRUCTION-JUMP
OPERAND1-idle
OPERAND2-
COMMENT-
ADDRESS-15
LABEL-track_new_cluster
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-15
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; save the number of dummy reads that must be done when the fat sector will be readed
ADDRESS-15
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; an are stored into s5 register
ADDRESS-15
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; in s0 bits 6-0 of the cluster number (offset in the sector -> 256 words-fat16 entries)
ADDRESS-15
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; as is each read operation a word is readed no multiplication is needed
ADDRESS-15
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; RESTORE CLUSTER NUMBER
ADDRESS-15
LABEL-
INSTRUCTION-INPUT
OPERAND1-s0
OPERAND2-TMP_IN_4
COMMENT-
ADDRESS-16
LABEL-
INSTRUCTION-INPUT
OPERAND1-s1
OPERAND2-TMP_IN_5
COMMENT-
ADDRESS-17
LABEL-
INSTRUCTION-INPUT
OPERAND1-s2
OPERAND2-TMP_IN_6
COMMENT-
ADDRESS-18
LABEL-
INSTRUCTION-INPUT
OPERAND1-s3
OPERAND2-TMP_IN_7
COMMENT-
ADDRESS-19
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-19
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; compose LBA address of the sector of the fat that must be readed
ADDRESS-19
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-19
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; SHIFT RIGHT 15-8 TO 7-0
ADDRESS-19
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-19
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-07
COMMENT-
ADDRESS-1A
LABEL-do_shift
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-1A
LABEL-
INSTRUCTION-SR0
OPERAND1-s3
OPERAND2-
COMMENT-
ADDRESS-1B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; uses the carry for the MSB and stores LSB into the carry
ADDRESS-1B
LABEL-
INSTRUCTION-SRA
OPERAND1-s2
OPERAND2-
COMMENT-
ADDRESS-1C
LABEL-
INSTRUCTION-SRA
OPERAND1-s1
OPERAND2-
COMMENT-
ADDRESS-1D
LABEL-
INSTRUCTION-SRA
OPERAND1-s0
OPERAND2-
COMMENT-
ADDRESS-1E
LABEL-
INSTRUCTION-SUB
OPERAND1-sF
OPERAND2-01
COMMENT-
ADDRESS-1F
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-do_shift
COMMENT-
ADDRESS-20
LABEL-
INSTRUCTION-CALL
OPERAND1-add_load_fat_begin_lba
OPERAND2-
COMMENT-
ADDRESS-21
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; adds fat_begin_lba to the sector relative to the fat obteined from the cluster
ADDRESS-21
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; now there is the lba of the FAT sector that must be readed in s0,s1,s2,s3
ADDRESS-21
LABEL-
INSTRUCTION-CALL
OPERAND1-write_lba_to_slave
OPERAND2-
COMMENT-
ADDRESS-22
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- DUMMY READ OF THE WORDS OF THE SECTOR TILL THE ONE OF THE CLUSTER INTEGER
ADDRESS-22
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-TMP_IN_4
COMMENT-
ADDRESS-23
LABEL-
INSTRUCTION-AND
OPERAND1-sF
OPERAND2-7F
COMMENT-
ADDRESS-24
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-25
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-25
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s0) TEMPORAL REGISTER
ADDRESS-25
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s1) TEMPORAL REGISTER
ADDRESS-25
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-25
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-26
LABEL-
INSTRUCTION-LOAD
OPERAND1-s0
OPERAND2-sD
COMMENT-
ADDRESS-27
LABEL-
INSTRUCTION-LOAD
OPERAND1-s1
OPERAND2-sE
COMMENT-
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s2) TEMPORAL REGISTER
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s3) TEMPORAL REGISTER
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CHECK IF ITS THE LAST ONE
ADDRESS-28
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CB3-CL2-CB1-CB0 IN FAT LITTLE ENDIAN ORDER CB0-CB1 CB2-CB3
ADDRESS-28
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-sE
COMMENT-
ADDRESS-29
LABEL-
INSTRUCTION-SUB
OPERAND1-sF
OPERAND2-FF
COMMENT-
ADDRESS-2A
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-continue_file_processing
COMMENT-
ADDRESS-2B
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-sD
COMMENT-
ADDRESS-2C
LABEL-
INSTRUCTION-SUB
OPERAND1-sF
OPERAND2-FF
COMMENT-
ADDRESS-2D
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-continue_file_processing
COMMENT-
ADDRESS-2E
LABEL-file_end
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-2E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; infinite loop (file readed and tranferred)
ADDRESS-2E
LABEL-
INSTRUCTION-JUMP
OPERAND1-file_end
OPERAND2-
COMMENT-
ADDRESS-2F
LABEL-continue_file_processing
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-2F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; in s0,s1 is the cluster name
ADDRESS-2F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-2F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (SECTOR WORDS READED)= 256
ADDRESS-2F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; sector_per_cluster -> sector_per_cluster_readed
ADDRESS-2F
LABEL-
INSTRUCTION-LOAD
OPERAND1-s2
OPERAND2-00
COMMENT-
ADDRESS-30
LABEL-
INSTRUCTION-LOAD
OPERAND1-s3
OPERAND2-00
COMMENT-
ADDRESS-31
LABEL-
INSTRUCTION-LOAD
OPERAND1-s4
OPERAND2-s7
COMMENT-
ADDRESS-32
LABEL-
INSTRUCTION-CALL
OPERAND1-cluster_2_lba
OPERAND2-
COMMENT-
ADDRESS-33
LABEL-
INSTRUCTION-CALL
OPERAND1-read_sector
OPERAND2-
COMMENT-
ADDRESS-34
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-35
LABEL-add_load_fat_begin_lba
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-35
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-TMP_IN_0
COMMENT-
ADDRESS-36
LABEL-
INSTRUCTION-ADD
OPERAND1-s0
OPERAND2-sF
COMMENT-
ADDRESS-37
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-TMP_IN_1
COMMENT-
ADDRESS-38
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s1
OPERAND2-sF
COMMENT-
ADDRESS-39
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-TMP_IN_2
COMMENT-
ADDRESS-3A
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s2
OPERAND2-sF
COMMENT-
ADDRESS-3B
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-TMP_IN_3
COMMENT-
ADDRESS-3C
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s3
OPERAND2-sF
COMMENT-
ADDRESS-3D
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-3E
LABEL-check_sector_per_cluster_readed
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-3E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF sector_per_cluster_readed = 0 THEN TRACK_NEW_CLUSTER
ADDRESS-3E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; IF sector_per_cluster_readed > 0 THEN CHECK SECTOR WORDS READED
ADDRESS-3E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sector_per_cluster_readed)-1
ADDRESS-3E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (SECTOR WORDS READED)= 256
ADDRESS-3E
LABEL-
INSTRUCTION-SUB
OPERAND1-s4
OPERAND2-01
COMMENT-
ADDRESS-3F
LABEL-
INSTRUCTION-AND
OPERAND1-s4
OPERAND2-s4
COMMENT-
ADDRESS-40
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-track_new_cluster
COMMENT-
ADDRESS-41
LABEL-read_new_sector
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-41
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (SECTOR WORDS READED)= 256
ADDRESS-41
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; increment LBA
ADDRESS-41
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; sector_per_cluster -> sector_per_cluster_readed-1
ADDRESS-41
LABEL-
INSTRUCTION-ADD
OPERAND1-s0
OPERAND2-01
COMMENT-
ADDRESS-42
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s1
OPERAND2-00
COMMENT-
ADDRESS-43
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s2
OPERAND2-00
COMMENT-
ADDRESS-44
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s3
OPERAND2-00
COMMENT-
ADDRESS-45
LABEL-read_sector
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-45
LABEL-
INSTRUCTION-LOAD
OPERAND1-s5
OPERAND2-00
COMMENT-
ADDRESS-46
LABEL-
INSTRUCTION-CALL
OPERAND1-write_lba_to_slave
OPERAND2-
COMMENT-
ADDRESS-47
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- PROCESS MASTER BOOT RECORD (READ LBA BEGIN OF THE FIRST PARTITION)
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-48
LABEL-process_master_boot_record
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; LOAD LBA FOR MBR READ
ADDRESS-48
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-48
LABEL-
INSTRUCTION-LOAD
OPERAND1-s0
OPERAND2-00
COMMENT-
ADDRESS-49
LABEL-
INSTRUCTION-LOAD
OPERAND1-s1
OPERAND2-00
COMMENT-
ADDRESS-4A
LABEL-
INSTRUCTION-LOAD
OPERAND1-s2
OPERAND2-00
COMMENT-
ADDRESS-4B
LABEL-
INSTRUCTION-LOAD
OPERAND1-s3
OPERAND2-00
COMMENT-
ADDRESS-4C
LABEL-
INSTRUCTION-CALL
OPERAND1-write_lba_to_slave
OPERAND2-
COMMENT-
ADDRESS-4D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; information of the lba begin for the first partition
ADDRESS-4D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; has an offset of 454 bytes -> 227(0xE3) words
ADDRESS-4D
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-E3
COMMENT-
ADDRESS-4E
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- MBR READ - Partition_LBA_Begin EXTRACTION
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s0) lba
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[15:8] WB MASTER -> (s1) lba
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s2) lba
ADDRESS-4F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[15:8] WB MASTER -> (s3) lba
ADDRESS-4F
LABEL-
INSTRUCTION-CALL
OPERAND1-store_all_temporal_registers
OPERAND2-
COMMENT-
ADDRESS-50
LABEL-
INSTRUCTION-LOAD
OPERAND1-s8
OPERAND2-s0
COMMENT-
ADDRESS-51
LABEL-
INSTRUCTION-LOAD
OPERAND1-s9
OPERAND2-s1
COMMENT-
ADDRESS-52
LABEL-
INSTRUCTION-LOAD
OPERAND1-sA
OPERAND2-s2
COMMENT-
ADDRESS-53
LABEL-
INSTRUCTION-LOAD
OPERAND1-sB
OPERAND2-s3
COMMENT-
ADDRESS-54
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-54
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; NOW IS THE LBA_BEGIN ON THE TMP REGISTERS
ADDRESS-54
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --------------------
ADDRESS-54
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ FIRST SECTOR (FAT32 VOLUMEN ID) OF THE PARTITION
ADDRESS-54
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; ---------------------
ADDRESS-54
LABEL-
INSTRUCTION-CALL
OPERAND1-write_lba_to_slave
OPERAND2-
COMMENT-
ADDRESS-55
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-55
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> SECTORS_PER_CLUSTER (OFFSET 0x0D)
ADDRESS-55
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-55
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x0D (13) => READ 13 bytes -> 6(0x06) words and drop LSB in the next
ADDRESS-55
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-06
COMMENT-
ADDRESS-56
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-57
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-57
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s7) SECTORS PER CLUSTER
ADDRESS-57
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-58
LABEL-
INSTRUCTION-LOAD
OPERAND1-s7
OPERAND2-sE
COMMENT-
ADDRESS-59
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-59
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> Number_of_Reserved_Sectors (2 bytes) (OFFSET 0x0E)
ADDRESS-59
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-59
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x0E (14) => READ 2 bytes -> 1(0x01) words
ADDRESS-59
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[15:8] WB MASTER -> (s6) TEMPORAL REGISTER
ADDRESS-59
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-5A
LABEL-
INSTRUCTION-LOAD
OPERAND1-s6
OPERAND2-sD
COMMENT-
ADDRESS-5B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s4) TEMPORAL REGISTER
ADDRESS-5B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-5B
LABEL-
INSTRUCTION-LOAD
OPERAND1-s4
OPERAND2-sE
COMMENT-
ADDRESS-5C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-5C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;fat_begin_lba = Partition_LBA_Begin + Number_of_Reserved_Sectors
ADDRESS-5C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-5C
LABEL-
INSTRUCTION-ADD
OPERAND1-s8
OPERAND2-s6
COMMENT-
ADDRESS-5D
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s9
OPERAND2-s4
COMMENT-
ADDRESS-5E
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sA
OPERAND2-00
COMMENT-
ADDRESS-5F
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sB
OPERAND2-00
COMMENT-
ADDRESS-60
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; store fat_begin_lba in external registers
ADDRESS-60
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s8
OPERAND2-TMP_OUT_0
COMMENT-
ADDRESS-61
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s9
OPERAND2-TMP_OUT_1
COMMENT-
ADDRESS-62
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sA
OPERAND2-TMP_OUT_2
COMMENT-
ADDRESS-63
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sB
OPERAND2-TMP_OUT_3
COMMENT-
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;cluster_begin_lba = Partition_LBA_Begin + Number_of_Reserved_Sectors +
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (Number_of_FATs * Sectors_Per_FAT)+ RootDirSectors;
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;cluster_begin_lba = fat_begin_lba + (Number_of_FATs * Sectors_Per_FAT)+ RootDirSectors;
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> Number_of_Fats (OFFSET 0x10) (always 2)
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x10 (16) => READ 2 bytes -> 1(0x01) words
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-64
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s6) TEMPORAL REGISTER
ADDRESS-64
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-65
LABEL-
INSTRUCTION-LOAD
OPERAND1-s6
OPERAND2-sD
COMMENT-
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; FOR FAT16 => NUMBER OF SECTORS OCCUPIED BY THE ROOT DIRECTORY (BYTES_PER_SEC=512)
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> RootEntCnt (OFFSET 0x11) (FAT16 PROCESSING)
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; RootDirSectors=((BPB_RootEntCnt*32)+(BPB_BytesPerSec-1))/BPB_BytesPerSec
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x11 (17) => READ 1 bytes
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-66
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s0) TEMPORAL REGISTER
ADDRESS-66
LABEL-
INSTRUCTION-LOAD
OPERAND1-s0
OPERAND2-sE
COMMENT-
ADDRESS-67
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[15:0] WB MASTER -> (sD) TEMPORAL REGISTER - offset 0x12 (18) => READ 1 bytes
ADDRESS-67
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-68
LABEL-
INSTRUCTION-LOAD
OPERAND1-s1
OPERAND2-sD
COMMENT-
ADDRESS-69
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; MULTIPLY BY 32 (100000) 5 SHIFTS TO THE LEFT
ADDRESS-69
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-05
COMMENT-
ADDRESS-6A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; LSB '0'
ADDRESS-6A
LABEL-mult_32
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-6A
LABEL-
INSTRUCTION-SL0
OPERAND1-s0
OPERAND2-
COMMENT-
ADDRESS-6B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CARRY -> LSB , MSB -> CARRY
ADDRESS-6B
LABEL-
INSTRUCTION-SLA
OPERAND1-s1
OPERAND2-
COMMENT-
ADDRESS-6C
LABEL-
INSTRUCTION-SUB
OPERAND1-sF
OPERAND2-01
COMMENT-
ADDRESS-6D
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-mult_32
COMMENT-
ADDRESS-6E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;BPB_RootEntCnt*32+(BPB_BytesPerSec-1) 511 (0x1FF)
ADDRESS-6E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;ADD s0,FF (if rounds up => not necessary??)
ADDRESS-6E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;ADDCY s1,01
ADDRESS-6E
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;/BPB_BytesPerSec (512) (1000000000)9 SHIFTS TO THE RIGHT
ADDRESS-6E
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-09
COMMENT-
ADDRESS-6F
LABEL-div_512
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-6F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; uses the carry for the MSB and stores LSB into the carry
ADDRESS-6F
LABEL-
INSTRUCTION-SR0
OPERAND1-s1
OPERAND2-
COMMENT-
ADDRESS-70
LABEL-
INSTRUCTION-SRA
OPERAND1-s0
OPERAND2-
COMMENT-
ADDRESS-71
LABEL-
INSTRUCTION-SUB
OPERAND1-sF
OPERAND2-01
COMMENT-
ADDRESS-72
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-div_512
COMMENT-
ADDRESS-73
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; ROUNDs UP
ADDRESS-73
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;ADD s0,01
ADDRESS-73
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;ADDCY s1,00
ADDRESS-73
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;fat_begin_lba + RootDirSectors
ADDRESS-73
LABEL-
INSTRUCTION-ADD
OPERAND1-s8
OPERAND2-s0
COMMENT-
ADDRESS-74
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s9
OPERAND2-s1
COMMENT-
ADDRESS-75
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sA
OPERAND2-s2
COMMENT-
ADDRESS-76
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sB
OPERAND2-s3
COMMENT-
ADDRESS-77
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> Sectors_per_fat (OFFSET 0x24)
ADDRESS-77
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-77
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x16 (22) => READ 2 bytes -> 01(0x01) words
ADDRESS-77
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-77
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-01
COMMENT-
ADDRESS-78
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-79
LABEL-
INSTRUCTION-CALL
OPERAND1-store_all_temporal_registers
OPERAND2-
COMMENT-
ADDRESS-7A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (Number_of_FATs * Sectors_Per_FAT)
ADDRESS-7A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; Number_of_FATs = 2 (10) . Do a shift to the left of the Sectors_Per_Fat
ADDRESS-7A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; *** FAT16 = Sectors_per_fat(BPB_FATSz16)
ADDRESS-7A
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; LSB '0'
ADDRESS-7A
LABEL-
INSTRUCTION-SL0
OPERAND1-s0
OPERAND2-
COMMENT-
ADDRESS-7B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CARRY -> LSB , MSB -> CARRY
ADDRESS-7B
LABEL-
INSTRUCTION-SLA
OPERAND1-s1
OPERAND2-
COMMENT-
ADDRESS-7C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;SLA s2 for fat16 only 2 bytes
ADDRESS-7C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;SLA s3
ADDRESS-7C
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; fat_begin_lba + RootDirSectors + (Number_of_FATs * Sectors_Per_FAT)
ADDRESS-7C
LABEL-
INSTRUCTION-ADD
OPERAND1-s8
OPERAND2-s0
COMMENT-
ADDRESS-7D
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s9
OPERAND2-s1
COMMENT-
ADDRESS-7E
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sA
OPERAND2-00
COMMENT-
ADDRESS-7F
LABEL-
INSTRUCTION-ADDCY
OPERAND1-sB
OPERAND2-00
COMMENT-
ADDRESS-80
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; cluster_begin_lba is stored in s8, s9, sA, SB
ADDRESS-80
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-80
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; FOR FAT16 ROOT DIRECTORY POSITION IS FIXED
ADDRESS-80
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; root_first_lba = fat_begin_lba(in external regs) + (Number_of_FATs * Sectors_Per_FAT) (s0,s1,s2,s3)
ADDRESS-80
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-80
LABEL-
INSTRUCTION-LOAD
OPERAND1-s2
OPERAND2-00
COMMENT-
ADDRESS-81
LABEL-
INSTRUCTION-LOAD
OPERAND1-s3
OPERAND2-00
COMMENT-
ADDRESS-82
LABEL-
INSTRUCTION-CALL
OPERAND1-add_load_fat_begin_lba
OPERAND2-
COMMENT-
ADDRESS-83
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0,s1,s2,s3 have Root directory begin lba
ADDRESS-83
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-84
LABEL-store_all_temporal_registers
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-84
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-84
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-85
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s0) TEMPORAL REGISTER
ADDRESS-85
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s1) TEMPORAL REGISTER
ADDRESS-85
LABEL-
INSTRUCTION-LOAD
OPERAND1-s0
OPERAND2-sD
COMMENT-
ADDRESS-86
LABEL-
INSTRUCTION-LOAD
OPERAND1-s1
OPERAND2-sE
COMMENT-
ADDRESS-87
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s2) TEMPORAL REGISTER
ADDRESS-87
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> (s3) TEMPORAL REGISTER
ADDRESS-87
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-87
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-88
LABEL-
INSTRUCTION-LOAD
OPERAND1-s2
OPERAND2-sD
COMMENT-
ADDRESS-89
LABEL-
INSTRUCTION-LOAD
OPERAND1-s3
OPERAND2-sE
COMMENT-
ADDRESS-8A
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-8B
LABEL-process_root_directory
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; INPUT :
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0,s1,s2,s3 root directory lba (FAT16- FIXED)
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CALL cluster_2_lba
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; now s0,s1,s2,s3 contains the lba for the root directory
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; the first 32 byte record on the sector must be the root directory information
ADDRESS-8B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; check if EOF (first byte of the 32 bytes is 0)
ADDRESS-8B
LABEL-
INSTRUCTION-CALL
OPERAND1-write_lba_to_slave
OPERAND2-
COMMENT-
ADDRESS-8C
LABEL-check_for_a_file
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-8C
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-8D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s6) TEMPORAL REGISTER
ADDRESS-8D
LABEL-
INSTRUCTION-LOAD
OPERAND1-s6
OPERAND2-sD
COMMENT-
ADDRESS-8E
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-s6
COMMENT-
ADDRESS-8F
LABEL-
INSTRUCTION-AND
OPERAND1-sF
OPERAND2-sF
COMMENT-
ADDRESS-90
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; if sF=0 the is not directory => error
ADDRESS-90
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-put_error_code
COMMENT-
ADDRESS-91
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-91
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; check that is not a deleted entry
ADDRESS-91
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-91
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s6) TEMPORAL REGISTER
ADDRESS-91
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-E5
COMMENT-
ADDRESS-92
LABEL-
INSTRUCTION-AND
OPERAND1-sF
OPERAND2-s6
COMMENT-
ADDRESS-93
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; if s6=E5 is a deteled entry => check for new one (offset => sF)
ADDRESS-93
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-check_next_directory_entry
COMMENT-
ADDRESS-94
LABEL-check_attribute
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-94
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; ATTRIBUTE -> OFFSET Bh
ADDRESS-94
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; check that is not a directory or LONG NAME
ADDRESS-94
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; 00arshdv - DV for long name - D for directory
ADDRESS-94
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> (s6) TEMPORAL REGISTER
ADDRESS-94
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-04
COMMENT-
ADDRESS-95
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-96
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-97
LABEL-
INSTRUCTION-LOAD
OPERAND1-s6
OPERAND2-sE
COMMENT-
ADDRESS-98
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-03
COMMENT-
ADDRESS-99
LABEL-
INSTRUCTION-AND
OPERAND1-sF
OPERAND2-s6
COMMENT-
ADDRESS-9A
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-check_next_directory_entry_attribute
COMMENT-
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; if s6=0 that is not a file => error
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;JUMP Z,check_next_directory_entry
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; check that is not a directory
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; check that is a file (short filename entry)
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; in other case error
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ CLUSTER INFORMATION FOR THE FILE
ADDRESS-9B
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-9B
LABEL-
INSTRUCTION-CALL
OPERAND1-read_dir_cluster_hi_cluster_low
OPERAND2-
COMMENT-
ADDRESS-9C
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-9D
LABEL-check_next_directory_entry
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-9D
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; go fwd 11 words
ADDRESS-9D
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-05
COMMENT-
ADDRESS-9E
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-9F
LABEL-check_next_directory_entry_attribute
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-9F
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; go fwd 5 words
ADDRESS-9F
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-0A
COMMENT-
ADDRESS-A0
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-A1
LABEL-
INSTRUCTION-JUMP
OPERAND1-check_for_a_file
OPERAND2-
COMMENT-
ADDRESS-A2
LABEL-read_dir_cluster_hi_cluster_low
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; INPUT :
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; before arrive here first two bytes of the directory
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; structure must be readed
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; OUTPUT :
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0,s1 : CLUS_LOW
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s2,s3 : CLUS_HI
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> cluster_HI (OFFSET 0x14)
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x14 (20) => READ 18 bytes -> 9(0x09) words
ADDRESS-A2
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A2
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-04
COMMENT-
ADDRESS-A3
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-A4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> s2
ADDRESS-A4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> s3
ADDRESS-A4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-A4
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-A5
LABEL-
INSTRUCTION-LOAD
OPERAND1-s2
OPERAND2-sD
COMMENT-
ADDRESS-A6
LABEL-
INSTRUCTION-LOAD
OPERAND1-s3
OPERAND2-sE
COMMENT-
ADDRESS-A7
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sE
OPERAND2-TMP_OUT_7
COMMENT-
ADDRESS-A8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ -> cluster_low(OFFSET 0x1A)
ADDRESS-A8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; offset 0x1A (26) => READ 4 bytes -> 2(0x02) words
ADDRESS-A8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-A8
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-02
COMMENT-
ADDRESS-A9
LABEL-
INSTRUCTION-CALL
OPERAND1-do_dummy_reads_from_slave
OPERAND2-
COMMENT-
ADDRESS-AA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sD) data[7:0] WB MASTER -> s0
ADDRESS-AA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (sE) data[7:0] WB MASTER -> s1
ADDRESS-AA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; READ 2 BYTES
ADDRESS-AA
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-AB
LABEL-
INSTRUCTION-LOAD
OPERAND1-s0
OPERAND2-sD
COMMENT-
ADDRESS-AC
LABEL-
INSTRUCTION-LOAD
OPERAND1-s1
OPERAND2-sE
COMMENT-
ADDRESS-AD
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0,s1 clus_low s3,s4 - clus_high
ADDRESS-AD
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- MBR READ OPERATION - LBA BEGIN DETERMINATION
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; '00' -> LBA_7_0,LBA_15_8,LBA_23_16,LD_LBA_27_24
ADDRESS-AE
LABEL-cluster_2_lba
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- LBA ADDRESS DETERMINATION
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; lba_addr = cluster_begin_lba + (cluster_number - 2) * sectors_per_cluster;
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; INPUT :
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0 : CLUSTER_NUMBER0, s1 : CLUSTER_NUMBER1, s2: CLUSTER_NUMBER2, s3 : CLUSTER_NUMBER3
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; OUTPUT :
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; s0 : LBA_ADDR_7_0 TMP1, s1 : LBA_ADDR_15_8, s2 : LBA_ADDR_24_16, s3 : LBA_ADDR_27_24
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; cluster_number - 2
ADDRESS-AE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-AE
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s0
OPERAND2-TMP_OUT_4
COMMENT-
ADDRESS-AF
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s1
OPERAND2-TMP_OUT_5
COMMENT-
ADDRESS-B0
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s2
OPERAND2-TMP_OUT_6
COMMENT-
ADDRESS-B1
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s3
OPERAND2-TMP_OUT_7
COMMENT-
ADDRESS-B2
LABEL-
INSTRUCTION-SUB
OPERAND1-s0
OPERAND2-02
COMMENT-
ADDRESS-B3
LABEL-
INSTRUCTION-SUBCY
OPERAND1-s1
OPERAND2-00
COMMENT-
ADDRESS-B4
LABEL-
INSTRUCTION-SUBCY
OPERAND1-s2
OPERAND2-00
COMMENT-
ADDRESS-B5
LABEL-
INSTRUCTION-SUBCY
OPERAND1-s3
OPERAND2-00
COMMENT-
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (cluster_number - 2) * sectors_per_cluster(s7);
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; to perform the multiplication as sector_per_cluster is 2 multiple must be known
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; who many times must be shifted
ADDRESS-B6
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; (use sD as temporal register)
ADDRESS-B6
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-08
COMMENT-
ADDRESS-B7
LABEL-
INSTRUCTION-LOAD
OPERAND1-sD
OPERAND2-s7
COMMENT-
ADDRESS-B8
LABEL-multiply
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-B8
LABEL-
INSTRUCTION-SR0
OPERAND1-sD
OPERAND2-
COMMENT-
ADDRESS-B9
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; loop until detection of the 1 (2 multiple) - Add timeout!!!
ADDRESS-B9
LABEL-
INSTRUCTION-JUMP
OPERAND1-C
OPERAND2-add_cluster_begin_lba
COMMENT-
ADDRESS-BA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; LSB '0'
ADDRESS-BA
LABEL-
INSTRUCTION-SL0
OPERAND1-s0
OPERAND2-
COMMENT-
ADDRESS-BB
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CARRY -> LSB , MSB -> CARRY
ADDRESS-BB
LABEL-
INSTRUCTION-SLA
OPERAND1-s1
OPERAND2-
COMMENT-
ADDRESS-BC
LABEL-
INSTRUCTION-SLA
OPERAND1-s2
OPERAND2-
COMMENT-
ADDRESS-BD
LABEL-
INSTRUCTION-SLA
OPERAND1-s3
OPERAND2-
COMMENT-
ADDRESS-BE
LABEL-
INSTRUCTION-JUMP
OPERAND1-multiply
OPERAND2-
COMMENT-
ADDRESS-BF
LABEL-add_cluster_begin_lba
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-BF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; lba_addr (TMP0,TMP1,TMP2,TMP3)= cluster_begin_lba + (cluster_number - 2) * sectors_per_cluster;
ADDRESS-BF
LABEL-
INSTRUCTION-ADD
OPERAND1-s0
OPERAND2-s8
COMMENT-
ADDRESS-C0
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s1
OPERAND2-s9
COMMENT-
ADDRESS-C1
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s2
OPERAND2-sA
COMMENT-
ADDRESS-C2
LABEL-
INSTRUCTION-ADDCY
OPERAND1-s3
OPERAND2-sB
COMMENT-
ADDRESS-C3
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- WRITE A WORD INTO THE WB SLAVE INTERFACE (TO THE MASTER)
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; INPUTS :
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP0 : LSB TO DATA_WB_OUT_7_0_SLAVE
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP1 : MSB TO DATA_WB_OUT_15_8_SLAVE
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-C4
LABEL-write_a_word_to_master
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-C4
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP0 => DATA_WB_OUT_7_0_SLAVE
ADDRESS-C4
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sD
OPERAND2-DATA_WB_OUT_7_0_SLAVE
COMMENT-
ADDRESS-C5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; 00 => DATA_WB_OUT_15_8_SLAVE
ADDRESS-C5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;LOAD sF,00 -- 8 BIT VERSION
ADDRESS-C5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;OUTPUT sF,DATA_WB_OUT_15_8_SLAVE -- 8 BIT VERSION
ADDRESS-C5
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sE
OPERAND2-DATA_WB_OUT_15_8_SLAVE
COMMENT-
ADDRESS-C6
LABEL-
INSTRUCTION-CALL
OPERAND1-write_a_byte_to_master
OPERAND2-
COMMENT-
ADDRESS-C7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-C7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CHECK STB INPUT | CONTROL_WB_IN_SLAVE-> TMP (s6)
ADDRESS-C7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-C7
LABEL-wait_strobe
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-C7
LABEL-
INSTRUCTION-INPUT
OPERAND1-s6
OPERAND2-CONTROL_WB_IN_SLAVE
COMMENT-
ADDRESS-C8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-C8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-C8
LABEL-
INSTRUCTION-AND
OPERAND1-s6
OPERAND2-STB_I_SLAVE
COMMENT-
ADDRESS-C9
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-wait_strobe
COMMENT-
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP1 => DATA_WB_OUT_7_0_SLAVE
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; OUTPUT sE,DATA_WB_OUT_7_0_SLAVE
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; 00 =>DATA_WB_OUT_15_8_SLAVE
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;LOAD sF,00 -- 8 BIT VERSION
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;OUTPUT sF,DATA_WB_OUT_15_8_SLAVE -- 8 BIT VERSION
ADDRESS-CA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;CALL write_a_byte_to_master -- 8 BIT VERSION
ADDRESS-CA
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-CB
LABEL-write_a_byte_to_master
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-CB
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CB
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB SLAVE WRITE ENABLE ACTIVE
ADDRESS-CB
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CB
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-WB_BUS_SLAVE_WRITE_ENABLE
COMMENT-
ADDRESS-CC
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_OUT_SLAVE
COMMENT-
ADDRESS-CD
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CD
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; ACK TO THE MASTER UNTIL STB FINISH
ADDRESS-CD
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CD
LABEL-ack_to_the_master
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-CD
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-ACK_O_SLAVE
COMMENT-
ADDRESS-CE
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_SLAVE
COMMENT-
ADDRESS-CF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-CF
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-00
COMMENT-
ADDRESS-D0
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_OUT_SLAVE
COMMENT-
ADDRESS-D1
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_SLAVE
COMMENT-
ADDRESS-D2
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- WRITE A LBA INTO THE WB MASTER INTERFACE (TO THE SLAVE)
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; INPUTS :
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP0 : LBA_ADDR_7_0, TMP1 : LBA_ADDR_15_8, TMP2 : LBA_ADDR_24_16, TMP3 : LBA_ADDR_27_24
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D3
LABEL-write_lba_to_slave
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB MASTER WRITE ENABLE ACTIVE
ADDRESS-D3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D3
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-WB_BUS_MASTER_WRITE_ENABLE
COMMENT-
ADDRESS-D4
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_OUT_MASTER
COMMENT-
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;write_lba_15_0_to_slave:
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP0 : LBA_ADDR_7_0 (s0) => DATA_WB_OUT_7_0_MASTER
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP1 : LBA_ADDR_15_8 (s1) => DATA_WB_OUT_15_8_MASTER
ADDRESS-D5
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D5
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s0
OPERAND2-DATA_WB_OUT_7_0_MASTER
COMMENT-
ADDRESS-D6
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s1
OPERAND2-DATA_WB_OUT_15_8_MASTER
COMMENT-
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- WRITE LBA 15-0 TO THE SLAVE
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB_CONTROL_OUT_MASTER
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; W_WE_MASTER = 1
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STB_O_MASTER = 1
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; A0 = 0
ADDRESS-D7
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D7
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-WRITE_LBA_15_0
COMMENT-
ADDRESS-D8
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-D9
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D9
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WAIT FOR THE ACK
ADDRESS-D9
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-D9
LABEL-
INSTRUCTION-CALL
OPERAND1-wait_for_the_ack
OPERAND2-
COMMENT-
ADDRESS-DA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;write_lba_27_16_to_slave:
ADDRESS-DA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP2 : LBA_ADDR_23_16 (s2) => DATA_WB_OUT_7_0_MASTER
ADDRESS-DA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; TMP3 : LBA_ADDR_27_24 (s3) => DATA_WB_OUT_15_8_MASTER
ADDRESS-DA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DA
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s2
OPERAND2-DATA_WB_OUT_7_0_MASTER
COMMENT-
ADDRESS-DB
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-s3
OPERAND2-DATA_WB_OUT_15_8_MASTER
COMMENT-
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- WRITE LBA 27-16 TO THE SLAVE
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB_CONTROL_OUT_MASTER
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; W_WE_MASTER = 1
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STB_O_MASTER = 1
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; A0 = 0
ADDRESS-DC
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DC
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-WRITE_LBA_27_16
COMMENT-
ADDRESS-DD
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-DE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WAIT FOR THE ACK
ADDRESS-DE
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DE
LABEL-
INSTRUCTION-CALL
OPERAND1-wait_for_the_ack
OPERAND2-
COMMENT-
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- FINISH WRITE OPERATION ON THE MASTER WB INTERFACE
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB_CONTROL_OUT_MASTER
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; W_WE_MASTER = 0
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STB_O_MASTER = 0
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; A0 = 0
ADDRESS-DF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-DF
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-00
COMMENT-
ADDRESS-E0
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-E1
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_OUT_MASTER
COMMENT-
ADDRESS-E2
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-E3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- PERFORM DUMMY READS FROM THE WB SLAVE
ADDRESS-E3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-E3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- IN sF ARE THE NUMBER OF WORDS THAT MUST BE READED
ADDRESS-E3
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-E3
LABEL-do_dummy_reads_from_slave
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E3
LABEL-
INSTRUCTION-LOAD
OPERAND1-s6
OPERAND2-sF
COMMENT-
ADDRESS-E4
LABEL-dummy_reads_from_slave
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E4
LABEL-
INSTRUCTION-CALL
OPERAND1-read_word_from_slave
OPERAND2-
COMMENT-
ADDRESS-E5
LABEL-
INSTRUCTION-SUB
OPERAND1-s6
OPERAND2-01
COMMENT-
ADDRESS-E6
LABEL-
INSTRUCTION-JUMP
OPERAND1-NZ
OPERAND2-dummy_reads_from_slave
COMMENT-
ADDRESS-E7
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; -- PERFORM A WORD READING FROM THE WB SLAVE
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; --
ADDRESS-E8
LABEL-read_word_from_slave
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WB_CONTROL_OUT_MASTER
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; W_WE_MASTER = 0
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; STB_O_MASTER = 1
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; A0 = 0
ADDRESS-E8
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; wait state
ADDRESS-E8
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-READ_SLAVE
COMMENT-
ADDRESS-E9
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; WAIT FOR THE ACK
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CALL wait_for_the_ack
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;JUMP Z,data_available_on_wb_master
ADDRESS-EA
LABEL-wait_for_the_ack
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; CONTROL_WB_IN_MASTER -> TMP (s6)
ADDRESS-EA
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-EA
LABEL-
INSTRUCTION-INPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_IN_MASTER
COMMENT-
ADDRESS-EB
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-;
ADDRESS-EB
LABEL-
INSTRUCTION-AND
OPERAND1-sF
OPERAND2-ACK_I_MASTER
COMMENT-
ADDRESS-EC
LABEL-
INSTRUCTION-JUMP
OPERAND1-Z
OPERAND2-wait_for_the_ack
COMMENT-
ADDRESS-ED
LABEL-data_available_on_wb_master
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-ED
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; This part is not necessary in write operations
ADDRESS-ED
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; DATA_WB_IN_7_0_MASTER -> (sD) data[7:0] WB MASTER
ADDRESS-ED
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; DATA_WB_IN_15_8_MASTER -> (sE) data[15:8] WB MASTER
ADDRESS-ED
LABEL-
INSTRUCTION-INPUT
OPERAND1-sD
OPERAND2-DATA_WB_IN_7_0_MASTER
COMMENT-
ADDRESS-EE
LABEL-
INSTRUCTION-INPUT
OPERAND1-sE
OPERAND2-DATA_WB_IN_15_8_MASTER
COMMENT-
ADDRESS-EF
LABEL-
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-; DISABLE RD/WR OPERATION REQUEST
ADDRESS-EF
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-00
COMMENT-
ADDRESS-F0
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_MASTER
COMMENT-
ADDRESS-F1
LABEL-
INSTRUCTION-RETURN
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-F2
LABEL-put_error_code
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-F2
LABEL-
INSTRUCTION-LOAD
OPERAND1-sF
OPERAND2-ERROR
COMMENT-
ADDRESS-F3
LABEL-
INSTRUCTION-OUTPUT
OPERAND1-sF
OPERAND2-CONTROL_WB_OUT_SLAVE
COMMENT-
ADDRESS-F4
LABEL-
INSTRUCTION-JUMP
OPERAND1-put_error_code
OPERAND2-
COMMENT-
ADDRESS-F5
LABEL-interrupt
INSTRUCTION-
OPERAND1-
OPERAND2-
COMMENT-
ADDRESS-F5
LABEL-
INSTRUCTION-RETURNI
OPERAND1-ENABLE
OPERAND2-
COMMENT-
Go to most recent revision | Compare with Previous | Blame | View Log