OpenCores
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.