URL
https://opencores.org/ocsvn/ffr16/ffr16/trunk
Subversion Repositories ffr16
Compare Revisions
- This comparison shows the changes necessary to convert path
/ffr16/trunk/sources/hau/240603KN
- from Rev 6 to Rev 13
- ↔ Reverse comparison
Rev 6 → Rev 13
/compile/cfreader.psm
0,0 → 1,731
;--===========================================================================-- |
;-- |
;-- CF SECTOR READER |
;-- |
;-- - SEPTEMBER 2002 |
;-- - APERT - UPV / EHU. - BASQUE COUNTRY UNIVERSITY |
;-- - DISTRIBUTED UNDER GPL LICENSE |
;-- |
;-- Design units : FAT FILE LOADER |
;-- |
;-- File name : cfreader.psm |
;-- |
;-- Purpose : READ RAW SECTORS FROM CF |
;-- |
;-- Library : - |
;-- |
;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE |
;-- |
;-- Compiler : KCPSM ASSEMBLER V1.10 |
;-- |
;-- Debugger : PSM DEBUG V1.00 |
;--===========================================================================-- |
;------------------------------------------------------------------------------- |
;-- Revision list |
;-- Version Author Date Changes |
;-- |
;-- 260902 Armando Astarloa 27 September 2002 - |
;-- 241002 Armando Astarloa 27 October 2002 Reset on error |
;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus |
;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading |
;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error |
;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read. |
;-- do_reset_and_retry state |
;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading |
;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read |
;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset) |
;-- |
;------------------------------------------------------------------------------- |
;-- Description : DUMMY CF SECTORS READ |
;------------------------------------------------------------------------------- |
|
;-- |
;-- CONSTANT DEFINITIONS |
;-- |
CONSTANT DELAY1,03 |
; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop |
; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns |
CONSTANT IDENTIFY_COMMAND,EC |
CONSTANT WRITE_SECTOR_COMMAND,30 |
CONSTANT READ_SECTOR_COMMAND,20 |
CONSTANT WRITE_SEC_FEATURE,00 |
CONSTANT SOFT_RESET,04 |
;-- |
;-- RAM REGISTERS |
;-- |
|
; |
; s0 |
; s1 |
; s2 |
; s3 -> WISHBONE CONTROL |
; s4 -> REGISTERS STACK |
; s5 -> MY_STATUS |
; D3 = ERROR |
; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES) |
; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES) |
; D0 = SECTOR AVAILABLE (0 NOT / 1 YES) |
CONSTANT SECTOR_AVAILABLE,01 |
CONSTANT COMMAND_ALLOWED,02 |
CONSTANT DATA_TRANSFER_ALLOWED,04 |
CONSTANT ERROR_MY_STATUS,08 |
; s6 -> WORDS_READ |
; s7 -> LBA_7_0 |
; s8 -> LBA_15_8 |
; s9 -> LBA_23_16 |
; sA -> LD_LBA_27_24 |
; sB -> data[7:0] in ide |
; sC -> data[15:8] in ide |
; sD -> data[7:0] out ide |
; sE -> data[15:8] out ide |
; sF -> acummulator |
; |
|
;-- |
;-- OUTPUT PORTS |
;-- |
|
;-- |
;-- IDE INTERFACE PORTS - OUTPUTS |
;-- |
CONSTANT DATA_IDE_OUT_7_0,00 |
CONSTANT DATA_IDE_OUT_15_8,01 |
CONSTANT IDE_CONTROL_OUT,02 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = |
; D1 = NIOWR |
; D0 = NIORD |
CONSTANT NIOWR,FD |
CONSTANT NIORD,FE |
|
CONSTANT IDE_ADDRESS_OUT,03 |
; D7 = |
; D6 = |
; D5 = |
; D4 = NCE1 |
; D3 = NCE0 |
; D2 = A2 |
; D1 = A1 |
; D0 = A0 |
; |
; WRITE IDE REGISTERS |
; |
; NCE1/NCE0/ A2/ A1/ A0 |
CONSTANT CONTROL,0E ; 000 0 1 1 1 0 |
CONSTANT DATA,10 ; 000 1 0 0 0 0 |
CONSTANT FEATURE,11 ; 000 1 0 0 0 1 |
CONSTANT SECTOR_COUNT,12; 000 1 0 0 1 0 |
CONSTANT LBA_7_0,13 ; 000 1 0 0 1 1 |
CONSTANT LBA_15_8,14 ; 000 1 0 1 0 0 |
CONSTANT LBA_23_16,15 ; 000 1 0 1 0 1 |
CONSTANT LD_LBA_27_24,16; 000 1 0 1 1 0 |
CONSTANT COMMAND,17 ; 000 1 0 1 1 1 |
CONSTANT CF_OFF,18 ; 000 1 1 0 0 0 |
; |
; READ IDE REGISTERS |
; NCE1/NCE0/ A2/ A1/ A0 |
CONSTANT A_STATUS,0E ; 000 0 1 1 1 0 |
CONSTANT STATUS,17 ; 000 1 0 1 1 1 |
|
;-- |
;-- WISHBONE INTERFACE PORTS - OUTPUTS |
;-- |
CONSTANT DATA_WB_OUT_7_0,04 |
CONSTANT DATA_WB_OUT_15_8,05 |
CONSTANT CONTROL_WB_OUT,06 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = |
; D1 = TAG0_WORD_AVAILABLE |
; D0 = ACK_CF_READER |
CONSTANT ACK_CF_READER,01 |
CONSTANT TAG0_WORD_AVAILABLE,02 |
;-- |
;-- BUS CONTROL SIGNALS |
;-- |
CONSTANT CONTROL_OUT,07 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = ERROR |
; D1 = WB_BUS_WRITE_ENABLE |
; D0 = IDE_BUS_WRITE_ENABLE |
CONSTANT IDE_BUS_WRITE_ENABLE,01 |
CONSTANT WB_BUS_WRITE_ENABLE,02 |
CONSTANT ERROR,04 |
|
;-- |
;-- INPUT PORTS |
;-- |
|
;-- |
;-- IDE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT DATA_IDE_IN_7_0,00 |
CONSTANT DATA_IDE_IN_15_8,01 |
|
;-- |
;-- WISHBONE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT CONTROL_WB_IN,02 |
; D7 = |
; D6 = |
; D5 = |
; D4 = WB_A0 |
; D3 = - |
; D2 = W_WE |
; D1 = TAG1_WORD_REQUEST |
; D0 = STROBE_CF_READER |
; |
; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0 |
CONSTANT WRITE_LBA_15_0,05 |
; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1 |
CONSTANT WRITE_LBA_27_16,15 |
CONSTANT STROBE_CF_READER_AND_RD,01 |
CONSTANT TAG1_WORD_REQUEST,02 |
CONSTANT W_WE,04 |
|
|
;-- |
;-- WISHBONE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT DATA_WB_IN_7_0,03 |
CONSTANT DATA_WB_IN_15_8,04 |
|
;-- |
;-- REGISTERS INITIALIZATION |
;-- |
initialization: |
; |
; BUS CONTROL : WRITE NOT ENABLE |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
; |
; WISHBONE BUS INITIALIZATION |
; |
LOAD sF,00 |
OUTPUT sF,DATA_WB_OUT_7_0 |
OUTPUT sF,DATA_WB_OUT_15_8 |
OUTPUT sF,CONTROL_WB_OUT |
; |
; IDE BUS INITIALIZATION |
; |
LOAD sF,00 |
OUTPUT sF,DATA_IDE_OUT_7_0 |
OUTPUT sF,DATA_IDE_OUT_15_8 |
LOAD sF,18 |
OUTPUT sF,IDE_ADDRESS_OUT |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 210NS*31 (RESET DELAY) |
; |
LOAD s5,00 |
LOAD s6,00 |
LOAD sF,FF |
CALL wait_loop |
CALL soft_reset |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
|
main: |
; |
; CHECK WISHBONE BUS |
; |
; wait state for stb_i deassertion |
;LOAD sF,01 |
;CALL wait_loop |
AND sF,sF |
AND sF,sF |
AND sF,sF |
AND sF,sF |
INPUT s3,CONTROL_WB_IN |
; |
; CHECK STROBE & READ |
; |
LOAD sF,s3 |
SUB sF,WRITE_LBA_15_0 |
JUMP Z,store_lba_15_0 |
LOAD sF,s3 |
SUB sF,WRITE_LBA_27_16 |
JUMP Z,store_lba_27_16 |
LOAD sF,s3 |
SUB sF,STROBE_CF_READER_AND_RD |
JUMP Z,put_data_in_wb_bus |
; |
; IF NOT READ REQUEST MAINTAIN SIGNAL |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
OUTPUT sF,CONTROL_WB_OUT |
JUMP main |
|
store_lba_15_0: |
; DATA_WB_IN_7_0 -> s7 LBA_7_0 |
INPUT s7,DATA_WB_IN_7_0 |
; DATA_WB_IN_15_8 -> s8 LBA_15_8 |
INPUT s8,DATA_WB_IN_15_8 |
; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0 |
LOAD sF,00 |
AND s5,sF |
JUMP wishbone_ack |
|
store_lba_27_16: |
; DATA_WB_IN_7_0 -> s9 LBA_23_16 |
INPUT s9,DATA_WB_IN_7_0 |
; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24 |
INPUT sA,DATA_WB_IN_15_8 |
; SECTOR AVAILABLE -> 0 |
; antes 020503 LOAD sF,FE |
LOAD sF,00 |
AND s5,sF |
|
JUMP wishbone_ack |
do_reset_and_retry: |
CALL soft_reset |
LOAD s5,00 |
put_data_in_wb_bus: |
CALL read_word_from_cf |
; check for error |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
JUMP NZ,do_reset_and_retry |
OUTPUT sB,DATA_WB_OUT_7_0 |
OUTPUT sC,DATA_WB_OUT_15_8 |
; |
; ENABLE WB ENABLE |
; |
LOAD sF,WB_BUS_WRITE_ENABLE |
OUTPUT sF,CONTROL_OUT |
wishbone_ack: |
; |
; WISHBONE ACK |
; |
LOAD sF,ACK_CF_READER |
OUTPUT sF,CONTROL_WB_OUT |
; null - wait state |
; |
AND sF,sF |
AND sF,sF |
AND sF,sF |
AND sF,sF |
; WISHBONE MASTER MUST CHECK ACK SIGNAL |
; IN THE RISING EDGE OF THE CLOCK AND DEASSERT |
; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_WB_OUT |
;OUTPUT sF,CONTROL_OUT |
|
JUMP main |
|
wait_loop: |
; |
; SOFTWARE DELAY LOOP |
; TAKES SLOW LOOP VALUE FROM sF |
; |
; TWO CYCLES PER INSTRUCTION |
; |
; SLOW LOOP 3 INSTRUCTIONS * sF |
; FAST LOOP 2 INSTRUCTIONS * DELAY1 |
; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns |
LOAD s1,sF |
slow_loop: |
LOAD s0,DELAY1 |
fast_loop: |
SUB s0,01 |
JUMP NZ,fast_loop |
SUB s1,01 |
JUMP NZ,slow_loop |
RETURN |
|
write_ide_register: |
; |
; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT |
; |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; DATA OUT IDE |
; |
OUTPUT sD,DATA_IDE_OUT_7_0 |
OUTPUT sE,DATA_IDE_OUT_15_8 |
; |
; DATA OUT BUS ENABLE |
; |
LOAD sF,IDE_BUS_WRITE_ENABLE |
OUTPUT sF,CONTROL_OUT |
; |
; WAIT FOR 70 NS (MIN) |
; (120ns/50Mhz) |
LOAD sF,01 |
CALL wait_loop |
; |
; WRITE STROBE ON |
; |
LOAD sF,NIOWR |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 165NS (MIN) |
; (240ns/50Mhz) |
; 020503 |
LOAD sF,02 |
CALL wait_loop |
; |
; WRITE STROBE OFF |
; |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 20NS (MIN) |
; (410ns/50Mhz) |
; 020503 |
;LOAD sF,01 |
;CALL wait_loop |
; |
; CE AND ADRESSES OFF |
; |
LOAD sF,CF_OFF |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary) |
; (put again 020503) |
LOAD sF,01 |
CALL wait_loop |
; |
; DATA OUT BUS DISABLE |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
; |
; (put again 020503) |
LOAD sF,02 |
CALL wait_loop |
RETURN |
|
read_ide_register: |
; |
; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT |
; |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 70 NS (MIN) |
; |
LOAD sF,01 |
CALL wait_loop |
; |
; READ STROBE ON |
; reset control_out (140503) |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
LOAD sF,NIORD |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 165NS (MIN) |
; |
LOAD sF,02 |
CALL wait_loop |
; |
; TAKE DE DATA FROM IDE BUS |
; |
INPUT sB,DATA_IDE_IN_7_0 |
INPUT sC,DATA_IDE_IN_15_8 |
; |
; READ STROBE OFF |
; |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 20NS (MIN) |
; |
;LOAD sF,01 |
;CALL wait_loop |
; |
; CE AND ADRESSES OFF |
; |
LOAD sF,CF_OFF |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 20NS (MIN) |
; (120ns/50mhz) |
;LOAD sF,01 |
;CALL wait_loop |
RETURN |
|
|
read_sector: |
; |
; WRITE ATA COMMANDS TO THE CF |
; |
; |
; IDE FEATURE REGISTER |
; |
LOAD sD,WRITE_SEC_FEATURE |
LOAD sF,FEATURE |
CALL write_ide_register |
; |
; IDE SECTOR COUNT REGISTER |
; |
LOAD sD,01 |
LOAD sF,SECTOR_COUNT |
CALL write_ide_register |
; |
; IDE LBA_7_0 |
; |
LOAD sD,s7 |
LOAD sF,LBA_7_0 |
CALL write_ide_register |
; |
; IDE LBA_15_8 |
; |
LOAD sD,s8 |
LOAD sF,LBA_15_8 |
CALL write_ide_register |
; |
; IDE LBA_23_16 |
; |
LOAD sD,s9 |
LOAD sF,LBA_23_16 |
CALL write_ide_register |
|
; |
; IDE LD_LBA_27_24 |
; |
; LBA_27_42 OR WITH 1110 |
; BIT7 : 1 |
; BIT6 : LBA=1 |
; BIT5 : 1 |
; BIT4 : DRV=0 |
; |
; |
LOAD sF,sA |
OR sF,E0 |
LOAD sD,sF |
LOAD sF,LD_LBA_27_24 |
CALL write_ide_register |
; |
; IDE READ SECTOR COMMAND |
; |
LOAD sD,READ_SECTOR_COMMAND |
LOAD sF,COMMAND |
CALL write_ide_register |
; |
; PUT SECTOR ALLOWED FLAG INTO MY_STATUS |
; |
; 290103 Added data available check |
retry_status_check: |
CALL cf_status_check |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
LOAD sF,DATA_TRANSFER_ALLOWED |
AND sF,s5 |
; LOOPS UNTIL SECTOR DATA IS AVAILABLE |
JUMP Z,retry_status_check |
LOAD sF,SECTOR_AVAILABLE |
OR s5,sF |
; |
; RESET WORDS READ REGISTER |
; |
LOAD s6,FF |
RETURN |
|
read_word_from_cf: |
; |
; CHECK IF THE SECTOR IS AVAILABLE |
; |
LOAD sF,SECTOR_AVAILABLE |
AND sF,s5 |
; |
; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR |
; |
CALL Z,read_new_sector |
; check for error |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
;retry_status_check: |
;CALL cf_status_check |
; |
; CHECK IF DATA IS AVAILABLE |
; |
; 120103 - changed . When there is sector |
; available in the cf ram buffer it is not |
; necessary to check neither bsy or drq |
; only read words with the correct timing paramenters |
; |
;LOAD sF,DATA_TRANSFER_ALLOWED |
;AND sF,s5 |
; LOOPS UNTIL SECTOR DATA IS AVAILABLE |
;JUMP Z,retry_status_check |
; end 120103 |
; |
; IF 256 WORD READ -> SECTOR AVAILABLE=0 |
; |
CALL read_word |
AND s6,s6 |
JUMP Z,reset_word_READ |
; |
; DECREMENT NUMBER OF WORDS READ |
; |
SUB s6,01 |
RETURN |
|
reset_word_READ: |
; |
; IF 256 WORD READ -> SECTOR AVAILABLE=0 |
; |
;ADD s7,01 |
LOAD s6,FF |
LOAD sF,FE |
AND s5,sF |
RETURN |
|
|
read_word: |
; |
; READ WORDS FROM IDE DATA REGISTERS |
; |
LOAD sF,DATA |
CALL read_ide_register |
; |
; DATA ARE IN sB , sC |
; |
; DATA AVAILABLE SIGNAL IS STORED |
LOAD sF,TAG0_WORD_AVAILABLE |
OUTPUT sF,CONTROL_WB_OUT |
RETURN |
dummy_word_read: |
CALL read_word |
SUB s6,01 |
read_new_sector: |
CALL cf_status_check |
LOAD sF,s5 |
AND sF,DATA_TRANSFER_ALLOWED |
;loops until previous non READ words are READ |
JUMP NZ,dummy_word_read |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
LOAD sF,s5 |
AND sF,COMMAND_ALLOWED |
; loops until commands are allowed |
LOAD s6,FF |
JUMP Z,read_new_sector |
JUMP read_sector |
|
cf_status_check: |
; |
; CF STATUS REGISTER READ |
; |
LOAD sF,STATUS |
CALL read_ide_register |
; |
; ERROR |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 0 0 0 0 0 0 0 1 |
; ERR-ST X X X X X X X 1 |
; AND 0 0 0 0 0 0 0 1 |
LOAD sF,01 |
AND sF,sB |
JUMP NZ,put_error_code |
|
; |
; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1) |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 1 1 0 0 1 0 0 1 |
; DRQ-ST 0 1 X X 1 X X 0 |
; AND 0 1 0 0 1 0 0 0 |
LOAD sF,C9 |
AND sF,sB |
SUB sF,48 |
JUMP Z,put_data_request_allowed |
|
; |
; COMMAND ALLOWED MASK (READY=1 : BUSY=0) |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 1 1 0 0 0 0 0 1 |
; CMD-ST 0 1 X X 0 X X 0 |
; AND 0 1 0 0 0 0 0 0 |
LOAD sF,C1 |
AND sF,sB |
SUB sF,40 |
JUMP Z,put_command_allowed |
|
; |
; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0 |
; |
;JUMP put_error_code |
; REVISAR ??? |
;AND s5,01 |
RETURN |
|
|
put_error_code: |
; |
; ERROR SIGNAL |
; |
; PUT ERROR CODE |
; |
LOAD sF,04 |
OUTPUT sF,CONTROL_OUT |
CALL soft_reset |
LOAD s5,ERROR_MY_STATUS |
RETURN |
;JUMP initialization (STACK OVERFLOW???) |
|
soft_reset: |
LOAD sD,SOFT_RESET |
LOAD sF,CONTROL |
CALL write_ide_register |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sD,00 |
LOAD sF,CONTROL |
CALL write_ide_register |
RETURN |
|
put_data_request_allowed: |
; |
; DRQ ALLOW -> MY STATUS REGISTER |
; |
AND s5,FD |
LOAD sF,DATA_TRANSFER_ALLOWED |
OR s5,sF |
RETURN |
|
put_command_allowed: |
; |
; DRQ ALLOW -> MY STATUS REGISTER |
; |
AND s5,FB |
LOAD sF,COMMAND_ALLOWED |
OR s5,sF |
RETURN |
|
ADDRESS FF |
|
interrupt: |
RETURNI ENABLE |
/compile/CFREADER.COE
0,0 → 1,44
component_name=cfreader; |
width_a=16; |
depth_a=256; |
configuration_port_a=read_only; |
port_a_enable_pin=false; |
port_a_handshaking_pins=false; |
port_a_register_inputs=false; |
port_a_init_pin=false; |
port_a_init_value=0000; |
port_a_additional_output_pipe_stages = 0; |
port_a_register_inputs = false; |
port_a_active_clock_edge = Rising_Edge_Triggered; |
width_b=16; |
depth_b=256; |
configuration_port_b=read_and_write; |
write_mode_port_b=read_after_write; |
port_b_enable_pin=false; |
port_b_handshaking_pins=false; |
port_b_register_inputs=false; |
port_b_init_pin=false; |
port_b_init_value=0000; |
port_b_additional_output_pipe_stages = 0; |
port_b_register_inputs = false; |
port_b_active_clock_edge = Rising_Edge_Triggered; |
port_b_write_enable_polarity = Active_High; |
memory_initialization_radix=16; |
global_init_value=0000; |
memory_initialization_vector= |
0F00, EF07, 0F00, EF04, EF05, EF06, 0F00, EF00, EF01, 0F18, EF03, 0FFF, EF02, 0500, 0600, 0FFF, |
8347, 83CB, 0FFF, 8347, 0FFF, 8347, 0FFF, 8347, CFF1, CFF1, CFF1, CFF1, A302, CF30, 6F05, 912A, |
CF30, 6F15, 912F, CF30, 6F01, 9136, 0F00, EF07, EF06, 8118, A703, A804, 0F00, C5F1, 813E, A903, |
AA04, 0F00, C5F1, 813E, 83CB, 0500, 8396, CF50, 1F08, 9534, EB04, EC05, 0F02, EF07, 0F01, EF06, |
CFF1, CFF1, CFF1, CFF1, 0F00, EF06, 8118, C1F0, 0003, 6001, 9549, 6101, 9548, 8080, EF03, ED00, |
EE01, 0F01, EF07, 0F01, 8347, 0FFD, EF02, 0F02, 8347, 0FFF, EF02, 0F18, EF03, 0F01, 8347, 0F00, |
EF07, 0F02, 8347, 8080, EF03, 0F01, 8347, 0F00, EF07, 0FFE, EF02, 0F02, 8347, AB00, AC01, 0FFF, |
EF02, 0F18, EF03, 8080, 0D00, 0F11, 834E, 0D01, 0F12, 834E, CD70, 0F13, 834E, CD80, 0F14, 834E, |
CD90, 0F15, 834E, CFA0, 2FE0, CDF0, 0F16, 834E, 0D20, 0F17, 834E, 83B8, CF50, 1F08, 9480, 0F04, |
CF51, 918B, 0F01, C5F2, 06FF, 8080, 0F01, CF51, 93AC, CF50, 1F08, 9480, 83A5, C661, 91A1, 6601, |
8080, 06FF, 0FFE, C5F1, 8080, 0F10, 8364, 0F02, EF06, 8080, 83A5, 6601, 83B8, CF50, 1F04, 95AA, |
CF50, 1F08, 9480, CF50, 1F02, 06FF, 91AC, 8174, 0F17, 8364, 0F01, CFB1, 95C6, 0FC9, CFB1, 6F48, |
91DA, 0FC1, CFB1, 6F40, 91DE, 8080, 0F04, EF07, 83CB, 0508, 8080, 0D04, 0F0E, 834E, 0FFF, 8347, |
0FFF, 8347, 0FFF, 8347, 0FFF, 8347, 0D00, 0F0E, 834E, 8080, 15FD, 0F04, C5F2, 8080, 15FB, 0F02, |
C5F2, 8080, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, |
0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 80F0; |
/compile/LABELS.TXT
0,0 → 1,27
Table of addresses and their specified labels. |
|
00 inicialization |
18 main |
2A store_lba_15_0 |
2F store_lba_27_16 |
34 do_reset_and_retry |
36 put_data_in_wb_bus |
3E wishbone_ack |
47 wait_loop |
48 slow_loop |
49 fast_loop |
4E write_ide_register |
64 read_ide_register |
74 read_sector |
8B retry_status_check |
96 read_word_from_cf |
A1 reset_word_READ |
A5 read_word |
AA dummy_word_read |
AC read_new_sector |
B8 cf_status_check |
C6 put_error_code |
CB soft_reset |
DA put_data_request_allowed |
DE put_command_allowed |
FF interrupt |
/compile/netlist.lst
0,0 → 1,2
C:\cf_rd\sources\cfreader\280503~1\cfreader.edn 1053534305 |
OK |
/compile/kcpsm.ngc
0,0 → 1,3
XILINX-XDB 0.1 STUB 0.1 ASCII |
XILINX-XDM V1.1e |
$35676<i{~ce`k{ib]dvjswWhxbxecjtha\|jt3:91j~yffmdvjgZaug|zTmg{hlgwmfYk}}::46b`gha\cwirxVfdkdmnl^nvp2473hf~Skgaam]nq}YrxyoyS~kcebvjkk:66820egit^eqkpvX{acmxRga_ckw5<=eizchSnaatsmo[qi`oeoTjaa5:pfw`r6i2kohk|s^alqkrbzVgdzhQhrnws1>bwzh:;7<84fmcdwZefz{sThbjcu]oqq473hxddcjtha\cwirxVkyeyfbeuk`[}iu=;:0mzgilgwmfY`zf{Sl|ftiofpleXd|~:=o5|t`ah[hcjg{sTyolk^pbiZdn|9;27~zncj]`kkrugeU{|Rjjcnff[d473hf~Skgaam]nq}Ykg~oyS~kcebvjkk:26830egit^eqkpvXe|rTcxzuu>0:d=nfVzd~y2<>0`8mkrbz{{xRi}otr\efrn~lUm`b~=6:cg`wct{Vidyczjr^qfh`esmmUgcljPv`nva949=2n{~l?=0:cqpmojm}chSj|`uq]bvlroel~boRbzt303?dts``gnxdmPgsmvtZgua}bfiygl_ymq24d<{}khgRcjmnpz[vrfkbUym`Qmiu320>`kinyTicomld3b[fguzpk0|b|{_hf?6;c<{pUyijg|tdp?7;7>3z~jofQloovqkiYwxVnnobjj_cc8TLHXJ\YBHUm4aefqavu;?3:596jr`014>gu|acfiygl_fplquYfz`~cahzfc^nvp6473hxddcjtha\cwirxVkyeyfbeuk`[}iu?8h0yolk^ofijt~Wz~jofQ}al]amq46?2kyxegbeuk`[bth}yUTb=>?0308eabumzyTob{atdp\mkeXkfexRxnltg?2;3<lyxj??>4asvkmhcsajUl~b{_`pjpmkb|`iT`xz;1c9ppdelWdofcwPsuc`oZtfeVhbx>?j;`pwllkb|`iTkazp^abvwXg|~Tndz>f:cqpmojm}chSj|`uq]kei`Ximnxyo28>0d8ewroadoenQhrnws[cskdVkoh~{m<6<f?lht|{hxdaa<2<6?]beAm20~lc>6y3p65=fz}bbahzfc^eqkpvXi{cd`k{ib]oqq36j2ymnePmdolv|Yt|hi`Sob_ckw044<{}xdnh}PwskwaZ`kgy;j7d`{espvtqY`zf{Sh`Pa^ov|f582kgyRhfn`n\ip~X}yzn~R}jldawmjh;:7;h7d`{espvtqY`zf{Snottpf[cjhx8n0TDBFNY/[@G&7&8*XXXL/0/3#EVENA>1H^HO[EE3f?vrfkbUhccz}om]sqvnXg{U{c}Q{yqg25>oi{}x~oyg`n=36>58c3qi9<;"6bq2017b3z~jofQloovqkiYnfoyxRgatdpqqur582kyxegbeuk`[bth}yUj~dzgmdvjgZjr|?8;7lbz_gkmeiYj}qUgczk}_rgoafrngg6=2<74sikepZaug|zTaxvPotvsqq:368=0mzgilgwmfY`zf{SR`?011b?lhXxfx090>8:qkmcrXo{e~|R~fpdnjj`Yea};n7l|{hhofpleXo{e~|R~fpdnjj`Yea}::o6okdsgpwZeh}g~n~R``rlco[firf}8=7ljkrdqp[firf}oyS~kcebvf`ZjhimU}ma{j<2<;?GSTW@DMC<l4suc`oZkbefxrS~zncj]qehYea}?:h6okdsgpwZeh}g~n~Rgavdpw[`hfjeo:i6okdsgpwZeh}g~n~Rjjcnff[gYdqds=;5|t`ah[fii|{egS}~Pb^nvp76<i{~ce`k{ib]dvjswWhxbxecjtha\hpr09k1xxlmd_lgnkwX{}khgR|nm^`jp3703hxddcjtha\cwirxVUe<=>;e:qz[wc`az~n~1:1a:rlvqYnl595=h5nrujji`rnkVmycx~PphrfhlhbWkc=<l4suc`oZkbefxrS~zncj]qehYea}=:46gatdpqqurXo{e~|Rka_`]oqq3<f8><=<k4asvkmhcsajUl~b{_qksaioimVhbx?=4Xrv16>gcl{oxRm`uovfvZoikVidyczPv`nva919<2ZJ^Y?4Dd9jjvru}j~bcc2;>0g8ewroadoenQhrnws[uowmeceiRlft2a8QVCUW_CXEOBJ1e9b`atb{zUhcx`{es]okdbXagiTtb|?1b9b`atb{zUhcx`{es]gaficmVhT`xz>;D35?cjfozUgczk}_{gqkZkrpjs?7=??00`8wqgdcVidby|`l^tbhlbX|fUfc{k>2:doebuXmgki`h<Pfmms65=fd|Umecoc_lw{[pvwm{Uxiaklthmm8686n2cexh|}uqv\cwirxVcexh|}uqv\tpjtm8o0mzgilgwmfY`zf{S}gemkmaZdn|=;o7ljkrdqp[firf}oySaand^kmgZ~hz8;;7kbngr]fj4gXe|rhu<:4fmcdwZciikfn=oQlaspz65=fd|Umecoc_lw{[iipm{Uxiaklthmm828612ycekzPgsmvtZkrpVe~x}{{<4<2=>usijaTahc`rx]tvlrbWldjnak>2:nlcleXo{e~|RQa0123e>oiWyeyx1;11d9bvqnnel~boRi}otr\tlvbd`dnSog{559E*725>2kohk|s^alqkrbzVyn`hm{ee]okdbX~hf~i1:11e9b`atb{zUhcx`{es]okdbXagiTtb|=159pll`sWnxdy}Qbuy]oqq66?2ymnePmdolv|YuidUdyy2>>0:8mkrbz{{xRi}otr\akgedlUjm6~`ru]j`929m2yrSkhirvfv9399l1j~yffmdvjgZaug|zT|d~jlhlf[gos>>1GCJGLAM3g?dbczlyxSnaznugq[iiflVceoRv`r23a?djrWocemaQbuy]kmbnXe|rT`xz?159pll`sWnxdy}Qbuy]oqq76:2lgmj}Psy]ltZbbkfnn=55fnugqvpvsWnxdy}Qjn``oaZd6m2kyxegbeuk`[bth}yU{e}kciog\flr0:>1jhi|jsr]`kphsm{UbbnQco`f\rdjrmVij~w31?02?dbczlyxSnaznugq[lhdWeejhRxnltg?5;7c3hno~h}|_bmvjqcuWeejhRgac^zlv17e3hf~Skgaam]nq}YoanbTaxvPltv251=t``lSj|`uq]nq}Yk}}8:56gatdpqqurXo{e~|Rxnltg\hprb3`dxx{lthmm808612ycekzPgsmvtZvnxlfbbhQmiu2:?lhsm{x~|y?7;ccpmfYdgg~ycaQfnwgqpZjr|8n0mij}erq\gjsi|lxT`bok_hl`[}iu=8h0ma{PfhlbhZkrpVbbkeQbuy]oqq46<2ycekzPgsmvtZkrpVf~x><?;`nv[coiieUfyuQzpqgq[vckmj~bcc2;>3d8hjankVmycx~Pcnoamkgsg{cj`Rb`ghabhZvugjoxd`h<0<a?jssWyeyx1>1189pll`sWnxdy}QiqgomkcXj`~:=857:NWWTPR=imnyi~}37;2=0>jr|8;o7ljkrdqp[firf}oySnaadhvjkkYk}};o7ljkrdqp[firf}oySaand^kmgZ~hz?;i7lbz_gkmeiYj}qUcejfPmtz\hpr49=1xddh{_fplquYj}qUgyy:;;mww64?<{acmxRi}otr\ip~Xg|~{yy29>0`8wmoa|Vmycx~PlnufvZubdlieb`n;hl\tjts4?4:56}gigv\cwirxVzb|hbfnd]amq45>2kohk|s^alqkrbzVyn`hm{ee]okdbX~hf~i1;11e9b`atb{zUhcx`{es]okdbXagiTtb|8149ehdatWofjkRkaacnf[iss991m`li|_dl1fZe~e|r::6hcafq\gdtuqVymy{|_mww5g=fd|Umecoc_lw{[mo``Vg~tRbzt537?vnnn}Ul~b{_lw{[iss=8<0jaohs^nls`tXrlxdSno}rx34?vrfkbUfi`a}y^pbiZir|585m6~`ru]j`939m2yrSkhirvfv909901xddh{_fplquYwayogeckPbhv06>qb<2f~x><>;`fgv`utWje~byk}_bmvjqYtmeohxRczx102?dbczlyxSnaznugq[sgk}lUxiaklt^ov|5713z~jofQloovqkiYdiefT`xz>b:coqZ`nfhfTaxvPhhek[hsWe9<:4sikepZaug|zTaxvPltv565=fz}bbahzfc^eqkpvXkhxyuRgaptv\hpra3ofjk~Qkauc\~`th901xddh{_fplquYwayogeckPbhv762=flmxn~QlotlwawYnfjUgcljPv`nvaZefz{s7>3<7;`fgv`utWje~byk}_hl`[firf}U}ma{j_bcqv|:66;;0mij}erq\gjsi|lxTecmPlncg[sgk}l69295cuu615>gcl{oxRm`uovfvZeh}g~Thbjcu]nq}7592kohk|s^alqkrbzV|j`xkPsdnfgqYj}q;:i6okdsgpwZeh}g~n~Rm`uov\mkeXpfx;>=5ndepfwvYdg|diQlotlw[lhdWjky~t>>b:coqZ`nfhfTaxvPhhek[hsWe:<:4sikepZaug|zTaxvPltv451=adhmxSb~jr`vjkkYwayon7d`|tsw`plii4?4:56}gigv\cwirxVzb|hbfnd]amq323dsot<>;`fgv`utWje~byk}_bmvjqYtmeohxRczx302?dbczlyxSnaznugq[sgk}lUxiaklt^ov|77b3hno~h}|_bmvjqcuWje~byQfnb]{kw7582kohk|s^alqkrbzVidyczPioa\gdtuq8;i7lbz_gkmeiYj}qUcejfPmtz\hpr0:;1j~yffmdvjgZaug|zTmg{hlgwmfYdi{xr<<:4rdejwqcu{Vnnobjj_mww51=adhmxSckwt^xfvjYadhm9<6ocu^djjdjXe|rTy}~jr^qfh`esafd793<i;mmdmfY`zf{SnabbhlbpjtnieUgcjglam]svjeb{zcek1<1b:mvpZvhz}6:2<74sikepZaug|zT|d~jlhlf[gos>8<0mij}erq\gjsi|lxTSc>?033b?40=AGZ^X7gasupvgqohf5;>6=0=1:cg`wct{Vidyczjr^alqkrX{lfnoyQbuy115>gcl{oxRm`uovfvZpfd|oThbjcu]nq}56m2kohk|s^alqkrbzVidyczPioa\|jt5:91jhi|jsr]`kphsm{Uhcx`{_hl`[fguzp8?7L769068big`{Vfd{h|Pzdpl[iss:;1j~yffmdvjgZaug|zTmg{hlgwmfYdi{xr=<<4fmcdwZciikfn=Rhcoq3:?vnnn}Ul~b{_lw{[jssx|~7;3o4io]skwr;?7k0mij}erq?4;7>3zbbjyQhrnws[uowmeceiRlft6d8\akJiceyZh||inl12>gcl{oxRm`uovfvZubdliiiQco`f\rdjrm5<5>:5ndepfwvYdg|diQ|emg`p`bXkfexRxnltg?5;463hno~h}|_bmvjqcuWje~byQ|emg`pZkrp=8:7ljkrdqp[firf}oyS{ocud]paicd|Vg~t9?j;`fgv`utWje~byk}_bmvjqYnfjUsc==0:cg`wct{Vidyczjr^alqkrXagiTol|}y235?vrfkbUhccz}om]stZgXd|~97L6=2:cqpmojm}chSj|`uq]bvlroel~boRmnrs{155=t|{eii~Q}e`f\hpr6?2ymnePmdolv|YuidUdyy2<>d9p}Ztbo`yi28>`9skwrXam6=2?5f0328eabumzyTob{atdp\gjsi|VceoRmnrs{764=flmxn~QlotlwawYdg|dS~kcebv\ip~2:81jhi|jsr]`kphsm{U}ma{j_rgoafrXe|r>86KL2101?dts``gnxdmPgsmvtZgua}bfiygl_bcqv|56;2ymnePmdolv|YXf9:;<o5}e`f\wqthjl8<7ljkrdqp[firf}oySd`l_mmb`Zpfd|oTol|}y=1=6==flmxn~QlotlwawYnfjUhcx`{_wcoq`Ydi{xr0?0=1:cg`wct{Vidyczjr^kmgZjhimU}ma{j<2<22>gcl{oxRm`uovfvZYi89:>=;5ndepfwvYdg|diQPn1224f=nfVzd~y28:1<2a>gcl{oxRm`uovfvZeh}g~TecmPxnp76>o6;2y{c<l4amw\gjhszffThbjcu]nq}Yk}}:9<6okdsgpwZeh}g~n~Rm`uov\mkeXkhxyu8?j;`fgv`utWje~byk}_bmvjqYnfjUsc;=1:cg`wct{Vidyczjr^tbhpcX{lfnoyQbuy415>gcl{oxRm`uovfvZeh}g~Thbjcu]nq}06<2lgmj}PuqrfvZ|bzfUgyy<=;`pwllkb|`iTkazp^cqmqnjm}chSno}rx62f>gk}Vidby|`l^qfh`esWdsSa{{1d9jjvru}j~bcc28>39j67=5N8i0mij}erq\gjsi|lxThhm`dd]b[iss:91jhi|jsr]`kphsm{Uhcx`{_hl`[fguzp<:i6okdsgpwZeh}g~n~Rm`uov\mkeXpfx=><5ndepfwvYdg|diQyamwf[vckmj~Taxv8209b`atb{zUhcx`{es]`kphsWzoginzPmtz467=fz}bbahzfc^eqkpvXi{cd`k{ib]`ewt~=8h0ma{PcnlwvjjX{lfnoyQbuy]oqq4692y~bljs^uqmqcXd|~?7=>70328eisXn`dj`Rczx^wst`tX{lfnoyg`n=4=51=fd|Umecoc_lw{[Zh789:9j6b`gha\cwirxVidaogaaumqmdjXdfmbolbPpsm`avunfn682h5nlt]`kkruge6;2o5`uu]skwr;:7;m7~zncj]`kkrugeU{|Rjjcnff[dYdi{xr=;5ndepfwvYdg|diQPn12267=n;8o0mij}erq\gjsi|lxTob{at^kmgZ~hz>90ecx>7:coqZ`nfhfTaxvPsdn2[uowmo1bb~z}ubvjkk:687k0mij}erq?5;403hno~h}|_bmvjqcuWzoginzjd^alqkrX~hf~i1<1279b`atb{zUhcx`{es]paicd|lnT`bok_wcoq`:068<0mij}erq\gjsi|lxTSc>?1201?dts``gnxdmPgsmvtZgua}bfiygl_bcqv|0602ycekzPgsmvtZnnoaUfyuQcuu3g?vnnn}Ul~b{_bcqv|Yh}}UfyuQcuu01?dts``gnxdmPgsmvtZgua}bfiygl_bcqv|16?2ymnePmdolv|YuidUdyy2;>`9skwrXam6<2i5nlt]qavsk|5:5=55nlt]emkgkWdsSikloeg\hpr6j2ymnePcnlwvjjX`hfmSnaznu>2:42<ieTjd`nl^ov|ZYi89:8>55ndepfwvYdg|diQfnb]`kphsWkgyhQlaspz8685?2kohk|s^alqkrbzVceoRb`ae]ueisbWjky~t2;>048eabumzyTob{atdp\[k679<8:7ljkrdqp[firf}oySd`l_mmb`Zpfd|o783k4ioqwvpesafd743:499235d=nf}oy~x~{_fplquYbfVhTotczx328eisXn`dj`Rczx^wst`tX{lfnoyg`n=5=6c=kgnchSj|`uq]`khdnfh~d~doc_mmdmfgkWyxdoh}|ioe?0;473`di|zpu]dvjswW`dSh`nbmg\rdjrm830nl}fc^aljqthdVddxRzPsucwag=h}}U{cz33?3g?dts``gnxdmPgsmvtZvnxlfbbhQmiug8eisXkfd~bb31?3`?vrfkbUhccz}om]`kphsWjky~t2>>39om0=j}ql>56M@MLKWP@B602kgyRhfn`n\ip~Xn`dj`Rczx102?dts``gnxdmPgsmvtZefz{sTcxzuu]oqq7e3zbbjyQhrnws[pvwm{Uxiaklthmmb>oi{}x~oyg`n=32:d=flmxn~2=>358eabumzyTob{atdp\w`jbk}ooSnaznu]ueisb4:4:8665IORVP?oiWyeyx1950?3g?dbczlyxSnaznugq[wc`az~n~Rlft13;?djrWocemaQbuy]emkgkWds=<m4rdejwqcu{VnjxlQ}efkpp`tXj`~;=:5|t`ah[hcjg{sT~lcPotv?1;7b3fzn~l`k_rgoafrXkfdxxl`{_r{\w`jc3hf~Sk|umv?5;7f3hno~h}|_bmvjqcuWgeSh`nbmg0?avh9m1jhi|jsr]`kphsm{Uyijg|tdp\flr6911j`xQiioco[hsWocemaQbuy02g>tbo`yi}Pd`vb[wc`az~n~Rlft03a?vrfkbUhccz}om]kei`Xkfex1<1149ehdatWgosxRmnrs{\big`9k1xxlmd_bmmpwikW{ole~zjr^`jp54?3hno~h}|_bmvjqcuW`dhSnaznu]ueisbWjky~t2;>358eabumzyTob{atdp\mkeXdfkoS{ocud]`ewt~4<49=6okdsgpwZeh}g~n~Rgac^nleaYqien0806;HLJPVRF\L;o7ljkrdqp[firf}oySkhirvfvZdn|;;37lbz_gkmeiYj}qUmecoc_lw{77=B88=0c}k}aof\w`jbk}UfyuQcuu22=>oi|lxyy}zPgsmvtZvrdzoT`xzj;gnbcvYbfhhgi<o>9:`bwleXkfd~bbPddnb}Z`kgy;n7d`|tsw`plii4049<6gatdpqqurXo{e~|R}gaemt[cugVlgc}?m;rvbgnYdgg~ycaQ}efkpp`tXj`~:86HKRD3`?wc`az~n~~Qkauc\v`an{}oySog{20f8eabumzyTob{atdp\v`an{}oySog{30:8wqgdcVidby|`l^gm[gYdqds=55|t`ah[fii|{egS}~Pa^ov|f3398;<<94oqgqekbX{lfnoyQbuy]oqq76k2xnkd}{esq\`drfW{ole~zjr^`jp64<IL;h7~zncj]`kkrugeUhcx`{_bcqv|:56l1m`li|_dlbfic6j;l0`bifc^eqkpvXkfgieco{oskbhZjho`ij`R~}obgpwlh`4<4:n6}{abi\gjhszffT~hifsugq[gos:l1j`xQloovqki:56k1dyyQosv?0;7>3kkxenQloovqkiYcmekrSkb`p378ofvte820ma{PfhlbhZkrpVlbblbPmtz73>~t|V|ho<j4aefqavuXkfexh|PrdejwqcuWkc8<;4fmcdwZ|bzfUxiaklt^nvp`=adhmxSh`=b^nvp46<neklRka1c]`}hs911j`xQiioco[hsWocemaQbuy71?2>6?2e{ioad^qfh`esWdsSa{{20a8v`an{}oyRjnt`]qabot|lxTndz;1g9bvqnnel~boRi}otr\gdtuqVicmd`31?3a?vrfkbUhccz}om]qabot|lxTndz<f:kmwqtrk}cdb1?=>`9b`atb{z682?94aefqavuXkfexh|PsdnfgqccWje~byQyamwf81803qySj`k1e9b`atb{zUhcx`{es]qabot|lxTndz:179ehdatW|z{iQuesm\g|krp820ma{PfhlbhZkrpVlbblbPmtz552=hxlxjbiQ|emg`pZkrpVf~x>?l;sgdmvrbzzUomyoPrdejwqcuWkc9<94suc`oZkbefxrSob_nww838c3hf~Sk|umv?6;2<>L2J=i5ndepfwvYdg|diQ}efkpp`tXj`~==55nlt]emkgkWdsSkgaam]nq}16k2xnkd}{esq\`drfW{ole~zjr^`jp32<IKKJ=k5nrujji`rnkVmycx~Ph`ne[dbc{|h7=3?i;`pwllkb|`iTkazp^dvhiYflmy~n1?11e9jjqcuz|zSj|`uq]vtagsmVoemobj1c9ppdelWjeexac_icobZeh}g~7?3<>;`fgv`utWje~byk}_hl`[iiflV|j`xk36?0;?dbczlyxSnaznugq[lhdWje~byQyamwf[fguzp6>2?94aefqavuXkfexh|Pioa\hjgcWkgyhQlaspz8386?2e{ioad^qfh`esWdsSa{{439F04b<imnyi~}Pcnwmp`tXzlmbyk}_ckw341<gyoymcjPsdnfgqYj}qUgyy;>c:pfclusm{yThlzn_sgdmvrbzVhbx:k4fmcdwZciikfn>l?n;rvbgnYjmdeyuRgavdpw[`hfjeo:;6aescm`ZubdliS`{w_mww2`=adhmxSh`nbmg1f7`<dfmboRi}otr\gjkeagkcgnl^nlclefdVzycnk|shld838e3fS}a}t=7=5g=t|hi`Snaatsmo[kc|Vidycz31?38g7=A:8=0c}k}aof\w`jbk}UfyuQcuu52b>gu|acfiygl_fplquYdi{xrSnfnio>1:c=nfz~yynzfoo>27;g<imnyi~}34?04?dbczlyxSnaznugq[vckmj~nhRm`uov\rdjrm5?5=6j>7:qwefmXelgd~tQ}al]lqq:06m1j`xQ}erwop959:;1jhi|jsr]`kphsm{UbbnQlotlw[sgk}l6:285wosaz5c=fz}bbahzfc^eqkpvX`hfmSljkst`?6;7a3hxddcjtha\cwirxVl~`aQndeqvf949901yijg|tdpp[wc`az~n~Rkaacnf64=nf}oy~x~{_fplquYt`hnd{Rmnrs{\biiw:11jhi|jsr]`kphsm{UbbnQlotlw[sgk}lUhm|v<7<15>gcl{oxRm`uovfvZoikVfdmiQyamwf82833;:;<<m4suc`oZehf}xd`Rxnlhf\ijpbWe>679119ehdatW|z{iQuesmg?jssWyeyx1950?38c6=ALL>09L=L4:D7F5723zbbjyQhrnws[coiieUfyu?8;rjjbqY`zf{Saax_lw{[iss9k1xxlmd_bmmpwikWgosxRm`uov?6;473hf~Skgaam]nq}Ykg~oyS~kcebvjkk:66880egit^eqkpvXWg:;<?<i;mmdmfY`zf{SnabbhlbpjtnieUgcjglam]svjeb{zcek191b:mvpZvhz}6=2n5osv\ma:0294::665OTVSQQ<h}}U{cz37;2=6>eb9l1jhi|jsr]`kphsm{Uoinake^c\ip~dq81b86??013e?dts``gnxdmPgsmvtZefz{sToeofn=1=b>oi{}x~oyg`n=37:d=flmxn~2:>0;8hjankVmycx~PphrfhlhbWkc<<<4fmcd[fiil`~bccQbeu48WJSUKL8<7ljkrdqp[firf}oyS~kcebvf`Zeh}g~Tzlbze=4=6>g7m2lgmj}Peo3a[iss9h1j`xQiioco[hsWee|S`{w_mww442<neklRkaacnf6dYdi{xr=55nlt]emkgkWdsS~kc0c]smuc6:2y~bljs^pfeaYb~ld=45cofk`[bth}yU{e}kciog\flr6l2kgyR|jstnw81843jf`>?5ndepfwvYdg|diQfnb]`kphsWkgyh2=>39b54g<ieTjd`nl^ov|ZjhVg~tRbzt0685132901j`xQiioco[hsWmohcikPsdn25c=fz}bbahzfc^eqkpvX`hfmSljkst`?7;7a3hxddcjtha\cwirxVl~`aQndeqvf959901gcjgl_fplquYwayogeckPbhv16>g5<2L;<??n;`nv[coiieUfyuQcov]nq}Yk}}8:56b`gha\cwirxVzb|hbfnd]amq5a3QnfAd``rWgqwlii:=1jhi|jsr]`kphsm{Ubbn|jmdlw[iiflV|j`xk=;bk1?d5339:;<<h4aefqavuXkfexh|Plncg[lhdWjky~t>;;12351=68OL:m6ocu^djjdjXe|rT`byPmtz\hpr4:91j`xQiioco[hsWee|iQ|emg`plii4;49?6o}tiknaqodWnxdy}Qboekem`bXkhxyuRazt`9jjZvhz}6;2o5`uu]skwr;?7;27aahib]dvjswWyc{iagae^`jp17e3z~jofQloovqkiYimq~Tob{at=1=56=adhmxSb~jr`vjkkYk}};m7ljkrdqp[firf}oySaand^kmgZefz{s:i6hcafq\ak4fWe=l5nlt]emkgkWdsSaax_lw{[iss<890y|`bdq\mjYsqyoT`xz>d:cqpmojm}chSj|`uq]`ewt~W`dTndz>f:cqpmojm}chSj|`uq]`ewt~Wjbjec2;>0a8wqgdcVgnab|v_rvbgnYuidUm`b~?f:kmwqtrk}cdb1?:>`9b`atb{z6=2<;4fmcdwZefz{sTjaoh_gnlt`=tqVxnkd}{es>3:4?<dfmboRi}otr\tlvbd`dnSog{5358eabumzyTob{atdp\w`jbk}ooSnaznu]ueisb4>4:j6okdsgpwZeh}g~n~Rb`ae]jjfYdi{xr><o4suc`oZehf}xd`Rm`uov\ip~dq9;j7lbz_gkmeiYj}qUgczQbuy]oqq3612e{ioad^qfh`esWmohcikPltv2f>oi|lxyy}zPgsmvtZciikfnSkb`p0a8wqgdcVgnab|v_rvbgnYuidUm`b~>d:coqZtb{|f080>9:nlcleXo{e~|R~fpdnjj`Yea}<9>6okdsgpwZeh}g~n~Rgac^alqkrX~hf~i1=11:m2b>gcl{oxRm`uovfvZjhimUbbnQlaspz70=AL[YN=l5|t`ah[fii|{egSnaznu]nq}e~98k0ma{PfhlbhZkrpVfd{Rczx^nvp35<^JI:=6hcafq\big`Wldjnak>2:doebuXkhxyuR}{auwp50=t``lSj|`uq]`ewt~Wkc=k5nrujji`rnkVmycx~Ph`ne[dbc{|h783?i;`pwllkb|`iTkazp^dvhiYflmy~n1:11b9ppdelWdofcwPsuc`oZtfeVlgc}<j;hlppwsd|`ee0=0>9:nlcleXo{e~|R~fpdnjj`Yea}=:i6okdsgpwZeh}g~n~Rjjcnff[dYdi{xr46|nm04{5a7<x8l0mij}erq\gjsi|lxT`bok_hl`[fguzp>:m6}{abi\gjhszffTob{at^ov|f59h1j`xQiioco[hsWee|S`{w_mww34e<{}khgRcjmnpz[vrfkbUym`Qilnr05>w692y~bljs^pfeaYadfz97ig>;018CKB6n2kohk|s^alqkrbzVfdmiQfnb]`ewt~=820yolk^aljqthdVidyczPxnp365=fd|Umecoc_lw{[iipm{Uxiaklthmm868612ycekzPgsmvtZkrpVe~x}{{<0<e?vrugkoxSdaPtxrf5f=t|hi`S`kbos{\wqgdcVxjaRhcoq6b?lhXxfx0<0>7:qwefmXkfd~bbPc`no[qwm81y=k5ndepfwvYdg|diQco`f\mkeXkhxyu;?7;rvbgnYdgg~ycaQlotlw[}iu98:0jaohs^gm6dYj}qir=95il`ep[`hfjeo9nRmnrs{2b>gu|acfiygl_fplquYdi{xrSnfnio>6:4e<{}khgRcjmnpz[vrfkbUym`Qilnr6e>vhz}Ubh1>1a:cg`wct{5=5i6}v_sgdmvrbz5;5=6}>8:qwefmXkfd~bbPcnwmpZ~hz;;37aahib]dvjswWeelenoc_mww44=3911bbyk}rtrw[bth}yUnbRlPltv24>`kinyT`byjr^xfvj7d3z~jofQbelmq}ZusijaT~lcPfmms2a=fd|Uyi~{ct=4==>PNM^U_U]K>5:]\\AKX\FZT\L\[IUKLJZY5:2kohk|s^alqkrbzVceoRm`uov\rdjrm5>5?6HKR0f8eabumzyTob{atdp\mkeumdoexRbzt595103602ymnePcnlwvjjXkfexRv`r23;?ii`ajUl~b{_mmdmfgkWe=<:4rdejwqcu{Vmjxd`h_mww5==fd|Umecoc_lw{[vck8hU{e}k>f:cqpmojm}chSj|`uq]eqijXimnxyo2:>0d8ewroadoenQhrnws[mgknVkoh~{m<4<27>uszfhnRy}iug\asci|<1e=9:=1b9ppdelWdofcwPsuc`oZtfeVlgc}9j;hlppwsd|`ee0<0>4:doebuXrlxdSkbng^dokue<{ciR}{rn`f50=?2F__\XZ5pnpw[lb;?3:5?6HKS0:8wqgdcVidby|`l^alqkrXd|~;=68>8:nlcleXo{e~|Rb`ghabhZjr|;;?7~zncj]`kkrugeUTb=>?459W]UC53ON:46}{abi\gjhszffTob{at^nvp44<NL8;7l|{hhofpleXo{e~|Ro}iujnaqodWqey<<64lnejgZaug|zT`bifc`n\hpr4:91j`xQiioco[hsWee|iQ|emg`plii4=4:56}gigv\cwirxVg~tRaztqww8786m2cexh|}uqv\cwirxVoemobj_`]`ewt~i2ceS}a}t=0=63=flmxn~QlotlwawYtmeohxhjPlncg[sgk}l6:2<64suc`oZehf}xd`Rm`uov\hpr5:91j~yffmdvjgZaug|zTmg{hlgwmfYg{;:46b`gha\cwirxVfdkdmnl^nvp17<08l0mzgilgwmfY`zf{Sno}rx]`ldoi4?4:96|jghqwawuXllidhhQiqgb?uiu|Vco0<0j;r{\v`an{}oy0?0>4:qwefmXkfd~bbP_o23437?3hno~h}|_bmvjqcuWmohcikPa0;8eabumzyTob{atdp\gjsi|Vf~x?5>00:8wqgdcVidby|`l^alqkrXd|~8i6hcafq\ak7fWe>=5nrujji`rnkVmycx~PaskwlhcsajUsc<>6:pfclusm{yT{g{e^ffgjbbl2kgyR|jstnw828602kohk|s^alqkrbzVnnobjj_c01?dbczlyxSnaznugq[lhdWje~byQyamwf808e3YCESO[\N@OF0>qddb;37aahib]dvjswWeelenoc_mww176<i{~ce`k{ib]dvjswWhxbxecjtha\|jt4911gcjgl_fplquYkgnchmaQcuu42f>usijaTob`{rnn\jjrXag~n~{t068wqgdcVidby|`l^]m456?9o1j~yffmdvjgZaug|zTdlbi_`fgwpd;>7;m7l|{hhofpleXo{e~|Rhzlm]b`aurj5<5i6gasupvgqohf585qMN8058DE~6>>0;6?4>{R17>07=>k0:?<9i1d827=d72:qeh84>;o3gf?7<,;h1?>5rS010>07=>k0:?<9i1d827=d7291o=;950;295?7|[:>19<49b;3052`6m3;84o>50:tW5f2=:3:1=7?513dxW62==80=n7?<16d2a?740k:1<6*=34840>"2;39<7o?97;194?5228:h6<<i{[61>0}d03;8m76l:364>4df2t.98i4>669K12=n0:0;6=44i783>5<<a8in6=4?::k2b7<5290/>;l5379m5f<732c:o=4=:18'63d=;?1e=n4>;:k2=g<5290/>;l5379m5f<532c:;94=:18'63d=;?1e=n4<;:k272<5290/>;l5379m5f<332c:=>4=:18'63d=;?1e=n4:;:k211<5290/>;l5379m5f<132c:>;4=:18'63d=;?1e=n48;:keg?4=83.9:o4<6:l2g?><3`h36?4?:%05f?513g;h6454i9396?6=,;<i6>84n0a9e>=n=<096=4+27`973=i9j0i76g=a;094?"5>k08:6`>c;a8?l40<381<7*=6c802>h6k3n07d<;4;094?"5>k08:6`>c;g8?l47l381<7*=6c802>h6k3l07dj=:383>!41j3l;7c?l:198m<3=:3:1(?8m:g28j4e=921b:44=:18'63d=n91e=n4=;:k0`?4=83.9:o4i0:l2g?5<3`;:6?4?:%05f?`73g;h6954i375>7<72-8=n7h?;o3`>0=<a;8:6?4?:%05f?`73g;h6;54i0g5>7<72-8=n7h?;o3`>2=<g;>=6=4?::mfe?6=831d>?l52;29 70e28n0b<m50:9l5c5=:3:1(?8m:0f8j4e=921d=n?52;29 70e28n0b<m52:9l5<e=:3:1(?8m:0f8j4e=;21d=:;52;29 70e28n0b<m54:9l56>=:3:1(?8m:0f8j4e==21d=<:52;29 70e28n0b<m56:9l`6<5290/>;l51e9m5f<032e:=i4=:18'63d=9k30b<m50:9la7<5290/>;l51c;8j4e=921dm=4=:18'63d=9k30b<m52:9l34<5290/>;l51c;8j4e=;21d8o4=:18'63d=9k30b<m54:9l5<<5290/>;l51c;8j4e==21d>8k52;29 70e28h27c?l:798k74f2;0;6)<9b;3a=>h6k3=07b?j7;094?"5>k0:mi5a1b83?>i6j1096=4+27`95db<f8i1=65`18796?6=,;<i6<ok;o3`>7=<g8<>6?4?:%05f?7fl2d:o7=4;n31`?4=83.9:o4>ae9m5f<332e:<n4=:18'63d=9hn0b<m55:9lg0<5290/>;l51`f8j4e=>21d4l4=:18'63d=9hn0b<m57:9ab4<529086=4?{%07`?7f:2B>;6g>de83>5<<a89:6=4?::m144<72900qo?:6;094?3=83:p(?:k:074?M303`;2i7>50;9j675=83:17d?mb;294?=n90=1<7>5;n022?6=831vn9=53;29<?6=8r.98i4=c:J63>"6<j0:hk5f18g94?6=3`8=o7>50;9j5f0=83:17d?k0;294?=n9m=1<7>5;h3ga?6=831bm>4?:188k766290;66sm1dc97?6==3:1<v*=4e8a4>N2?2.:8n4>a89ja6<72900ek<50;29?l`c290;66g>0g83>5<<g;::6=4?::a53>=:3:187>50z&10a<6;;1C9:5fe283>5<<ao81<7>5;h01`?6=831d>=?50;29?xd6>?096=4;:183!43l38?46F:7:k2=`<72900e?<k:183>>o61>0;6=44o335>5<722wi=?4=:187>5<7s-8?h7<<8:J63>o61l0;6=44i300>5<722c:5:4?:188k771290;66sm20596?6=<3:1<v*=4e817==O=>1b=4k50;29?l45;3:1<75f18594?6=3f8::7>50;9~f43?2:0;6i4?:1y'61b=:8:0D894$06`>4ba3`k86=4?::k2=`<72900e?8l:183>>o6k?0;6=44i0f3>5<722c:h:4?:188m4bb290;66g7:183>>o6<3:1<75f1d83>5<<a;>1<7>5;nd0>5<722e:8?4?:188yg7?j391<7:50;2x 72c2h>0D894$06`>4>d3`o86=4?::ke6?6=831bji4?:188k766290;66smf580>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj;<o6>4?:483>5}#:=n1n=5G569'51e=9>l0eh=50;29?l`5290;66gid;294?=n99l1<7>5;n035?6=831vn<?7:383>1<729q/>9j5b`9K12=n:821<7>5;h3g`?6=831b>?j50;29?j4793:1<75rbb496?6=;3:1<v*=4e810`=O=>1b=4k50;29?l7>?3:1<75`20494?6=3th>6?4?:583>5}#:=n1>>64H458m4?b290;66g=2283>5<<a83<6=4?::m153<72900qo6;:283>7<729q/>9j58e9K12=#9=i1><74id194?6=3f8;=7>50;9~f4102;0;6<4?:1y'61b=:8k0D894o0cf>5<722wi=8=52;290?6=8r.98i4=499K12=n90o1<7>5;h01`?6=831b=4950;29?j46>3:1<75rb076>7<72=0;6=u+25f95d`<@<=0e<7j:183>>o6jk0;6=44i0;4>5<722e9=;4?:188yg7f>381<7:50;2x 72c28km7E;8;h3:a?6=831b=ol50;29?l7>?3:1<75`20494?6=3th::44=:182>5<7s-8?h7<?6:J63>i5980;6=44}c6f>6<72=0;6=u+25f9e1=O=>1/=9m514d8m`5=83:17dh=:183>>oal3:1<75`21394?6=3th9?<4<:186>5<7s-8?h7l?;I74?!73k3;3?6gj3;294?=nn;0;6=44igf94?6=3`;;j7>50;9l657=83:17pl<0;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}c31<?4=83>1<7>t$36g>gg<@<=0e??7:183>>o6lm0;6=44i30g>5<722e9<<4?:188yg>72:0;6>4?:1y'61b=1;1C9:5+15a9666<al91<7>5;hd1>5<722e9<<4?:188yg7ak381<7;50;2x 72c28?<7E;8;h3:a?6=831b>?=50;29?l7ej3:1<75f18594?6=3f8::7>50;9~f64=:3:187>50z&10a<5;11C9:5f18g94?6=3`89?7>50;9j5<1=83:17b<>6;294?=zj8?:6>4?:483>5}#:=n1n=5G569'51e=99=0eh=50;29?l`5290;66gid;294?=n99l1<7>5;n035?6=831vn<kj:283>6<729q/>9j5939K12=#9=i1>8l4id194?6=3`l96=4?::m144<72900qo??6;194?3=83:p(?:k:c28L01<,8>h6<lj;hg0>5<722cm>7>50;9jba<72900e<>i:183>>i5880;6=44}c0e>7<72=0;6=u+25f966><@<=0e<7j:183>>o5::0;6=44i0;4>5<722e9=;4?:188ygba2:0;684?:1y'61b=j91C9:5+15a91f=nm:0;6=44ig094?6=3`lo6=4?::k24c<72900c?>>:183>>{e91l1?7>5d;294~"5<m09==5G569'51e=9ml0el=50;29?l7>m3:1<75f27a94?6=3`;h:7>50;9j5a6=83:17d?k7;294?=n9mo1<7>5;h:94?6=3`;?6=4?::k2a?6=831b>94?:188kc5=83:17b?;2;294?=zj8296>4?:e83>5}#:=n1><>4H458 42d28nm7do<:183>>o61l0;6=44i34`>5<722c:o;4?:188m4b7290;66g>d683>5<<a8nn6=4?::k;>5<722c:87>50;9j5`<72900e?:50;29?j`4290;66a>4383>5<<uk;<o7=50;f94?6|,;>o6???;I74?!73k3;oj6gn3;294?=n90o1<7>5;h05g?6=831b=n850;29?l7c83:1<75f1e594?6=3`;oi7>50;9j<?6=831b=94?:188m4c=83:17d<;:183>>ia;3:1<75`15094?6=3th:;<4<:18g>5<7s-8?h7<>0:J63>"6<j0:hk5fa283>5<<a83n6=4?::k12f<72900e<m9:183>>o6l90;6=44i0f4>5<722c:hh4?:188m=<72900e<:50;29?l7b290;66g=4;294?=hn:0;6=44o061>5<722wi=8k53;29`?6=8r.98i4=119K12=#9=i1=ih4i`194?6=3`;2i7>50;9j63e=83:17d?l6;294?=n9m:1<7>5;h3g3?6=831b=ik50;29?l>=83:17d?;:183>>o6m3:1<75f2583>5<<go91<7>5;n376?6=831vnn?53;291?6=8r.98i4m0:J63>"6<j0:h?5fe283>5<<ao81<7>5;hdg>5<722c:<k4?:188k766290;66sm24f96?6=;3:1<v*=4e810`=O=>1b=4k50;29?l7>?3:1<75`20494?6=3th9?i4<:180>5<7s-8?h77=;I74?!73k38>n6gj3;294?=nn;0;6=44o322>5<722wi=>j53;29`?6=8r.98i4=119K12=#9=i1=ih4i`194?6=3`;2i7>50;9j63e=83:17d?l6;294?=n9m:1<7>5;h3g3?6=831b=ik50;29?l>=83:17d?;:183>>o6m3:1<75f2583>5<<go91<7>5;n376?6=831vn<:::283>a<729q/>9j52028L01<,8>h6<ji;hc0>5<722c:5h4?:188m70d290;66g>c783>5<<a8n;6=4?::k2`2<72900e<jj:183>>o?290;66g>4;294?=n9l0;6=44i3694?6=3fl86=4?::m207<72900qo?69;194?2=83:p(?:k:`68L01<,8>h6<6l;hg0>5<722cm>7>50;9jba<72900c?>>:183>>{e9081?7>54;294~"5<m0j86F:7:&20f<60j1bi>4?:188mc4=83:17dhk:183>>i5880;6=44}c3;a?5=83>1<7>t$36g>d2<@<=0(<:l:0:`?lc4290;66gi2;294?=nnm0;6=44o322>5<722wi=kl53;291?6=8r.98i4m0:J63>"6<j0:>:5fe283>5<<ao81<7>5;hdg>5<722c:<k4?:188k766290;66sm14297?6=<3:1<v*=4e8b0>N2?2.:8n4>8b9ja6<72900ek<50;29?l`c290;66a=0083>5<<uk;>h7=50;694?6|,;>o6l:4H458 42d282h7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::a526=;3:187>50z&10a<f<2B>;6*>4b82<f=nm:0;6=44ig094?6=3`lo6=4?::m144<72900qo?8b;194?2=83:p(?:k:`68L01<,8>h6<6l;hg0>5<722cm>7>50;9jba<72900c?>>:183>>{e99?1?7>54;294~"5<m0j86F:7:&20f<60j1bi>4?:188mc4=83:17dhk:183>>i5880;6=44}cda>6<72=0;6=u+25f9e1=O=>1/=9m519a8m`5=83:17dh=:183>>oal3:1<75`21394?6=3th9<h4=:180>5<7s-8?h7<;e:J63>o61l0;6=44i0;4>5<722e9=;4?:188yg4=;3:197>50z&10a<e82B>;6*>4b823c=nm:0;6=44ig094?6=3`lo6=4?::k24c<72900c?>>:183>>{e9ol1>7>53;294~"5<m098h5G569j5<c=83:17d?67;294?=h:8<1<7>5;|`12c<4290>6=4?{%07`?d73A?<7)?;c;34b>ob;3:1<75ff383>5<<aon1<7>5;h33b?6=831d>=?50;29?xd6n?096=4<:183!43l38?i6F:7:k2=`<72900e<78:183>>i59?0;6=44}c01b?5=83?1<7>t$36g>g6<@<=0(<:l:05e?lc4290;66gi2;294?=nnm0;6=44i02e>5<722e9<<4?:188yg7d:381<7=50;2x 72c2;>n7E;8;h3:a?6=831b=4950;29?j46>3:1<75rb31`>6<72<0;6=u+25f9f5=O=>1/=9m516d8m`5=83:17dh=:183>>oal3:1<75f11d94?6=3f8;=7>50;9~f4ed2;0;6>4?:1y'61b=:=o0D894i0;f>5<722c:5:4?:188k771290;66sm25`97?6==3:1<v*=4e8a4>N2?2.:8n4>7g9ja6<72900ek<50;29?l`c290;66g>0g83>5<<g;::6=4?::a5a0=:3:1?7>50z&10a<5<l1C9:5f18g94?6=3`;2;7>50;9l640=83:17pl=5380>5<2290;w)<;d;`3?M303-;?o7?8f:kf7?6=831bj?4?:188mcb=83:17d??f;294?=h:9;1<7>5;|`2`d<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qo<:a;194?3=83:p(?:k:c28L01<,8>h6<9i;hg0>5<722cm>7>50;9jba<72900e<>i:183>>i5880;6=44}c3f<?4=8391<7>t$36g>72b3A?<7d?6e;294?=n90=1<7>5;n022?6=831vn?:<:383>6<729q/>9j525g8L01<a83n6=4?::k2=2<72900c??9:183>>{e<m086=47:183!43l38h7E;8;%37g?7cn2c:5h4?:188m70d290;66g>c783>5<<a8n;6=4?::k2`2<72900e<jj:183>>of;3:1<75`21394?6=3th9?>4=:180>5<7s-8?h7<;e:J63>o61l0;6=44i0;4>5<722e9=;4?:188yg2?2:0;654?:1y'61b=:j1C9:5+15a95a`<a83n6=4?::k12f<72900e<m9:183>>o6l90;6=44i0f4>5<722c:hh4?:188md5=83:17b<?1;294?=zj;826?4?:283>5}#:=n1>9k4H458m4?b290;66g>9683>5<<g;;=6=4?::a5<7=:3:1>7>50z&10a<6981C9:5f1cf94?6=3f8;=7>50;9~fa<429036=4?{%07`?4d3A?<7)?;c;3gb>o61l0;6=44i34`>5<722c:o;4?:188m4b7290;66g>d683>5<<a8nn6=4?::kb7?6=831d>=?50;29?xd6n8096=4<:183!43l38?i6F:7:k2=`<72900e<78:183>>i59?0;6=44}c34>6<7210;6=u+25f96f=O=>1/=9m51ed8m4?b290;66g=6b83>5<<a8i=6=4?::k2`5<72900e<j8:183>>o6ll0;6=44i`194?6=3f8;=7>50;9~f4`c2;0;6>4?:1y'61b=:=o0D894i0;f>5<722c:5:4?:188k771290;66sm2080>5<?290;w)<;d;0`?M303-;?o7?kf:k2=`<72900e?8l:183>>o6k?0;6=44i0f3>5<722c:h:4?:188m4bb290;66gn3;294?=h:9;1<7>5;|`14f<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qo<9:283>=<729q/>9j52b9K12=#9=i1=ih4i0;f>5<722c9:n4?:188m4e1290;66g>d183>5<<a8n<6=4?::k2``<72900el=50;29?j4793:1<75rb336>7<72:0;6=u+25f961c<@<=0e<7j:183>>o61>0;6=44o335>5<722wi>h4<:18;>5<7s-8?h7<l;I74?!73k3;oj6g>9d83>5<<a;<h6=4?::k2g3<72900e<j?:183>>o6l>0;6=44i0ff>5<722cj?7>50;9l657=83:17pl=2181>5<4290;w)<;d;07a>N2?2c:5h4?:188m4?0290;66a=1783>5<<uk;9i7<50;194?6|,;>o6?:j;I74?l7>m3:1<75f18594?6=3f8::7>50;9~f4522:0;6>4?:1y'61b=1;1C9:5+15a961g<al91<7>5;hd1>5<722e9<<4?:188yg1f2;0;6>4?:1y'61b=:=o0D894i0;f>5<722c:5:4?:188k771290;66sm4680>5<3290;w)<;d;c7?M303-;?o7?nb:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj;:1>7>53;294~"5<m0:m?5G569j5ab=83:17d?<1;294?=h:9;1<7>5;|`25g<5290?6=4?{%07`?df3A?<7d<>8;294?=n9mn1<7>5;h01`?6=831d>=?50;29?xd0;381<7=50;2x 72c2;>n7E;8;h3:a?6=831b=4950;29?j46>3:1<75rb2;97?6=<3:1<v*=4e8b0>N2?2.:8n4>ac9ja6<72900ek<50;29?l`c290;66a=0083>5<<uk;=6?4?:283>5}#:=n1=l<4H458m4bc290;66g>3083>5<<g;::6=4?::aed<4290?6=4?{%07`?g33A?<7)?;c;35b>ob;3:1<75ff383>5<<aon1<7>5;n035?6=831vnn>52;290?6=8r.98i4ma:J63>o5910;6=44i0fg>5<722c9>i4?:188k766290;66sm24396?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th:6>4?:583>5}#:=n1m95G569'51e=9hh0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`0b?4=8391<7>t$36g>72b3A?<7d?6e;294?=n90=1<7>5;n022?6=831vnnh52;290?6=8r.98i4ma:J63>o5910;6=44i0fg>5<722c9>i4?:188k766290;66sm24;96?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3thh6>4?:583>5}#:=n1m95G569'51e=9hh0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`7g?4=8391<7>t$36g>72b3A?<7d?6e;294?=n90=1<7>5;n022?6=831vnik52;290?6=8r.98i4ma:J63>o5910;6=44i0fg>5<722c9>i4?:188k766290;66sm27496?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th:97=50;694?6|,;>o6l:4H458 42d28ki7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::a15<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qok7:383>1<729q/>9j5b`9K12=n:821<7>5;h3g`?6=831b>?j50;29?j4793:1<75rb34f>7<72:0;6=u+25f95d4<@<=0e<jk:183>>o6;80;6=44o322>5<722wi=k4<:187>5<7s-8?h7o;;I74?!73k3;jn6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f00=:3:1?7>50z&10a<5<l1C9:5f18g94?6=3`;2;7>50;9l640=83:17plia;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}c296?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th997=50;694?6|,;>o6l:4H458 42d28ki7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::a24<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qo??4;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}c`96?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th9h7=50;694?6|,;>o6l:4H458 42d28ki7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::a2d<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qo=j:383>6<729q/>9j525g8L01<a83n6=4?::k2=2<72900c??9:183>>{e98k1?7>54;294~"5<m0j86F:7:&20f<60j1bi>4?:188mc4=83:17dhk:183>>i5880;6=44}cf7>7<72:0;6=u+25f961c<@<=0e<7j:183>>o61>0;6=44o335>5<722win;4<:187>5<7s-8?h7o;;I74?!73k3;3o6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f47>2:0;694?:1y'61b=i=1C9:5+15a95=e<al91<7>5;hd1>5<722cmh7>50;9l657=83:17pl>b280>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj8h96?4?:583>5}#:=n1=><4H458m`5=83:17dh=:183>>o5:m0;6=44o322>5<722wi:h4<:187>5<7s-8?h7o;;I74?!73k3;3o6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f=4=:3:1?7>50z&10a<5<l1C9:5f18g94?6=3`;2;7>50;9l640=83:17pl87;194?2=83:p(?:k:`68L01<,8>h6<6l;hg0>5<722cm>7>50;9jba<72900c?>>:183>>{e0k096=4<:183!43l38?i6F:7:k2=`<72900e<78:183>>i59?0;6=44}c5e>6<72=0;6=u+25f9e1=O=>1/=9m519a8m`5=83:17dh=:183>>oal3:1<75`21394?6=3th2:7<50;194?6|,;>o6?:j;I74?l7>m3:1<75f18594?6=3f8::7>50;9~f=1=;3:187>50z&10a<f<2B>;6*>4b82<f=nm:0;6=44ig094?6=3`lo6=4?::m144<72900qoo=:383>6<729q/>9j525g8L01<a83n6=4?::k2=2<72900c??9:183>>{e18086=4;:183!43l3k?7E;8;%37g?7?k2cn?7>50;9jb7<72900ekj50;29?j4793:1<75rb`a96?6=;3:1<v*=4e810`=O=>1b=4k50;29?l7>?3:1<75`20494?6=3th2h7=50;694?6|,;>o6l:4H458 42d282h7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::af<<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qoo6:283>1<729q/>9j5a59K12=#9=i1=5m4id194?6=3`l96=4?::ke`?6=831d>=?50;29?xd608096=4;:183!43l3;8>6F:7:kf7?6=831bj?4?:188m74c290;66a=0083>5<<uk8:87=50;694?6|,;>o6l:4H458 42d282h7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::afc<4290?6=4?{%07`?g33A?<7)?;c;3;g>ob;3:1<75ff383>5<<aon1<7>5;n035?6=831vn<9n:383>1<729q/>9j51208L01<al91<7>5;hd1>5<722c9>i4?:188k766290;66sm21797?6=<3:1<v*=4e8b0>N2?2.:8n4>8b9ja6<72900ek<50;29?l`c290;66a=0083>5<<ukh>6>4?:583>5}#:=n1m95G569'51e=91i0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`22`<5290?6=4?{%07`?74:2B>;6gj3;294?=nn;0;6=44i30g>5<722e9<<4?:188yg7ai391<7:50;2x 72c2h>0D894$06`>4>d3`o86=4?::ke6?6=831bji4?:188k766290;66sma980>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj8;m6>4?:583>5}#:=n1m95G569'51e=9=l0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`257<529086=4?{%07`?43m2B>;6g>9d83>5<<a83<6=4?::m153<72900qo<<e;094?5=83:p(?:k:36f?M303`;2i7>50;9j5<1=83:17b<>6;294?=zj8ij6?4?:283>5}#:=n1>9k4H458m4?b290;66g>9683>5<<g;;=6=4?::a33<4290?6=4?{%07`?g33A?<7)?;c;3;g>ob;3:1<75ff383>5<<aon1<7>5;n035?6=831vn<m7:283>1<729q/>9j5a59K12=#9=i1=5m4id194?6=3`l96=4?::ke`?6=831d>=?50;29?xd6;=096=4;:183!43l3;8>6F:7:kf7?6=831bj?4?:188m74c290;66a=0083>5<<uk=n6>4?:583>5}#:=n1m95G569'51e=91i0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`2`4<4290?6=4?{%07`?g33A?<7)?;c;3;g>ob;3:1<75ff383>5<<aon1<7>5;n035?6=831vn<=l:383>1<729q/>9j51208L01<al91<7>5;hd1>5<722c9>i4?:188k766290;66sm8780>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj8n26>4?:583>5}#:=n1m95G569'51e=91i0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`201<5290?6=4?{%07`?74:2B>;6gj3;294?=nn;0;6=44i30g>5<722e9<<4?:188yg?72:0;694?:1y'61b=i=1C9:5+15a95=e<al91<7>5;hd1>5<722cmh7>50;9l657=83:17pl>e280>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zj8>n6?4?:583>5}#:=n1=><4H458m`5=83:17dh=:183>>o5:m0;6=44o322>5<722wi5n4<:187>5<7s-8?h7o;;I74?!73k3;3o6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f4cc2:0;694?:1y'61b=i=1C9:5+15a95=e<al91<7>5;hd1>5<722cmh7>50;9l657=83:17plm7;094?5=83:p(?:k:36f?M303`;2i7>50;9j5<1=83:17b<>6;294?=zj0h1?7>55;294~"5<m0i<6F:7:&20f<b?2cn?7>50;9jb7<72900ekj50;29?l77n3:1<75`21394?6=3th:j94=:186>5<7s-8?h7?:7:J63>o61l0;6=44i300>5<722c:no4?:188m4?0290;66a=1783>5<<ukk1?7>55;294~"5<m0i<6F:7:&20f<6j81bi>4?:188mc4=83:17dhk:183>>o68o0;6=44o322>5<722wi>;;53;291?6=8r.98i4m0:J63>"6<j0:h55fe283>5<<ao81<7>5;hdg>5<722c:<k4?:188k766290;66sm1b597?6=;3:1<v*=4e8:6>N2?2.:8n4=319ja6<72900ek<50;29?j4793:1<75rb7196?6=<3:1<v*=4e8ae>N2?2c9=54?:188m4bc290;66g=2e83>5<<g;::6=4?::a53b=:3:187>50z&10a<ei2B>;6g=1983>5<<a8no6=4?::k16a<72900c?>>:183>>{el9096=4<:183!43l38?i6F:7:k2=`<72900e<78:183>>i59?0;6=44}c3fg?5=83?1<7>t$36g>g6<@<=0(<:l:0g1?lc4290;66gi2;294?=nnm0;6=44i02e>5<722e9<<4?:188yg71k391<7:50;2x 72c2h>0D894$06`>7373`o86=4?::ke6?6=831bji4?:188k766290;66sm23496?6=<3:1<v*=4e8ae>N2?2c9=54?:188m4bc290;66g=2e83>5<<g;::6=4?::a=d<5290?6=4?{%07`?df3A?<7d<>8;294?=n9mn1<7>5;h01`?6=831d>=?50;29?xd2m381<7=50;2x 72c2;>n7E;8;h3:a?6=831b=4950;29?j46>3:1<75rb8;97?6=<3:1<v*=4e8b0>N2?2.:8n4kd:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zjjo1?7>55;294~"5<m0i<6F:7:&20f<6m81bi>4?:188mc4=83:17dhk:183>>o68o0;6=44o322>5<722wij44<:186>5<7s-8?h7l?;I74?!73k3;n=6gj3;294?=nn;0;6=44igf94?6=3`;;j7>50;9l657=83:17pl:b;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}c34=?4=83>1<7>t$36g>gg<@<=0e??7:183>>o6lm0;6=44i30g>5<722e9<<4?:188yg71j391<7;50;2x 72c2k:0D894$06`>4d63`o86=4?::ke6?6=831bji4?:188m46a290;66a=0083>5<<uk8?97<50;794?6|,;>o6<;8;I74?l7>m3:1<75f23194?6=3`;in7>50;9j5<1=83:17b<>6;294?=zj;>m6>4?:483>5}#:=n1n=5G569'51e=km1bi>4?:188mc4=83:17dhk:183>>o68o0;6=44o322>5<722wi>=:52;290?6=8r.98i4ma:J63>o5910;6=44i0fg>5<722c9>i4?:188k766290;66sm22`96?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th9:94<:186>5<7s-8?h7l?;I74?!73k3io7dk<:183>>oa:3:1<75ffe83>5<<a8:m6=4?::m144<72900qo?83;094?3=83:p(?:k:074?M303`;2i7>50;9j675=83:17d?mb;294?=n90=1<7>5;n022?6=831vn?<j:383>6<729q/>9j51`08L01<a8no6=4?::k274<72900c?>>:183>>{e:891>7>54;294~"5<m0im6F:7:k15=<72900e<jk:183>>o5:m0;6=44o322>5<722wi>8653;291?6=8r.98i4m0:J63>"6<j0hh6gj3;294?=nn;0;6=44igf94?6=3`;;j7>50;9l657=83:17pl>6281>5<2290;w)<;d;363>N2?2c:5h4?:188m744290;66g>bc83>5<<a83<6=4?::m153<72900qo<=5;094?5=83:p(?:k:0c1?M303`;oh7>50;9j567=83:17b<?1;294?=zj:21>7>52;294~"5<m0:=<5G569j5gb=83:17b<?1;294?=zj8kj6>4?:283>5}#:=n15?5G569'51e===1bi>4?:188mc4=83:17b<?1;294?=zjh=1?7>55;294~"5<m0i<6F:7:&20f<6=j1bi>4?:188mc4=83:17dhk:183>>o68o0;6=44o322>5<722wihn4<:187>5<7s-8?h7o;;I74?!73k3;246gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f10=;3:187>50z&10a<f<2B>;6*>4b8126=nm:0;6=44ig094?6=3`lo6=4?::m144<72900qo?:b;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}c36e?4=83>1<7>t$36g>gg<@<=0e??7:183>>o6lm0;6=44i30g>5<722e9<<4?:188yg730381<7;50;2x 72c28?<7E;8;h3:a?6=831b>?=50;29?l7ej3:1<75f18594?6=3f8::7>50;9~f72>2:0;684?:1y'61b=j91C9:5+15a966g<al91<7>5;hd1>5<722cmh7>50;9j55`=83:17b<?1;294?=zj8l26?4?:583>5}#:=n1nl5G569j64>=83:17d?kd;294?=n:;n1<7>5;n035?6=831vn??l:383>6<729q/>9j51`08L01<a8no6=4?::k274<72900c?>>:183>>{e98:1>7>53;294~"5<m0:m?5G569j5ab=83:17d?<1;294?=h:9;1<7>5;|`f2?5=83>1<7>t$36g>d2<@<=0(<:l:0:`?lc4290;66gi2;294?=nnm0;6=44o322>5<722wii84<:187>5<7s-8?h7o;;I74?!73k3;3o6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~f<>=:3:1?7>50z&10a<6i;1C9:5f1ef94?6=3`;8=7>50;9l657=83:17pl>8e81>5<1290;w)<;d;037>N2?2c:5h4?:188m744290;66g=2e83>5<<a8hi6=4?::k2=2<72900c??9:183>>{e9991?7>54;294~"5<m0j86F:7:&20f<60j1bi>4?:188mc4=83:17dhk:183>>i5880;6=44}c336?5=83>1<7>t$36g>d2<@<=0(<:l:0:`?lc4290;66gi2;294?=nnm0;6=44o322>5<722wi==?52;297?6=8r.98i4>a39K12=n9mn1<7>5;h305?6=831d>=?50;29?xd689096=4;:183!43l3hj7E;8;h02<?6=831b=ij50;29?l45l3:1<75`21394?6=3th3j7<50;194?6|,;>o6<o=;I74?l7cl3:1<75f12394?6=3f8;=7>50;9~f7432;0;694?:1y'61b=jh1C9:5f20:94?6=3`;oh7>50;9j67b=83:17b<?1;294?=zj82;6?4?:783>5}#:=n1>==4H458m4?b290;66g=2283>5<<a;8o6=4?::k2fg<72900e<78:183>>i59?0;6=44}cd;>6<72=0;6=u+25f9e1=O=>1/=9m519a8m`5=83:17dh=:183>>oal3:1<75`21394?6=3thm;7=50;694?6|,;>o6l:4H458 42d282h7dk<:183>>oa:3:1<75ffe83>5<<g;::6=4?::ab3<529086=4?{%07`?7f:2B>;6g>de83>5<<a89:6=4?::m144<72900qoh::383>1<729q/>9j5b`9K12=n:821<7>5;h3g`?6=831b>?j50;29?j4793:1<75rb9796?6=;3:1<v*=4e82e7=O=>1b=ij50;29?l7493:1<75`21394?6=3th9=o4=:187>5<7s-8?h7ln;I74?l4603:1<75f1ef94?6=3`89h7>50;9l657=83:17pl>7981>5<1290;w)<;d;037>N2?2c:5h4?:188m744290;66g=2e83>5<<a8hi6=4?::k2=2<72900c??9:183>>{e0l086=4::183!43l3h;7E;8;%37g?7e82cn?7>50;9jb7<72900ekj50;29?l77n3:1<75`21394?6=3thmj7=50;194?6|,;>o64<4H458 42d2<k0eh=50;29?l`5290;66a=0083>5<<uk?26>4?:583>5}#:=n1m95G569'51e=:?90eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`2ff<5290?6=4?{%07`?df3A?<7d<>8;294?=n9mn1<7>5;h01`?6=831d>=?50;29?xd3=381<7:50;2x 72c2kk0D894i33;>5<722c:hi4?:188m74c290;66a=0083>5<<uk8=>7=50;694?6|,;>o6l:4H458 42d2oo0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`17<<429086=4?{%07`??53A?<7)?;c;02=>ob;3:1<75ff383>5<<g;::6=4?::a01<529096=4?{%07`?7692B>;6g>be83>5<<g;::6=4?::ae3<4290?6=4?{%07`?g33A?<7)?;c;3;g>ob;3:1<75ff383>5<<aon1<7>5;n035?6=831vnl;53;290?6=8r.98i4n4:J63>"6<j0:4n5fe283>5<<ao81<7>5;hdg>5<722e9<<4?:188yg74j381<7850;2x 72c2;:87E;8;h3:a?6=831b>?=50;29?l45l3:1<75f1c`94?6=3`;2;7>50;9l640=83:17pl>e181>5<3290;w)<;d;`b?M303`8:47>50;9j5ab=83:17d<=d;294?=h:9;1<7>5;|`6<?4=8391<7>t$36g>4g53A?<7d?kd;294?=n9:;1<7>5;n035?6=831vno:52;290?6=8r.98i4ma:J63>o5910;6=44i0fg>5<722c9>i4?:188k766290;66smb281>5<4290;w)<;d;3b6>N2?2c:hi4?:188m456290;66a=0083>5<<ukh96>4?:583>5}#:=n1m95G569'51e=91i0eh=50;29?l`5290;66gid;294?=h:9;1<7>5;|`a5?5=83>1<7>t$36g>d2<@<=0(<:l:0:`?lc4290;66gi2;294?=nnm0;6=44o322>5<722wi=9=52;292?6=8r.98i4=029K12=n90o1<7>5;h017?6=831b>?j50;29?l7ej3:1<75f18594?6=3f8::7>50;9~f4ce2;0;694?:1y'61b=jh1C9:5f20:94?6=3`;oh7>50;9j67b=83:17b<?1;294?=zj?81>7>53;294~"5<m0:m?5G569j5ab=83:17d?<1;294?=h:9;1<7>5;|`aa?4=83>1<7>t$36g>gg<@<=0e??7:183>>o6lm0;6=44i30g>5<722e9<<4?:188ygdc2;0;6>4?:1y'61b=9h80D894i0fg>5<722c:?<4?:188k766290;66smbb80>5<3290;w)<;d;c7?M303-;?o7?7c:kf7?6=831bj?4?:188mcb=83:17b<?1;294?=zjkh1?7>54;294~"5<m0j86F:7:&20f<60j1bi>4?:188mc4=83:17dhk:183>>i5880;6=44}c37`?4=83<1<7>t$36g>7643A?<7d?6e;294?=n:;91<7>5;h01`?6=831b=ol50;29?l7>?3:1<75`20494?6=3th:j54=:187>5<7s-8?h7ln;I74?l4603:1<75f1ef94?6=3`89h7>50;9l657=83:17pl9d;094?5=83:p(?:k:0c1?M303`;oh7>50;9j567=83:17b<?1;294?=zjji1>7>54;294~"5<m0im6F:7:k15=<72900e<jk:183>>o5:m0;6=44o322>5<722wioo4=:180>5<7s-8?h7?n2:J63>o6lm0;6=44i012>5<722e9<<4?:188ygef2:0;694?:1y'61b=i=1C9:5+15a95=e<al91<7>5;hd1>5<722cmh7>50;9l657=83:17pll9;194?2=83:p(?:k:`68L01<,8>h6<6l;hg0>5<722cm>7>50;9jba<72900c?>>:183>>{e9<31>7>56;294~"5<m09<>5G569j5<c=83:17d<=3;294?=n:;n1<7>5;h3af?6=831b=4950;29?j46>3:1<75rb321>7<72=0;6=u+25f9fd=O=>1b><650;29?l7cl3:1<75f23f94?6=3f8;=7>50;9~f23=:3:1?7>50z&10a<6i;1C9:5f1ef94?6=3`;8=7>50;9l657=83:17plkb;094?2=83:p(?:k:cc8L01<a;;36=4?::k2`a<72900e?<k:183>>i5880;6=44}cfb>7<72:0;6=u+25f95d4<@<=0e<jk:183>>o6;80;6=44o322>5<722wih44<:187>5<7s-8?h7o;;I74?!73k3;3o6gj3;294?=nn;0;6=44igf94?6=3f8;=7>50;9~fa>=;3:187>50z&10a<f<2B>;6*>4b82<f=nm:0;6=44ig094?6=3`lo6=4?::m144<72900qo?9a;094?0=83:p(?:k:320?M303`;2i7>50;9j675=83:17d<=d;294?=n9kh1<7>5;h3:3?6=831d><850;29?xd59;096=4;:183!43l3hj7E;8;h02<?6=831b=ij50;29?l45l3:1<75`21394?6=3th<h7<50;194?6|,;>o6<o=;I74?l7cl3:1<75f12394?6=3f8;=7>50;9~f`2=:3:187>50z&10a<ei2B>;6g=1983>5<<a8no6=4?::k16a<72900c?>>:183>>{tk?0;6=4={<a5>77134h>6kj4}rc1>5<72;q6m?4=179>=5<al2wxh94?:1818b32;;=70li:gf8yv43>3:1<7<t^365?84a2;;=7p}>c283>5<4s4;jm7h=;<:f>766348=>7h=;|qfe?6=838pRho4=334>7713tyjo7>50;0x9de=:8<014m5fe9~w=5=83:1>vP73:?06?7>m2wx:7>50;1xZ3=:9?<1>?j4=070>74c3ty:oh4?:1866~X6kl16=8851858915=:?i01<89:0;4?875283<70<>7;3:3>;6=109:n52c782=2=:=3;2;63>5282=2=:9<?1=494=0c5>4?034;mo7?67:?06?7>?279j7?67:?2<c<5>j16=5<527a8941d2;<h70?81;05g>;6=l09:n5224f95<1<589o6?8l;<371?41k279<h4>969>5c`=90=01<h9:0;4?87d:3;2;63>cb82=2=:9m<1=494=0fb>4?034;n47?67:?106<61>168i4=6b9>665=90=0196527a8974>283<70j527a894`6283<70?8:34`?87al3;2;63=1;05g>;58j0:5:5227812f=::8?1=494=3g963e<5;8;6<78;<31a?7>?27<m7?67:?47?7>?278j7?67:?7g?7>?27><7?67:?62?7>?27==7?67:?5e?7>?278i7?67:?g0?7>?273>7?67:?;f?7>?272:7?67:?b6?7>?27jo7?67:?a=?7>?27:=?4>969>66c=90=01<mn:0;4?8d0283<70?i4;3:3>;c83;2;63:e;3:3>;5<<0:5:5216195<1<58<86<78;<37<?7>?27:4i4>969>5=6=90=01<97:0;4?874j3;2;63>4282=2=:9=n1=494=07:>4?034;=m7?67:p24<72909w08>:335?87bl3lo7p}83;294?4|5>91><84=326>cb<uz;h>7>50;0x94e52;;=70?l8;d1?xu5=o0;6=4={<36<?73:27:;=4id:p5d6=83:1?v3>5d82=`=:9=o1>=?4=bg955`<uz8887>50;1x94>5283n70?8a;035>;a13lo7p}<f;294?4|5:l1><84=0a;>cb<uz>h6=4?:3y>0f<59?16=i?5fe9~wg?=83:1>v3m9;022>;f03lo7p}>d783>5<5s4;o:7<>6:?2`<<a:2wx9=4?:1818372;;=70?k9;dg?xu2>3:1<7<t=449640<58o86kj4}r51>5<72;q6=:m5150894>b2on0q~<=c;294?4|58>>6<:=;<36`?`c3ty=m7>50;0x93g=:8<01<hn:gf8yv4103:1<7=t=0:e>4?b34;3=7<?1:?e=?77n2wx=?h50;2951}::?n1==h4=g`9657<5;0:<k5227d955`<5;8m6<>i;<00g?77n2798o4>0g9>604=99l01?;n:02e?874=3l970:8:gf896?=nm16ml4id:?2>cb<5j0mh63>5;dg?87a2on01?;5fe9>6a<al27::n4i2:p3d<72909w09n:335?846<3lo7p}>1d83>5<4s4;8h7?6e:?271<58816oh4j3:pe4<72909w0?72;376>;61;0mh6s|21g94?6=:r79<h4=179>642=n;1v<o50;296~;6=l0:8?5216`9ba=z{8nj6=4?:3y>5ag=:8<01<k<:g08yv7a>3:1<7<t=0d5>77134;mm7h=;|q6>5<72mq697<>6:?;0?c434;>=7k<;<332?`534nm6k<4=31g>`5<583:6<lk;<;:>`5<5;>m6k<4=347>c4<5;?36k<4=36:>c4<5=>1=oj4}r352?6=83;>w0?:6;017>;6>?09=;52138166=::8=1>?=4=48166=:9oi1>?=4=209675<5;l1>?=4=0d7>744348?97<=3:?236<5::16=;=52318942?2;8870?7d;017>;60909>>5216:9675<589i6?<<;<377?45;27:8i4=229>50?=:;901<8n:300?xu>>3:1<7<t=849640<51<1ji5rs0de>5<72;q6=kh5204897622o80q~?8e;294?5|58?36<7j;<370?47927hi7hk;|q;f?6=838p15l5204892c=nm1v<k7:183>7}:9l21><84=0gg>c4<uz;>:7>50;`x94312;;=70:<:0f3?82c28n;70:7:0f3?8b=9m:01<951e28977=9m:01?851e2897c=9m:01?:i:d1897632;;37p}<e;294?4|5:o1><84=8`955`<uz;?47>50;`x915=9j<019j51b4891>=9j<01i4>c79>52<6k?16><4>c79>63<6k?16>h4>c79>51>=:8<01?:6:d1894`>2;;37p}>2d83>5<5s4;9i7<>6:?:f?`c3ty:j84?:181874l3;?>63>518e`>{t9o>1<7>55z?2e3<61l16ml4j3:?2f6<a:27:j94=179><`<b;2wx>9;50;297~;6=<0:5h522579640<51o1j?5rs0c5>5<72;q6=l8520489d<68o1v<;::183>7}:9<?1><84=04a>46a3ty:>7>50;308752;;=70?:5;3af>;6i?0:no524d8f7>;5;80n?6370;g0?87293;;j63>078f7>;cn3o870m>:d1896>=9kn01<6k:30g?87?8389h63>79816a=:9:h1>?j4=060>74c34;?h7<=d:?21<<5:m16=;o523f8yv>5290;6?u2838153=:??0mh6s|23`94?6=<rT9>o524e82=`=:91n1><84=020>cb<uz;m?7>50;6xZ4`434>36<7j;<3;4?46>27m47hk;|q2g4<7290?wS?l1:?77?7>m27n97hk;<34<?46>2wx=4m50;290~X61j16>h4>9d9>`=<al27::l4=179~w412290;69uQ1678970=90o01n75fe9>50?=:8<0q~?<8;294?2|V89370<>:0;f?8de2on01<:k:335?xu69=0;6=4;{_320>;6?3;2i63m1;dg?873;38::6s|d283>5<3sWn870j518g89d3=nm16=>l52048yv76l3:1<7:t^03g?87>138;=63=:d18911=n;1vh<50;290~Xb:27:5?4=009>63`=m:16?44i2:pe5<7290?wSo?;<05`?c434;3i7<?1:?1`?`53ty<=7>50;6xZ27<582i6?>>;<06e?c4348>6k<4}r6a>5<72=qU8o5216`9657<5;?96h=4=0d9b7=z{831<7>54z\2=>;6?909<<5225`9a6=:9<0m>6s|24g94?6=<rT99h5214f9657<5;9h6h=4=b8e6>{t:;k1<7>54z\16d=:9<:1>=?4=30e>`5<580m>6s|1d594?6=0rT:i:5219d9b6=::3l970:8:d18947e2;;370?>a;d1?87e;3lo70o6:gf8yv7e03:1<79t^0`;?876038:463>838e7>;5>o0m>63<9;g0?8d12o8014j5fe9~w4?2290;6:uQ1878970c2o801<9l:g1894632;;370<k:d189<7=nm16m44i2:p533=83:1;vP>649>527=n:16>8o5f39>bd<59116>84j3:?;3?`c343o6k<4}r31`?6=83=pR<<k;<36a?`4348>>7h=;<g;>77?34;m6h=4=6d9ba=:180m>6s|11a94?6=?rT:<n5214:9b6=::=h1j?52dd815==:9<0n?6387;dg?8>02o80q~m::183>2}Yk<16=9;5f29>66e=n;16ok4=199>g?c434<n6kj4=6d9b7=z{1k1<7>58z\;e>;6;m0m?63=2g8e6>;d838:463>:d18947f2on01<?6:g08921=n;1v<h=:183>47|V8l970?ja;33b>;a<3o870<<1;33b>;6ml0m>63l1;33b>;6nk0:<k521179a6=:nk0n?63>1g8e`>;f2o801<m8:g0894cd28:m70?9b;d1?8g028:m70:9:gf890?=nm1v<m?:183>46|V8i;70?ja;dg?84493lo70??6;dg?8ba2on01n?5fe9>5cd=nm16==;5f39>5fg=90o01l4j3:?120<68o16=hm5fe9>53d=m:16m:4id:?72?`534?26k<4}r3:f?6=83npR<7m;<3fe?`53488=7h=;<3fa?c434i:6k<4=0da>c4<5oh1j?5210d9b7=:9j=1i>521da9b7=:i>0m>63;6;g0?83>2l90q~?84;294??|V8=?70?ja;g0?8`32o801<hm:d18947a2l901?8::gf894cd2l901<on:d1897052l90q~?<7;294?g|V89<70?:8;3ga>;60o0:hh5219095ac<58=h6<jj;<345?7cm27:9h4>dd9>56b=9mo01<:::0ff?8>b28:m7p}>1283>5<fsW;:?63>5982`2=:91l1=i94=0:1>4b034;<o7?k7:?234<6l>16=8k51e58945c28n<70?;5;3g3>;?m3lo7p}>5583>5<esW;>863>5982`5=:91l1=i>4=0:1>4b734;<o7?k0:?234<6l916=8k51e28945c28n;70?;5;3g4>;f?3o870jl:gf8yv75>3:1<7?9{_312>;6=10:o;524d8e`>;60o0:o;5219095f0<58=h6<m9;<345?7d>27:9h4>c79>56b=9j<01<:::0a5?841=3l970jl:g089`0=m:16==<5e29>b2<b;27mj7h=;<00=?`534k=6h=4=c09a6=:jj0n?63la;g0?8b>2l90q~hl:183>a}Ynj16=865259>5=`=:=16=5<5259>52e=:=16=:?5259>50c=:=16=>j5259>513=:=16=475f39>`f<b;27:<?4id:?eb?c43tyi47>50;fxZg><58?36<k4=0:e>4c<58296<k4=05`>4c<58=:6<k4=07f>4c<589o6<k4=066>4c<58396k<4=346>`5<5o=1ji5222;9a6=z{1;1<7>5cz\;5>;6=10:86370;d1?87?n3;?70?72;37?870k3;?70?81;37?872m3;?70?<d;37?873=3;?70?7e;d1?8c12on0q~;::183>f}Y=<16=8658:?2<g<a:27?i7h=;<3;b?><5829655216a9<>;6?80370?:e;:8945c2116=9;58:?g=?`c3ty9m7>50;axZ7g<58=i6k<4=03b>`5<5k<1i>526d8f7>;0?3o8709i:d189=1=m:165<4j3:?:`?c434k26h=4=bc9ba=z{;=?6=4?:4y]622<58=;6k<4=026>cb<58h96?<k;<``>cb<uz8?87>50;4xZ72334;>h7h=;<da>cb<58;26h=4=0`0>`5<5k81ji5rs32g>5<72<qU>=j4=g69ba=:9<:1j?5210;9ba=:i?0mh6s|d383>5<5sWn970li:g08yv?2290;6?uQ949>f0<a:2wx:44?:181[0>34k36k<4}r1g>5<72;qU?i529b8e6>{t980;6=4={_32?8?72o80q~<:6;294?4|V;?=7069:g08yv4593:1<7<t^302?81b2o80q~?j6;294?4|V8o=7099:g08yv2f290;6?u219`9ba=:9>;1=9<4}rg2>5<72;q6=5h5150894?>2on0q~?;0;294?5|58>>6<7j;<30g?47927hi7h=;|q2ga<72908w0?98;035>;6?80:5h52f88f7>{t99h1<7>5bz?e0?479279:i4id:?1>cb<5;<m6kj4=30e>cb<5;9h6kj4=36a>cb<5;?96kj4=37b>cb<5hk1j?5217a9a6=z{8ih6=4?:3y>5fe=:8<01<j>:g08yv71<3:1<7:t=026>7663488i7?6e:?:f?c434;=o7hk;|q2b`<72908w0?8c;3:a>;6>l09<<52f88e6>{t:=91<7>52z?106<59?16==<5f39~w754290;6?u22219640<5o=1j?5rs30:>5<72;q6>?7520489`0=n;1v?<?:183>7}::;:1><84=e;9b7=z{;;>6=4?:3y>643=:8<01no5f39~w76d290;6?u221a9640<5ki1j?5rs0dg>5<72;q6=kj520489g4=n;1v<h>:183>7}:9o;1><84=`49b7=z{8=86=4?:`y>06<6ll168i4>dd9>0=<6ll16h7?ke:?23?7cm279=7?ke:?12?7cm279i7?ke:?121<b;27:;>4=179~w404290;6ou24282`2=:<m0:h:524982`2=:l3;o;63>7;3g3>;593;o;63=6;3g3>;5m3;o;63=12815==::<21i>521719640<uz;>?7>50;0x9401283n70?:3;022>{t9;i1<7>52z?6>4?b342?6?>>;|q107<7290:iv3>7682e`=:9<91=4k4=22964><58836??7;<40>77?34;=h7<>8:?163<591165l4=199>1g<59116=:7520:8943e2;;370?:a;02<>;6n00:hi5220a95ab<58:;6??7;<010?46027m97<>8:?15g<59116=om520:8913=:8201<k?:33;?8d32;;370?jb;02<>;em38:463>f9815==:kj09=552210964><5mh1><64=331>77?34o?6??7;|q2<3<72909w0?=8;035>;6nj0:no5rs6;94?6=:r79?<4=009>57>=:;n0q~<:5;294?4|5::1>=?4=00;>4bc3ty<<7>50;0x91c=:9;01>>523f8yv7ak3:1<7<t=0d`>77134;>=7hk;|q54?6=838p1<<518g894362;::7p}<2;294?4|5:81><84=072>c4<uz;9n7>50;0x9=6=:9;01<hl:0;f?xu3n3:1<79t=04:>776349;6<jk;<40>4bc3489:7?kd:?6f?7cl27:9o4>de9>5ge=9mn0q~<;1;294?4|58:=6?>>;<0e>4?b3ty9=k4?:18087bm38;=63>07824c=:lo0:<k5rs0aa>5<72;q6><9518g89a`=:9;0q~<97;294?4|5j;1>=?4=37g>4?b3ty99i4?:181842l38::63=3e8e6>{t9h?1<7>59z?21=<f;27:4k4n3:?2<7<f;27:;n4n3:?234<f;27:9h4n3:?17a<58816=>j5a29>513=i:1v<=i:183><}:91h1i>5218;9a6=:9081i>5219g9a6=:9oh1>=?4=073>`5<58?o6h=4=053>`5<58=i6h=4}r::>5<72;q6>>m5213894ed283n7p}l4;294?4|5;>i6?>>;<3g2?7>m2wx=4:50;296~;6no0:5h5227d9657<uz;i;7>50;0x976b283n70<52138yv75i3:1<7<t=37b>76634;n47?6e:p55g=83:1>v3=538144=:9mk1=4k4}r4;>5<72;q6>?h5213894e5283n7p}>6383>5<5s48=h7<?1:?2b3<61l1v;h50;296~;6?38;=63>fe82=`=z{8;h6=4?:3y>6`<58816>?>518g8yv?a290;6?u2208144=::9i1=4k4}rg3>5<72;q6>;4=009>643=90o0q~?6f;294?4|5;>86<7j;<6g>7663tyn57>50;0x9a<58816=k?518g8yv70l3:1<7<t=310>4?b34>36?>>;|q53?6=833p19=5a29>0a<f;27?47o<;<3:5?47927o6l=4=059e6=::80j?63=6;c0?84b2h90q~?<e;294?4|5=91>=?4=30:>4?b3ty:484?:181842138;=63;c;3:a>{t9h>1<7>52z?123<588169=4>9d9~w727290;6>u2116967b<5k0:?<522e8144=z{;31<7>52z?4e?7>m279<7<?1:p625=83:1>v383;3:a>;6>38;=6s|1g294?6=;r7mm7<?1:?241<6lm16n7?kd:p5g`=83:1?v3j8;035>;ai3;oh63?:0fg?xu6m<0;6=4={<31a?7>m27:?84=009~w74=83:1?v3l0;035>;dn3;oh63=5882`a=z{83j6=4?:2y>``<58816i54>de9>63c=9mn0q~<82;294?5|58;36?<k;<1:>76634;=6<=>;|q0g?6=838p1?;>:322?85a283n7p};9;294?5|5j:1>?j4=372>45634;1>=?4}r3g1?6=838p1?8j:322?831283n7p}>d583>5<4s4o36?<k;<05a?74927:j7<?1:p67>=83:1?v3>1982`a=:9?0:hi521169657<uz;j?7>50;1x9ac=:;n01?89:012?8722;::7p}=5b83>5<4s4;:47<?1:?14?7cl27:=o4>de9~w415290;6>u2cg8144=:ll0:hi5227495ab<uz8;n7>50;0x95<58816:<4>9d9~w7>=83:1?v3;7;035>;583;8=63>1c816a=z{;=1<7>52z?270<b;27:=o4=009~w4ca290;6>u2a`8144=:k90:hi5224395ab<uz88j7>50;0x9g<58816:l4>9d9~w76f290;6>u2f`816a=:83;8=63=5;035>{t91>1<7>53z?`b?45l279944>309>g?4792wx><k50;296~;0?38;=637b;3:a>{t9:<1<7>52z?25<<58816=o<5f39~w<2=83:1>v3>b28144=:9k81i>5rs0294?6=:r73;7<?1:?b6?7>m2wx?o4?:1818?62;::70ol:0;f?xuc93:1<7<t=e695<c<5k<1>=?4}r45>5<72;q65i4=009>f<<61l1v4=50;296~;d>3;2i63n9;035>{t<3:1<7=t=c49ba=:9k81>=?4=7g9b7=z{;:26=4?:3y>7`<61l16=<o52138yv42<3:1<7<t=6d9657<50<1=4k4}r3a2?6=838p1;k521389=4=90o0q~?m5;294?4|58n:6?>>;<30g?c43ty:i94?:18187c138;=63>458f7>{t:8n1<7>52z?2a6<58816=9k5e29~w734290;6?u217:9a6=:9ln1>=?4}r1b>5<72;q6=:o5e29>653=:9;0q~?>2;294??|58<36?<k;<3;5?45l27:;l4=2e9>53c=:;n01<?=:335?874<389h63>3b816a=:9=>1>?j4=06f>74c3ty>j7>50;0x9<6=:9;01<:j:g08yv7c;3:1<7<t=03e>76634;:>7?6e:pb?6=838p1<8j:d1894`f2;::7p}<1;294?4|51<1>=?4=067>c4<uzi86=4?:3y>53c=n;16m54=009~w46>290;6?u2778144=:9:>1j?5rs283>5<5s4=n6?>>;<30g?`53ty347>50;0x940?2o8014m52138yv7593:1<7<t=0a;>76634;887k<;|q2gd<72902w0li:d189g3=m:16m54j3:?2gd<59?16;;4j3:?4a?c4342=6h=4=829a6=:1j0n?6s|22g94?6=1r79=94j3:?140<b;27:jl4j3:?17`<59?16=n65e29>5a7=m:16=i75e29>5`5=m:16=hj5e29~w46?290;6?u216c9b7=:j<09<<5rs7794?6=:r7:4<4j3:?151<5881v<<6:183>7}:91;1j?52bg8144=z{?>1<7>52z?22a<58816h=4>9d9~w76?290;6?u29c8144=:i3lo7p}l2;294?4|58<i6?>>;<071?7>m2wxmo4?:181870138;=63>6c8e`>{t1l0;6=4={<7a>76634;<57?kd:p5de=83:1>v3i9;035>;6?009>i5rs311>5<72;q6oh4=009>1g<5:m1v<8>:183>7}:9j=1>=?4=04g>74c3ty9<:4?:18087a<3;in6369;035>;5<<0:no5rs4g94?6=:r7>i7<>6:?:=?`53ty9>:4?:1818?f2;::70;j:0;f?xu61:0;6=4={<35g?479272m7<=d:p5f?=83:1>v3=278144=:1h0:hi5rs0;3>5<72;q6=hm5213897412;8o7p}88;294?4|58oj6?>>;<`4>4?b3ty:8:4?:18187a<3;2i63n:322?xuc83:1<7<t=e29640<5031ji5rs0:94?6=:r7=?7<?1:?22a<6lm1v<;=:183>7}::??1>=?4=71967b<uzh<6=4?:3y>f2<59?165o4i2:pa?6=838p1im52138943e2;8o7p}>4783>5<4s489i7?<1:?156<5:m16>8652138yv7583:1<7=t=36e>766348;87<=d:?160<6;81v8j50;291~;5<o0mh63=658e`>;5=10mh63>a`8144=::=31ji5rs043>5<72;q6>>l51ef897742;::7p}=7083>5<5s4;?47?6e:?15f<5881v<l;:183>7}::;o1>=?4=040>4?b3ty9;=4?:186872>3;in63>7282fg=:9?91=ol4=2:9657<58>36<lm;|q01?6=838p1<;n:322?84313;;j6s|12294?6=;r79<94=009>67c=9mn01??<:0fg?xu60>0;6=4={<00f?749279:94=009~w4d=83:1>v3;6;035>;6=h09>i5rs301>5<72=q6>9h511d8970328:m70<:8;33b>;f?38;=6s|27294?6=;r79<94>de9>673=9mn01<h6:322?xu61?0;6=4={<362?7>m279>84=009~w4c>290;6?u222`9657<58=86<7j;|q24a<72909w0?:b;035>;6=h0:hi5rs36`>5<72:q6>975213894`>2;8o70<>c;305>{t9=31<7>53z?e2?7cl27m97?kd:?f0?4792wx>=>50;296~;6=00:5h52d`8144=z{>h1<7>53z?2ag<58816=k651ef893b=9mn0q~?kc;294?5|5;926?>>;<3f4?7cl27>47?kd:pea<72908w0?i8;035>;58;0:hi527482`a=z{8>:6=4?:8y>5=b=9kh01<6?:0`a?87003;in63;4;035>;6;k0:no5215195gd<58>o6<lm;<36=?7ej27::l4>bc9~w`d=83:1?v3=038144=::881=ij4=6f95ab<uz;857>50;1x9f?=:9;01il523f89ag=9:;0q~?n1;294?4|58>86<7j;<`g>7663tyji7>50;1x9gc=:9;01nm51ef89fd=9mn0q~kl:183>6}:kj09<<52dc82`a=:lh0:hi5rs0194?6=;r7io7<?1:?2b=<5:m16:i4>309~w472290;6>u2bc8144=:kj09>i52cc8274=z{ln1<7>52z?`=?`534=>6?>>;|q17?6=838p1<>>:322?87?83;2i6s|1`594?6=:r7:==4>de9>556=:9;0q~?=2;294?5|5o;1=ij4=e`9657<5l>1=ij4}r317?6=839p15;51ef8977e28no70<>2;035>{t<90;6=4m{<g6>`5<58:86h=4=g:9a6=::?81>=?4=`79a6=:j=0:hi52b282`a=:j80n?63mb;g0?8e>2l901i65e29~w730290;6>u2b38144=:9lh1>?j4=709567<uz<h6=4?:2y>`<<58816><<523f892b=9:;0q~m8:183>6}:i?09<<521d2967b<5<21=>?4}r3`1?6=839p1<>>:012?8778389h63i8;035>{tl?0;6=4<{<:e>456348987<=d:?e3?4792wxih4?:1808g22;::70l;:30g?8d4289:7p}>4`83>5<4s42m6<jk;<010?7cl279=o4=009~w750290;6?u2f08144=:9?k1=4k4}rce>5<72;q6no4i2:?5`?4792wx=<850;296~;>03;8=63>038144=z{ll1<7>53z?2a5<58816=hl51ef8934=9mn0q~<99;294?4|5<31>=?4=57967b<uz;;i7>50;0x9d3=n;16954=009~w470290;6>u2b58144=:jl0:hi52be82`a=z{<81<7>52z?255<58816=5j518g8yv75<3:1<7<t=01a>4?b34h86?>>;|q2<=<72909w06i:322?8`?2o80q~?6d;294?5|5l?1>=?4=g49567<5o?1>?j4}r;4>5<72:q6i;4=009><0<6;816><l523f8yv75=3:1<7<t=e:9b7=:?m09<<5rs5394?6=;r7hm7<?1:?147<5:m16;84>309~w4ea290;6?u215f95<c<5jh1>=?4}r05e?6=838p1k852138941?283n7p}>a983>5<5s4336?>>;<337?`53ty<6=4?:3y>00<58816>;<5fe9~w4>>290;6>u211395ab<58:;6<jk;<d6>7663ty<o7>50;0x9g7=n;16:?4=009~w4`0290;6?u21029567<58:86?>>;|q14c<72909w0?mc;035>;3=3;oh6s|d683>5<4s4h:6?>>;<`f>74c34ho6<=>;|q2<d<72909w077:0fg?845<38;=6s|27394?6=:r7mj7<?1:?2ff<5:m1v<:m:183>7}:m<0m>6375;035>{t9><1<7>53z?e5?74927o47<?1:?f0?45l2wvb8m?:083>4}O=>1vb8m>:083>4}O=>1vb8m=:083>4}O=>1vb;>::083>4}O=>1vb;>9:083>4}O=>1vb;>8:083>4}O=>1vb;>7:083>4}O=>1vb;>6:083>4}O=>1vb;>n:083>4}O=>1vb;>m:083>4}O=>1vb;>l:083>4}O=>1vb;>k:083>4}O=>1vb;>j:083>4}O=>1vb;>i:083>4}O=>1vb;??:083>4}O=>1vb;?>:083>4}O=>1vb;?=:083>4}O=>1vb;?<:083>4}O=>1vb;?;:083>4}O=>1vb;?::083>4}O=>1vb;?9:083>4}O=>1vb;?8:083>4}O=>1vb;?7:083>4}O=>1vb;?6:083>4}O=>1vb;?n:083>4}O=>1vb;?m:083>4}O=>1vb;?l:083>4}O=>1vb8ll:083>4}O=>1vb8lj:083>4}O=>1vb8kk:083>4}O=>1vb8kj:083>4}O=>1vb8ki:083>4}O=>1vb8h?:083>4}O=>1vb8h>:083>4}O=>1vb8h=:083>4}O=>1vb8h<:083>4}O=>1vb8h;:083>4}O=>1vb8h::083>4}O=>1vb8h9:083>4}O=>1vb8h8:083>4}O=>1vb8h7:083>4}O=>1vb8h6:083>4}O=>1vb8hn:083>4}O=>1vb8hm:083>4}O=>1vb8hl:083>4}O=>1vb8hk:083>4}O=>1vb8hj:083>4}O=>1vb8hi:083>4}O=>1vb;>?:083>4}O=>1vb;>>:083>4}O=>1vb;>=:083>4}O=>1vb;><:083>4}O=>1vb;>;:083>4}O=>1vb;m<:083>4}O=>1vb;k8:083>4}O=>1vb;mk:083>4}O=>1vb;oi:083>4}O=>1vb8jl:083>4}O=>1vb;o7:083>4}O=>1vb8k=:083>4}O=>1vb8k;:083>4}O=>1vb;<j:083>4}O=>1vb;<k:083>4}O=>1vb;;>:083>4}O=>1vb;;=:083>4}O=>1vb;7m:083>4}O=>1vb;9l:083>4}O=>1vb;69:083>4}O=>1vb;9j:083>4}O=>1vb;<?:083>4}O=>1vb;<i:083>4}O=>1vb;=8:083>4}O=>1vb8km:083>4}O=>1vb;=k:083>4}O=>1vb;:?:083>4}O=>1vb8ji:083>4}O=>1vb8m9:083>4}O=>1vb;:>:083>4}O=>1vb;?k:083>4}O=>1vb;<>:083>4}O=>1vb8j<:083>4}O=>1vb;:6:083>4}O=>1vb;8=:083>4}O=>1vb;;k:083>4}O=>1vb;8;:083>4}O=>1vb;9;:083>4}O=>1vb8l6:083>4}O=>1vb;=?:083>4}O=>1vb8jm:083>4}O=>1vb;=>:083>4}O=>1vb8k7:083>4}O=>1vb8kn:083>4}O=>1vb8k8:083>4}O=>1vb8k6:083>4}O=>1vb;=n:083>4}O=>1vb;=::083>4}O=>1vb;=<:083>4}O=>1vb;=;:083>4}O=>1vb;==:083>4}O=>1vb;=6:083>4}O=>1vb;=9:083>4}O=>1vb;=7:083>4}O=>1vb;=l:083>4}O=>1vb;=m:083>4}O=>1vb8j=:083>4}O=>1vb;?j:083>4}O=>1vb8m7:083>4}O=>1vb8j9:083>4}O=>1vb;<;:083>4}O=>1vb8mi:083>4}O=>1vb8m8:083>4}O=>1vb8j7:083>4}O=>1vb;=j:083>4}O=>1vb;=i:083>4}O=>1vb8j::083>4}O=>1vb8k9:083>4}O=>1vb;?i:083>4}O=>1vb8j?:083>4}O=>1vb;<<:083>4}O=>1vb;:::083>4}O=>1vb8j8:083>4}O=>1vb;:;:083>4}O=>1vb8jj:083>4}O=>1vb8jn:083>4}O=>1vb;:7:083>4}O=>1vb8m::083>4}O=>1vb;:=:083>4}O=>1vb;<=:083>4}O=>1vb;:<:083>4}O=>1vb8ml:083>4}O=>1vb;:8:083>4}O=>1vb8j6:083>4}O=>1vb;:9:083>4}O=>1vb8k>:083>4}O=>1vb;:j:083>4}O=>1vb;<::083>4}O=>1vb;;?:083>4}O=>1vb;<9:083>4}O=>1vb;<8:083>4}O=>1vb;:i:083>4}O=>1vb;<l:083>4}O=>1vb;:n:083>4}O=>1vb;<m:083>4}O=>1vb;:l:083>4}O=>1vb;<n:083>4}O=>1vb;:k:083>4}O=>1vb;<6:083>4}O=>1vb;:m:083>4}O=>1vb;<7:083>4}O=>1vb;;n:083>4}O=>1vb8k::083>4}O=>1vb;87:083>4}O=>1vb;;9:083>4}O=>1vb8j;:083>4}O=>1vb;88:083>4}O=>1vb;;8:083>4}O=>1vb8m;:083>4}O=>1vb;86:083>4}O=>1vb;;i:083>4}O=>1vb;;m:083>4}O=>1vb;;j:083>4}O=>1vb8m6:083>4}O=>1vb;8l:083>4}O=>1vb;8::083>4}O=>1vb;;<:083>4}O=>1vb8mn:083>4}O=>1vb;8<:083>4}O=>1vb;;l:083>4}O=>1vb;;;:083>4}O=>1vb8mk:083>4}O=>1vb;8>:083>4}O=>1vb;;6:083>4}O=>1vb;8?:083>4}O=>1vb8mj:083>4}O=>1vb;8m:083>4}O=>1vb;;7:083>4}O=>1vb;89:083>4}O=>1vb8m<:083>4}O=>1vb;;::083>4}O=>1vb;8n:083>4}O=>1vb8j>:083>4}O=>1vb;99:083>4}O=>1vb8k<:083>4}O=>1vb;9=:083>4}O=>1vb8lm:083>4}O=>1vb;9::083>4}O=>1vb;8j:083>4}O=>1vb;8i:083>4}O=>1vb;97:083>4}O=>1vb8kl:083>4}O=>1vb;8k:083>4}O=>1vb8k?:083>4}O=>1vb;98:083>4}O=>1vb8jk:083>4}O=>1vb;9?:083>4}O=>1vb8ln:083>4}O=>1vb;9>:083>4}O=>1vb8li:083>4}O=>1vb;9<:083>4}O=>1vb8mm:083>4}O=>1vb;6m:083>4}O=>1vb;6l:083>4}O=>1vb;66:083>4}O=>1vb;67:083>4}O=>1vb;9k:083>4}O=>1vb;6n:083>4}O=>1vb;6>:083>4}O=>1vb;6<:083>4}O=>1vb;6?:083>4}O=>1vb;6;:083>4}O=>1vb;68:083>4}O=>1vb;6::083>4}O=>1vb;96:083>4}O=>1vb;6=:083>4}O=>1vb;9n:083>4}O=>1vb;9i:083>4}O=>1vb;9m:083>4}O=>1vb;o?:083>4}O=>1vb;6j:083>4}O=>1vb;7l:083>4}O=>1vb;7::083>4}O=>1vb;7i:083>4}O=>1vb;7;:083>4}O=>1vb;7j:083>4}O=>1vb;6k:083>4}O=>1vb;7k:083>4}O=>1vb;7n:083>4}O=>1vb;77:083>4}O=>1vb;76:083>4}O=>1vb;78:083>4}O=>1vb;79:083>4}O=>1vb;7<:083>4}O=>1vb;7=:083>4}O=>1vb;7>:083>4}O=>1vb;7?:083>4}O=>1vb;6i:083>4}O=>1vb;o;:083>4}O=>1vb;ok:083>4}O=>1vb;o<:083>4}O=>1vb;oj:083>4}O=>1vb;on:083>4}O=>1vb;o::083>4}O=>1vb;om:083>4}O=>1vb;l?:083>4}O=>1vb;o=:083>4}O=>1vb;o8:083>4}O=>1vb8lk:083>4}O=>1vb;o>:083>4}O=>1vb;ol:083>4}O=>1vb;l>:083>4}O=>1vb;o6:083>4}O=>1vb;o9:083>4}O=>1vb;l=:083>4}O=>1vb;m=:083>4}O=>1vb;k>:083>4}O=>1vb;j;:083>4}O=>1vb;j7:083>4}O=>1vb;m::083>4}O=>1vb;k9:083>4}O=>1vb;j8:083>4}O=>1vb;k;:083>4}O=>1vb;mi:083>4}O=>1vb;jk:083>4}O=>1vb;l7:083>4}O=>1vb;ji:083>4}O=>1vb;m6:083>4}O=>1vb;m>:083>4}O=>1vb;ml:083>4}O=>1vb;mn:083>4}O=>1vb;j9:083>4}O=>1vb;l<:083>4}O=>1vb;jl:083>4}O=>1vb;m;:083>4}O=>1vb;k::083>4}O=>1vb;j>:083>4}O=>1vb;k=:083>4}O=>1vb;jj:083>4}O=>1vb;l9:083>4}O=>1vb;m7:083>4}O=>1vb;j=:083>4}O=>1vb;mm:083>4}O=>1vb;j::083>4}O=>1vb;j?:083>4}O=>1vb;j<:083>4}O=>1vb;m9:083>4}O=>1vb;k?:083>4}O=>1vb;k<:083>4}O=>1vb;lm:083>4}O=>1vb;l::083>4}O=>1vb;ll:083>4}O=>1vb;lj:083>4}O=>1vb;mj:083>4}O=>1vb;li:083>4}O=>1vb;jm:083>4}O=>1vb;l8:083>4}O=>1vb;lk:083>4}O=>1vb;jn:083>4}O=>1vb;m?:083>4}O=>1vb;ln:083>4}O=>1vb;l;:083>4}O=>1vb;l6:083>4}O=>1vb;m8:083>4}O=>1vb;j6:083>4}O=>1vqpsO@By;52<ako3=i;:r@A@xyEFWstJK |
/compile/debug.psm
0,0 → 1,29
;program example for PSMDEBUG |
; |
LOAD sF,80 ;walking '1' register |
LOAD sB,00 ;reset accumulator lower byte |
LOAD sC,00 ;reset accumulator upper byte |
ENABLE INTERRUPT |
;main program to produce walking '1' |
main: OUTPUT sF,01 |
;software delay loop |
LOAD s1,43 |
slow_loop: LOAD s0,FF |
fast_loop: SUB s0,01 |
JUMP NZ,fast_loop |
SUB s1,01 |
JUMP NZ,slow_loop |
;walk the '1' to the right |
RR sF |
JUMP main |
;interrupt service routine |
ADDRESS D0 |
int_routine: INPUT sA,10 ;read value |
ADD sB,sA ;16 bit accumulation |
ADDCY sC,00 |
OUTPUT sB,20 ;output 16 bit value |
OUTPUT sC,40 |
RETURNI ENABLE |
;interrupt vector |
ADDRESS FF |
JUMP int_routine |
/compile/headdb.txt
0,0 → 1,6
Component_Name=debug; |
Data_width=16; |
Depth=256; |
Radix=16; |
Default_Data=0000; |
Memory_Initialization_Vector= |
/compile/ROM_form.coe
0,0 → 1,29
component_name={name}; |
width_a=16; |
depth_a=256; |
configuration_port_a=read_only; |
port_a_enable_pin=false; |
port_a_handshaking_pins=false; |
port_a_register_inputs=false; |
port_a_init_pin=false; |
port_a_init_value=0000; |
port_a_additional_output_pipe_stages = 0; |
port_a_register_inputs = false; |
port_a_active_clock_edge = Rising_Edge_Triggered; |
width_b=16; |
depth_b=256; |
configuration_port_b=read_and_write; |
write_mode_port_b=read_after_write; |
port_b_enable_pin=false; |
port_b_handshaking_pins=false; |
port_b_register_inputs=false; |
port_b_init_pin=false; |
port_b_init_value=0000; |
port_b_additional_output_pipe_stages = 0; |
port_b_register_inputs = false; |
port_b_active_clock_edge = Rising_Edge_Triggered; |
port_b_write_enable_polarity = Active_High; |
memory_initialization_radix=16; |
global_init_value=0000; |
memory_initialization_vector= |
|
/compile/format.psm
0,0 → 1,703
;Formatted version of cfreader.psm generated by KCPSMBLE. |
; |
;--===========================================================================-- |
;-- |
;-- CF SECTOR READER |
;-- |
;-- - SEPTEMBER 2002 |
;-- - UPV / EHU. |
;-- |
;-- Design units : FAT32 FILE LOADER |
;-- |
;-- File name : cf_sector_reader.txt |
;-- |
;-- Purpose : READ RAW SECTORS FROM CF |
;-- |
;-- Library : - |
;-- |
;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE |
;-- |
;-- Compiler : KCPSM ASSEMBLER V1.25 |
;-- |
;-- Debugger : PSM DEBUG V1.00 |
;--===========================================================================-- |
;------------------------------------------------------------------------------- |
;-- Revision list |
;-- Version Author Date Changes |
;-- |
;-- 260902 Armando Astarloa 27 September 2002 - |
;-- 241002 Armando Astarloa 27 October 2002 Reset on error |
;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus |
;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading |
;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error |
;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector readed. |
;-- do_reset_and_retry state |
;-- 160503 Armando Astarloa 02 May 2003 Complete sector reading |
;-- |
;------------------------------------------------------------------------------- |
;-- Description : DUMMY CF SECTORS READ |
;------------------------------------------------------------------------------- |
;-- |
;-- CONSTANT DEFINITIONS |
;-- |
CONSTANT DELAY1,03 |
; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop |
; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns |
CONSTANT IDENTIFY_COMMAND,EC |
CONSTANT WRITE_SECTOR_COMMAND,30 |
CONSTANT READ_SECTOR_COMMAND,20 |
CONSTANT WRITE_SEC_FEATURE,00 |
CONSTANT SOFT_RESET,04 |
;-- |
;-- RAM REGISTERS |
;-- |
; |
; s0 |
; s1 |
; s2 |
; s3 -> WISHBONE CONTROL |
; s4 -> REGISTERS STACK |
; s5 -> MY_STATUS |
; D3 = ERROR |
; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES) |
; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES) |
; D0 = SECTOR AVAILABLE (0 NOT / 1 YES) |
CONSTANT SECTOR_AVAILABLE,01 |
CONSTANT COMMAND_ALLOWED,02 |
CONSTANT DATA_TRANSFER_ALLOWED,04 |
CONSTANT ERROR_MY_STATUS,08 |
; s6 -> WORDS_READED |
; s7 -> LBA_7_0 |
; s8 -> LBA_15_8 |
; s9 -> LBA_23_16 |
; sA -> LD_LBA_27_24 |
; sB -> data[7:0] in ide |
; sC -> data[15:8] in ide |
; sD -> data[7:0] out ide |
; sE -> data[15:8] out ide |
; sF -> acummulator |
; |
;-- |
;-- OUTPUT PORTS |
;-- |
;-- |
;-- IDE INTERFACE PORTS - OUTPUTS |
;-- |
CONSTANT DATA_IDE_OUT_7_0,00 |
CONSTANT DATA_IDE_OUT_15_8,01 |
CONSTANT IDE_CONTROL_OUT,02 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = |
; D1 = NIOWR |
; D0 = NIORD |
CONSTANT NIOWR,FD |
CONSTANT NIORD,FE |
CONSTANT IDE_ADDRESS_OUT,03 |
; D7 = |
; D6 = |
; D5 = |
; D4 = NCE1 |
; D3 = NCE0 |
; D2 = A2 |
; D1 = A1 |
; D0 = A0 |
; |
; WRITE IDE REGISTERS |
; |
; NCE1/NCE0/ A2/ A1/ A0 |
CONSTANT CONTROL,0E ; 000 0 1 1 1 0 |
CONSTANT DATA,10 ; 000 1 0 0 0 0 |
CONSTANT FEATURE,11 ; 000 1 0 0 0 1 |
CONSTANT SECTOR_COUNT,12 ; 000 1 0 0 1 0 |
CONSTANT LBA_7_0,13 ; 000 1 0 0 1 1 |
CONSTANT LBA_15_8,14 ; 000 1 0 1 0 0 |
CONSTANT LBA_23_16,15 ; 000 1 0 1 0 1 |
CONSTANT LD_LBA_27_24,16 ; 000 1 0 1 1 0 |
CONSTANT COMMAND,17 ; 000 1 0 1 1 1 |
CONSTANT CF_OFF,18 ; 000 1 1 0 0 0 |
; |
; READ IDE REGISTERS |
; NCE1/NCE0/ A2/ A1/ A0 |
CONSTANT A_STATUS,0E ; 000 0 1 1 1 0 |
CONSTANT STATUS,17 ; 000 1 0 1 1 1 |
;-- |
;-- WISHBONE INTERFACE PORTS - OUTPUTS |
;-- |
CONSTANT DATA_WB_OUT_7_0,04 |
CONSTANT DATA_WB_OUT_15_8,05 |
CONSTANT CONTROL_WB_OUT,06 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = |
; D1 = TAG0_WORD_AVAILABLE |
; D0 = ACK_CF_READER |
CONSTANT ACK_CF_READER,01 |
CONSTANT TAG0_WORD_AVAILABLE,02 |
;-- |
;-- BUS CONTROL SIGNALS |
;-- |
CONSTANT CONTROL_OUT,07 |
; D7 = |
; D6 = |
; D5 = |
; D4 = |
; D3 = |
; D2 = ERROR |
; D1 = WB_BUS_WRITE_ENABLE |
; D0 = IDE_BUS_WRITE_ENABLE |
CONSTANT IDE_BUS_WRITE_ENABLE,01 |
CONSTANT WB_BUS_WRITE_ENABLE,02 |
CONSTANT ERROR,04 |
;-- |
;-- INPUT PORTS |
;-- |
;-- |
;-- IDE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT DATA_IDE_IN_7_0,00 |
CONSTANT DATA_IDE_IN_15_8,01 |
;-- |
;-- WISHBONE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT CONTROL_WB_IN,02 |
; D7 = |
; D6 = |
; D5 = |
; D4 = WB_A0 |
; D3 = RESET |
; D2 = W_WE |
; D1 = TAG1_WORD_REQUEST |
; D0 = STROBE_CF_READER |
; |
; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0 |
CONSTANT WRITE_LBA_15_0,05 |
; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1 |
CONSTANT WRITE_LBA_27_16,15 |
CONSTANT STROBE_CF_READER_AND_RD,01 |
CONSTANT TAG1_WORD_REQUEST,02 |
CONSTANT W_WE,04 |
CONSTANT RESET,08 |
; |
;-- |
;-- WISHBONE INTERFACE PORTS - INPUTS |
;-- |
CONSTANT DATA_WB_IN_7_0,03 |
CONSTANT DATA_WB_IN_15_8,04 |
;-- |
;-- REGISTERS INITIALIZATION |
;-- |
inicialization: |
; |
; BUS CONTROL : WRITE NOT ENABLE |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
; |
; WISHBONE BUS INIZIALIZATION |
; |
LOAD sF,00 |
OUTPUT sF,DATA_WB_OUT_7_0 |
OUTPUT sF,DATA_WB_OUT_15_8 |
OUTPUT sF,CONTROL_WB_OUT |
; |
; IDE BUS INICIALIZATION |
; |
LOAD sF,00 |
OUTPUT sF,DATA_IDE_OUT_7_0 |
OUTPUT sF,DATA_IDE_OUT_15_8 |
LOAD sF,18 |
OUTPUT sF,IDE_ADDRESS_OUT |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 210NS*31 (RESET DELAY) |
; |
LOAD s5,00 |
LOAD s6,00 |
LOAD sF,FF |
CALL wait_loop |
CALL soft_reset |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
main: |
; |
; CHECK WISHBONE BUS |
; |
; wait state for stb_i deassertion |
;LOAD sF,01 |
;CALL wait_loop |
AND sF,sF |
AND sF,sF |
AND sF,sF |
AND sF,sF |
INPUT s3,CONTROL_WB_IN |
; |
; CHECK RESET |
; |
LOAD sF,s3 |
AND sF,RESET |
; DO RESET |
JUMP NZ,inicialization |
; |
; CHECK STROBE & READ |
; |
LOAD sF,s3 |
SUB sF,WRITE_LBA_15_0 |
JUMP Z,store_lba_15_0 |
LOAD sF,s3 |
SUB sF,WRITE_LBA_27_16 |
JUMP Z,store_lba_27_16 |
LOAD sF,s3 |
SUB sF,STROBE_CF_READER_AND_RD |
JUMP Z,put_data_in_wb_bus |
; |
; IF NOT READ REQUEST MAINTAIN SIGNAL |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
OUTPUT sF,CONTROL_WB_OUT |
JUMP main |
store_lba_15_0: |
; DATA_WB_IN_7_0 -> s7 LBA_7_0 |
INPUT s7,DATA_WB_IN_7_0 |
; DATA_WB_IN_15_8 -> s8 LBA_15_8 |
INPUT s8,DATA_WB_IN_15_8 |
; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0 |
LOAD sF,00 |
AND s5,sF |
JUMP wishbone_ack |
store_lba_27_16: |
; DATA_WB_IN_7_0 -> s9 LBA_23_16 |
INPUT s9,DATA_WB_IN_7_0 |
; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24 |
INPUT sA,DATA_WB_IN_15_8 |
; SECTOR AVAILABLE -> 0 |
; antes 020503 LOAD sF,FE |
LOAD sF,00 |
AND s5,sF |
JUMP wishbone_ack |
do_reset_and_retry: |
CALL soft_reset |
LOAD s5,00 |
put_data_in_wb_bus: |
CALL read_word_from_cf |
; check for error |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
JUMP NZ,do_reset_and_retry |
OUTPUT sB,DATA_WB_OUT_7_0 |
OUTPUT sC,DATA_WB_OUT_15_8 |
; |
; ENABLE WB ENABLE |
; |
LOAD sF,WB_BUS_WRITE_ENABLE |
OUTPUT sF,CONTROL_OUT |
wishbone_ack: |
; |
; WISHBONE ACK |
; |
LOAD sF,ACK_CF_READER |
OUTPUT sF,CONTROL_WB_OUT |
; null - wait state |
; |
AND sF,sF |
AND sF,sF |
AND sF,sF |
AND sF,sF |
; WISHBONE MASTER MUST CHECK ACK SIGNAL |
; IN THE RISING EDGE OF THE CLOCK AND DEASSERT |
; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_WB_OUT |
;OUTPUT sF,CONTROL_OUT |
JUMP main |
wait_loop: |
; |
; SOFTWARE DELAY LOOP |
; TAKES SLOW LOOP VALUE FROM sF |
; |
; TWO CYCLES PER INSTRUCTION |
; |
; SLOW LOOP 3 INSTRUCTIONS * sF |
; FAST LOOP 2 INSTRUCTIONS * DELAY1 |
; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns |
LOAD s1,sF |
slow_loop: |
LOAD s0,DELAY1 |
fast_loop: |
SUB s0,01 |
JUMP NZ,fast_loop |
SUB s1,01 |
JUMP NZ,slow_loop |
RETURN |
write_ide_register: |
; |
; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT |
; |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; DATA OUT IDE |
; |
OUTPUT sD,DATA_IDE_OUT_7_0 |
OUTPUT sE,DATA_IDE_OUT_15_8 |
; |
; DATA OUT BUS ENABLE |
; |
LOAD sF,IDE_BUS_WRITE_ENABLE |
OUTPUT sF,CONTROL_OUT |
; |
; WAIT FOR 70 NS (MIN) |
; (120ns/50Mhz) |
LOAD sF,01 |
CALL wait_loop |
; |
; WRITE STROBE ON |
; |
LOAD sF,NIOWR |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 165NS (MIN) |
; (240ns/50Mhz) |
; 020503 |
LOAD sF,02 |
CALL wait_loop |
; |
; WRITE STROBE OFF |
; |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 20NS (MIN) |
; (410ns/50Mhz) |
; 020503 |
;LOAD sF,01 |
;CALL wait_loop |
; |
; CE AND ADRESSES OFF |
; |
LOAD sF,CF_OFF |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary) |
; (put again 020503) |
LOAD sF,01 |
CALL wait_loop |
; |
; DATA OUT BUS DISABLE |
; |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
; |
; (put again 020503) |
LOAD sF,02 |
CALL wait_loop |
RETURN |
read_ide_register: |
; |
; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT |
; |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 70 NS (MIN) |
; |
LOAD sF,01 |
CALL wait_loop |
; |
; READ STROBE ON |
; reset control_out (140503) |
LOAD sF,00 |
OUTPUT sF,CONTROL_OUT |
LOAD sF,NIORD |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 165NS (MIN) |
; |
LOAD sF,02 |
CALL wait_loop |
; |
; TAKE DE DATA FROM IDE BUS |
; |
INPUT sB,DATA_IDE_IN_7_0 |
INPUT sC,DATA_IDE_IN_15_8 |
; |
; READ STROBE OFF |
; |
LOAD sF,FF |
OUTPUT sF,IDE_CONTROL_OUT |
; |
; WAIT FOR 20NS (MIN) |
; |
;LOAD sF,01 |
;CALL wait_loop |
; |
; CE AND ADRESSES OFF |
; |
LOAD sF,CF_OFF |
OUTPUT sF,IDE_ADDRESS_OUT |
; |
; WAIT FOR 20NS (MIN) |
; (120ns/50mhz) |
;LOAD sF,01 |
;CALL wait_loop |
RETURN |
read_sector: |
; |
; WRITE ATA COMMANDS TO THE CF |
; |
; |
; IDE FEATURE REGISTER |
; |
LOAD sD,WRITE_SEC_FEATURE |
LOAD sF,FEATURE |
CALL write_ide_register |
; |
; IDE SECTOR COUNT REGISTER |
; |
LOAD sD,01 |
LOAD sF,SECTOR_COUNT |
CALL write_ide_register |
; |
; IDE LBA_7_0 |
; |
LOAD sD,s7 |
LOAD sF,LBA_7_0 |
CALL write_ide_register |
; |
; IDE LBA_15_8 |
; |
LOAD sD,s8 |
LOAD sF,LBA_15_8 |
CALL write_ide_register |
; |
; IDE LBA_23_16 |
; |
LOAD sD,s9 |
LOAD sF,LBA_23_16 |
CALL write_ide_register |
; |
; IDE LD_LBA_27_24 |
; |
; LBA_27_42 OR WITH 1110 |
; BIT7 : 1 |
; BIT6 : LBA=1 |
; BIT5 : 1 |
; BIT4 : DRV=0 |
; |
; |
LOAD sF,sA |
OR sF,E0 |
LOAD sD,sF |
LOAD sF,LD_LBA_27_24 |
CALL write_ide_register |
; |
; IDE READ SECTOR COMMAND |
; |
LOAD sD,READ_SECTOR_COMMAND |
LOAD sF,COMMAND |
CALL write_ide_register |
; |
; PUT SECTOR ALLOWED FLAG INTO MY_STATUS |
; |
; 290103 Added data available check |
retry_status_check: |
CALL cf_status_check |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
LOAD sF,DATA_TRANSFER_ALLOWED |
AND sF,s5 |
; LOOPS UNTIL SECTOR DATA IS AVAILABLE |
JUMP Z,retry_status_check |
LOAD sF,SECTOR_AVAILABLE |
OR s5,sF |
; |
; RESET WORDS READED REGISTER |
; |
LOAD s6,FF |
RETURN |
read_word_from_cf: |
; |
; CHECK IF THE SECTOR IS AVAILABLE |
; |
LOAD sF,SECTOR_AVAILABLE |
AND sF,s5 |
; |
; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR |
; |
CALL Z,read_new_sector |
; check for error |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
;retry_status_check: |
;CALL cf_status_check |
; |
; CHECK IF DATA IS AVAILABLE |
; |
; 120103 - changed . When there is sector |
; available in the cf ram buffer it is not |
; necessary to check neither bsy or drq |
; only read words with the correct timing paramenters |
; |
;LOAD sF,DATA_TRANSFER_ALLOWED |
;AND sF,s5 |
; LOOPS UNTIL SECTOR DATA IS AVAILABLE |
;JUMP Z,retry_status_check |
; end 120103 |
CALL read_word |
; |
; IF 256 WORD READED -> SECTOR AVAILABLE=0 |
; |
AND s6,s6 |
JUMP Z,reset_word_readed |
; |
; DECREMENT NUMBER OF WORDS READED |
; |
;SUB s6,01 |
RETURN |
reset_word_readed: |
; |
; IF 256 WORD READED -> SECTOR AVAILABLE=0 |
; |
;ADD s7,01 |
LOAD s6,FF |
LOAD sF,FE |
AND s5,sF |
RETURN |
; |
read_word: |
; |
; READ WORDS FROM IDE DATA REGISTERS |
; |
LOAD sF,DATA |
CALL read_ide_register |
; |
; DATA ARE IN sB , sC |
; |
; DATA AVAILABLE SIGNAL IS STORED |
LOAD sF,TAG0_WORD_AVAILABLE |
OUTPUT sF,CONTROL_WB_OUT |
SUB s6,01 |
RETURN |
dummy_word_read: |
CALL read_word |
read_new_sector: |
CALL cf_status_check |
LOAD sF,s5 |
AND sF,DATA_TRANSFER_ALLOWED |
;loops until previous non readed words are readed |
JUMP NZ,dummy_word_read |
LOAD sF,s5 |
AND sF,ERROR_MY_STATUS |
RETURN NZ |
LOAD sF,s5 |
AND sF,COMMAND_ALLOWED |
; loops until commands are allowed |
LOAD s6,FF |
JUMP Z,read_new_sector |
JUMP read_sector |
cf_status_check: |
; |
; CF STATUS REGISTER READ |
; |
LOAD sF,STATUS |
CALL read_ide_register |
; |
; ERROR |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 0 0 0 0 0 0 0 1 |
; ERR-ST X X X X X X X 1 |
; AND 0 0 0 0 0 0 0 1 |
LOAD sF,01 |
AND sF,sB |
JUMP NZ,put_error_code |
; |
; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1) |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 1 1 0 0 1 0 0 1 |
; DRQ-ST 0 1 X X 1 X X 0 |
; AND 0 1 0 0 1 0 0 0 |
LOAD sF,C9 |
AND sF,sB |
SUB sF,48 |
JUMP Z,put_data_request_allowed |
; |
; |
; COMMAND ALLOWED MASK (READY=1 : BUSY=0) |
; |
; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR |
; MASK 1 1 0 0 0 0 0 1 |
; CMD-ST 0 1 X X 0 X X 0 |
; AND 0 1 0 0 0 0 0 0 |
LOAD sF,C1 |
AND sF,sB |
SUB sF,40 |
JUMP Z,put_command_allowed |
; |
; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0 |
; |
;JUMP put_error_code |
; REVISAR ??? |
;AND s5,01 |
RETURN |
put_error_code: |
; |
; ERROR SIGNAL |
; |
; PUT ERROR CODE |
; |
LOAD sF,04 |
OUTPUT sF,CONTROL_OUT |
CALL soft_reset |
LOAD s5,ERROR_MY_STATUS |
RETURN |
;JUMP inicialization (STACK OVERFLOW???) |
soft_reset: |
LOAD sD,SOFT_RESET |
LOAD sF,CONTROL |
CALL write_ide_register |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sF,FF |
CALL wait_loop |
LOAD sD,00 |
LOAD sF,CONTROL |
CALL write_ide_register |
RETURN |
put_data_request_allowed: |
; |
; DRQ ALLOW -> MY STATUS REGISTER |
; |
AND s5,FD |
LOAD sF,DATA_TRANSFER_ALLOWED |
OR s5,sF |
RETURN |
put_command_allowed: |
; |
; DRQ ALLOW -> MY STATUS REGISTER |
; |
AND s5,FB |
LOAD sF,COMMAND_ALLOWED |
OR s5,sF |
RETURN |
ADDRESS FF |
interrupt: |
RETURNI ENABLE |
/compile/ngd2vhdl.log
0,0 → 1,19
Release 4.2i - ngd2vhdl E.35 |
Copyright (c) 1995-2001 Xilinx, Inc. All rights reserved. |
ngd2vhdl: Reading design cfreader.ngd ... |
ngd2vhdl: Specializing design ... |
ngd2vhdl: Flattening design ... |
ngd2vhdl: Flattening design completed. |
ngd2vhdl: Adding the appropriate PHYSONLY signals to the appropriate simprims. |
ngd2vhdl: Specializing design completed. |
|
ngd2vhdl: Processing design ... |
ngd2vhdl: Preping physical only global signals ... |
ngd2vhdl: Preping design's networks ... |
ngd2vhdl: Preping design's macros ... |
ngd2vhdl: Preping design completed. |
|
ngd2vhdl: Writing VHDL netlist cfreader.vhd ... |
ngd2vhdl: Setting external property filter file to C:/XILINX/data/xdm2vhdl.prp. |
ngd2vhdl: Writing file cfreader.vhd completed. |
|
/compile/transcript
0,0 → 1,3
# Reading C:/Modeltech_xe/win32xoem/../tcl/vsim/pref.tcl |
# OpenFile C:/cf_rd/sources/cfreader/280503_kcpsm_1002/CFREADER.VHD |
Warning: A ModelSim starter license was detected and will be used, even though you have installed ModelSim XE. You should obtain an XE license in order to access ModelSim XE's full capabilities. |
/compile/db.bat
0,0 → 1,3
psmdebug cfdebug.coe |
compile/db.bat
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: compile/CFREADER.LOG
===================================================================
--- compile/CFREADER.LOG (nonexistent)
+++ compile/CFREADER.LOG (revision 13)
@@ -0,0 +1,702 @@
+KCPSM Assembler log file for program 'cfreader.psm'.
+Generated by KCPSM version 1.10
+Ken Chapman (Xilinx Ltd) 2002.
+
+Addr Code
+
+ 00 ;--===========================================================================--
+ 00 ;--
+ 00 ;-- CF SECTOR READER
+ 00 ;--
+ 00 ;-- - SEPTEMBER 2002
+ 00 ;-- - UPV / EHU.
+ 00 ;--
+ 00 ;-- Design units : FAT FILE LOADER
+ 00 ;--
+ 00 ;-- File name : cf_sector_reader.txt
+ 00 ;--
+ 00 ;-- Purpose : READ RAW SECTORS FROM CF
+ 00 ;--
+ 00 ;-- Library : -
+ 00 ;--
+ 00 ;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ 00 ;--
+ 00 ;-- Compiler : KCPSM ASSEMBLER V1.25
+ 00 ;--
+ 00 ;-- Debugger : PSM DEBUG V1.00
+ 00 ;--===========================================================================--
+ 00 ;-------------------------------------------------------------------------------
+ 00 ;-- Revision list
+ 00 ;-- Version Author Date Changes
+ 00 ;--
+ 00 ;-- 260902 Armando Astarloa 27 September 2002 -
+ 00 ;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ 00 ;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ 00 ;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ 00 ;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ 00 ;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ 00 ;-- do_reset_and_retry state
+ 00 ;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ 00 ;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ 00 ;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ 00 ;--
+ 00 ;-------------------------------------------------------------------------------
+ 00 ;-- Description : DUMMY CF SECTORS READ
+ 00 ;-------------------------------------------------------------------------------
+ 00 ;--
+ 00 ;-- CONSTANT DEFINITIONS
+ 00 ;--
+ 00 CONSTANT DELAY1, 03
+ 00 ; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ 00 ; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ 00 CONSTANT IDENTIFY_COMMAND, EC
+ 00 CONSTANT WRITE_SECTOR_COMMAND, 30
+ 00 CONSTANT READ_SECTOR_COMMAND, 20
+ 00 CONSTANT WRITE_SEC_FEATURE, 00
+ 00 CONSTANT SOFT_RESET, 04
+ 00 ;--
+ 00 ;-- RAM REGISTERS
+ 00 ;--
+ 00 ;
+ 00 ; s0
+ 00 ; s1
+ 00 ; s2
+ 00 ; s3 -> WISHBONE CONTROL
+ 00 ; s4 -> REGISTERS STACK
+ 00 ; s5 -> MY_STATUS
+ 00 ; D3 = ERROR
+ 00 ; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ 00 ; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ 00 ; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ 00 CONSTANT SECTOR_AVAILABLE, 01
+ 00 CONSTANT COMMAND_ALLOWED, 02
+ 00 CONSTANT DATA_TRANSFER_ALLOWED, 04
+ 00 CONSTANT ERROR_MY_STATUS, 08
+ 00 ; s6 -> WORDS_READ
+ 00 ; s7 -> LBA_7_0
+ 00 ; s8 -> LBA_15_8
+ 00 ; s9 -> LBA_23_16
+ 00 ; sA -> LD_LBA_27_24
+ 00 ; sB -> data[7:0] in ide
+ 00 ; sC -> data[15:8] in ide
+ 00 ; sD -> data[7:0] out ide
+ 00 ; sE -> data[15:8] out ide
+ 00 ; sF -> acummulator
+ 00 ;
+ 00 ;--
+ 00 ;-- OUTPUT PORTS
+ 00 ;--
+ 00 ;--
+ 00 ;-- IDE INTERFACE PORTS - OUTPUTS
+ 00 ;--
+ 00 CONSTANT DATA_IDE_OUT_7_0, 00
+ 00 CONSTANT DATA_IDE_OUT_15_8, 01
+ 00 CONSTANT IDE_CONTROL_OUT, 02
+ 00 ; D7 =
+ 00 ; D6 =
+ 00 ; D5 =
+ 00 ; D4 =
+ 00 ; D3 =
+ 00 ; D2 =
+ 00 ; D1 = NIOWR
+ 00 ; D0 = NIORD
+ 00 CONSTANT NIOWR, FD
+ 00 CONSTANT NIORD, FE
+ 00 CONSTANT IDE_ADDRESS_OUT, 03
+ 00 ; D7 =
+ 00 ; D6 =
+ 00 ; D5 =
+ 00 ; D4 = NCE1
+ 00 ; D3 = NCE0
+ 00 ; D2 = A2
+ 00 ; D1 = A1
+ 00 ; D0 = A0
+ 00 ;
+ 00 ; WRITE IDE REGISTERS
+ 00 ;
+ 00 ; NCE1/NCE0/ A2/ A1/ A0
+ 00 CONSTANT CONTROL, 0E ; 000 0 1 1 1 0
+ 00 CONSTANT DATA, 10 ; 000 1 0 0 0 0
+ 00 CONSTANT FEATURE, 11 ; 000 1 0 0 0 1
+ 00 CONSTANT SECTOR_COUNT, 12 ; 000 1 0 0 1 0
+ 00 CONSTANT LBA_7_0, 13 ; 000 1 0 0 1 1
+ 00 CONSTANT LBA_15_8, 14 ; 000 1 0 1 0 0
+ 00 CONSTANT LBA_23_16, 15 ; 000 1 0 1 0 1
+ 00 CONSTANT LD_LBA_27_24, 16 ; 000 1 0 1 1 0
+ 00 CONSTANT COMMAND, 17 ; 000 1 0 1 1 1
+ 00 CONSTANT CF_OFF, 18 ; 000 1 1 0 0 0
+ 00 ;
+ 00 ; READ IDE REGISTERS
+ 00 ; NCE1/NCE0/ A2/ A1/ A0
+ 00 CONSTANT A_STATUS, 0E ; 000 0 1 1 1 0
+ 00 CONSTANT STATUS, 17 ; 000 1 0 1 1 1
+ 00 ;--
+ 00 ;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ 00 ;--
+ 00 CONSTANT DATA_WB_OUT_7_0, 04
+ 00 CONSTANT DATA_WB_OUT_15_8, 05
+ 00 CONSTANT CONTROL_WB_OUT, 06
+ 00 ; D7 =
+ 00 ; D6 =
+ 00 ; D5 =
+ 00 ; D4 =
+ 00 ; D3 =
+ 00 ; D2 =
+ 00 ; D1 = TAG0_WORD_AVAILABLE
+ 00 ; D0 = ACK_CF_READER
+ 00 CONSTANT ACK_CF_READER, 01
+ 00 CONSTANT TAG0_WORD_AVAILABLE, 02
+ 00 ;--
+ 00 ;-- BUS CONTROL SIGNALS
+ 00 ;--
+ 00 CONSTANT CONTROL_OUT, 07
+ 00 ; D7 =
+ 00 ; D6 =
+ 00 ; D5 =
+ 00 ; D4 =
+ 00 ; D3 =
+ 00 ; D2 = ERROR
+ 00 ; D1 = WB_BUS_WRITE_ENABLE
+ 00 ; D0 = IDE_BUS_WRITE_ENABLE
+ 00 CONSTANT IDE_BUS_WRITE_ENABLE, 01
+ 00 CONSTANT WB_BUS_WRITE_ENABLE, 02
+ 00 CONSTANT ERROR, 04
+ 00 ;--
+ 00 ;-- INPUT PORTS
+ 00 ;--
+ 00 ;--
+ 00 ;-- IDE INTERFACE PORTS - INPUTS
+ 00 ;--
+ 00 CONSTANT DATA_IDE_IN_7_0, 00
+ 00 CONSTANT DATA_IDE_IN_15_8, 01
+ 00 ;--
+ 00 ;-- WISHBONE INTERFACE PORTS - INPUTS
+ 00 ;--
+ 00 CONSTANT CONTROL_WB_IN, 02
+ 00 ; D7 =
+ 00 ; D6 =
+ 00 ; D5 =
+ 00 ; D4 = WB_A0
+ 00 ; D3 = -
+ 00 ; D2 = W_WE
+ 00 ; D1 = TAG1_WORD_REQUEST
+ 00 ; D0 = STROBE_CF_READER
+ 00 ;
+ 00 ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ 00 CONSTANT WRITE_LBA_15_0, 05
+ 00 ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ 00 CONSTANT WRITE_LBA_27_16, 15
+ 00 CONSTANT STROBE_CF_READER_AND_RD, 01
+ 00 CONSTANT TAG1_WORD_REQUEST, 02
+ 00 CONSTANT W_WE, 04
+ 00
+ 00
+ 00 ;--
+ 00 ;-- WISHBONE INTERFACE PORTS - INPUTS
+ 00 ;--
+ 00 CONSTANT DATA_WB_IN_7_0, 03
+ 00 CONSTANT DATA_WB_IN_15_8, 04
+ 00 ;--
+ 00 ;-- REGISTERS INITIALIZATION
+ 00 ;--
+ 00 inicialization:
+ 00 ;
+ 00 ; BUS CONTROL : WRITE NOT ENABLE
+ 00 ;
+ 00 0F00 LOAD sF, 00
+ 01 EF07 OUTPUT sF, CONTROL_OUT[07]
+ 02 ;
+ 02 ; WISHBONE BUS INIZIALIZATION
+ 02 ;
+ 02 0F00 LOAD sF, 00
+ 03 EF04 OUTPUT sF, DATA_WB_OUT_7_0[04]
+ 04 EF05 OUTPUT sF, DATA_WB_OUT_15_8[05]
+ 05 EF06 OUTPUT sF, CONTROL_WB_OUT[06]
+ 06 ;
+ 06 ; IDE BUS INICIALIZATION
+ 06 ;
+ 06 0F00 LOAD sF, 00
+ 07 EF00 OUTPUT sF, DATA_IDE_OUT_7_0[00]
+ 08 EF01 OUTPUT sF, DATA_IDE_OUT_15_8[01]
+ 09 0F18 LOAD sF, 18
+ 0A EF03 OUTPUT sF, IDE_ADDRESS_OUT[03]
+ 0B 0FFF LOAD sF, FF
+ 0C EF02 OUTPUT sF, IDE_CONTROL_OUT[02]
+ 0D ;
+ 0D ; WAIT FOR 210NS*31 (RESET DELAY)
+ 0D ;
+ 0D 0500 LOAD s5, 00
+ 0E 0600 LOAD s6, 00
+ 0F 0FFF LOAD sF, FF
+ 10 8347 CALL wait_loop[47]
+ 11 83CB CALL soft_reset[CB]
+ 12 0FFF LOAD sF, FF
+ 13 8347 CALL wait_loop[47]
+ 14 0FFF LOAD sF, FF
+ 15 8347 CALL wait_loop[47]
+ 16 0FFF LOAD sF, FF
+ 17 8347 CALL wait_loop[47]
+ 18 main:
+ 18 ;
+ 18 ; CHECK WISHBONE BUS
+ 18 ;
+ 18 ; wait state for stb_i deassertion
+ 18 ;LOAD sF,01
+ 18 ;CALL wait_loop
+ 18 CFF1 AND sF, sF
+ 19 CFF1 AND sF, sF
+ 1A CFF1 AND sF, sF
+ 1B CFF1 AND sF, sF
+ 1C A302 INPUT s3, CONTROL_WB_IN[02]
+ 1D ;
+ 1D ; CHECK STROBE & READ
+ 1D ;
+ 1D CF30 LOAD sF, s3
+ 1E 6F05 SUB sF, WRITE_LBA_15_0[05]
+ 1F 912A JUMP Z, store_lba_15_0[2A]
+ 20 CF30 LOAD sF, s3
+ 21 6F15 SUB sF, WRITE_LBA_27_16[15]
+ 22 912F JUMP Z, store_lba_27_16[2F]
+ 23 CF30 LOAD sF, s3
+ 24 6F01 SUB sF, STROBE_CF_READER_AND_RD[01]
+ 25 9136 JUMP Z, put_data_in_wb_bus[36]
+ 26 ;
+ 26 ; IF NOT READ REQUEST MAINTAIN SIGNAL
+ 26 ;
+ 26 0F00 LOAD sF, 00
+ 27 EF07 OUTPUT sF, CONTROL_OUT[07]
+ 28 EF06 OUTPUT sF, CONTROL_WB_OUT[06]
+ 29 8118 JUMP main[18]
+ 2A store_lba_15_0:
+ 2A ; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ 2A A703 INPUT s7, DATA_WB_IN_7_0[03]
+ 2B ; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ 2B A804 INPUT s8, DATA_WB_IN_15_8[04]
+ 2C ; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ 2C 0F00 LOAD sF, 00
+ 2D C5F1 AND s5, sF
+ 2E 813E JUMP wishbone_ack[3E]
+ 2F store_lba_27_16:
+ 2F ; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ 2F A903 INPUT s9, DATA_WB_IN_7_0[03]
+ 30 ; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ 30 AA04 INPUT sA, DATA_WB_IN_15_8[04]
+ 31 ; SECTOR AVAILABLE -> 0
+ 31 ; antes 020503 LOAD sF,FE
+ 31 0F00 LOAD sF, 00
+ 32 C5F1 AND s5, sF
+ 33 813E JUMP wishbone_ack[3E]
+ 34 do_reset_and_retry:
+ 34 83CB CALL soft_reset[CB]
+ 35 0500 LOAD s5, 00
+ 36 put_data_in_wb_bus:
+ 36 8396 CALL read_word_from_cf[96]
+ 37 ; check for error
+ 37 CF50 LOAD sF, s5
+ 38 1F08 AND sF, ERROR_MY_STATUS[08]
+ 39 9534 JUMP NZ, do_reset_and_retry[34]
+ 3A EB04 OUTPUT sB, DATA_WB_OUT_7_0[04]
+ 3B EC05 OUTPUT sC, DATA_WB_OUT_15_8[05]
+ 3C ;
+ 3C ; ENABLE WB ENABLE
+ 3C ;
+ 3C 0F02 LOAD sF, WB_BUS_WRITE_ENABLE[02]
+ 3D EF07 OUTPUT sF, CONTROL_OUT[07]
+ 3E wishbone_ack:
+ 3E ;
+ 3E ; WISHBONE ACK
+ 3E ;
+ 3E 0F01 LOAD sF, ACK_CF_READER[01]
+ 3F EF06 OUTPUT sF, CONTROL_WB_OUT[06]
+ 40 ; null - wait state
+ 40 ;
+ 40 CFF1 AND sF, sF
+ 41 CFF1 AND sF, sF
+ 42 CFF1 AND sF, sF
+ 43 CFF1 AND sF, sF
+ 44 ; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ 44 ; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ 44 ; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ 44 ;
+ 44 0F00 LOAD sF, 00
+ 45 EF06 OUTPUT sF, CONTROL_WB_OUT[06]
+ 46 ;OUTPUT sF,CONTROL_OUT
+ 46 8118 JUMP main[18]
+ 47 wait_loop:
+ 47 ;
+ 47 ; SOFTWARE DELAY LOOP
+ 47 ; TAKES SLOW LOOP VALUE FROM sF
+ 47 ;
+ 47 ; TWO CYCLES PER INSTRUCTION
+ 47 ;
+ 47 ; SLOW LOOP 3 INSTRUCTIONS * sF
+ 47 ; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ 47 ; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ 47 C1F0 LOAD s1, sF
+ 48 slow_loop:
+ 48 0003 LOAD s0, DELAY1[03]
+ 49 fast_loop:
+ 49 6001 SUB s0, 01
+ 4A 9549 JUMP NZ, fast_loop[49]
+ 4B 6101 SUB s1, 01
+ 4C 9548 JUMP NZ, slow_loop[48]
+ 4D 8080 RETURN
+ 4E write_ide_register:
+ 4E ;
+ 4E ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ 4E ;
+ 4E EF03 OUTPUT sF, IDE_ADDRESS_OUT[03]
+ 4F ;
+ 4F ; DATA OUT IDE
+ 4F ;
+ 4F ED00 OUTPUT sD, DATA_IDE_OUT_7_0[00]
+ 50 EE01 OUTPUT sE, DATA_IDE_OUT_15_8[01]
+ 51 ;
+ 51 ; DATA OUT BUS ENABLE
+ 51 ;
+ 51 0F01 LOAD sF, IDE_BUS_WRITE_ENABLE[01]
+ 52 EF07 OUTPUT sF, CONTROL_OUT[07]
+ 53 ;
+ 53 ; WAIT FOR 70 NS (MIN)
+ 53 ; (120ns/50Mhz)
+ 53 0F01 LOAD sF, 01
+ 54 8347 CALL wait_loop[47]
+ 55 ;
+ 55 ; WRITE STROBE ON
+ 55 ;
+ 55 0FFD LOAD sF, NIOWR[FD]
+ 56 EF02 OUTPUT sF, IDE_CONTROL_OUT[02]
+ 57 ;
+ 57 ; WAIT FOR 165NS (MIN)
+ 57 ; (240ns/50Mhz)
+ 57 ; 020503
+ 57 0F02 LOAD sF, 02
+ 58 8347 CALL wait_loop[47]
+ 59 ;
+ 59 ; WRITE STROBE OFF
+ 59 ;
+ 59 0FFF LOAD sF, FF
+ 5A EF02 OUTPUT sF, IDE_CONTROL_OUT[02]
+ 5B ;
+ 5B ; WAIT FOR 20NS (MIN)
+ 5B ; (410ns/50Mhz)
+ 5B ; 020503
+ 5B ;LOAD sF,01
+ 5B ;CALL wait_loop
+ 5B ;
+ 5B ; CE AND ADRESSES OFF
+ 5B ;
+ 5B 0F18 LOAD sF, CF_OFF[18]
+ 5C EF03 OUTPUT sF, IDE_ADDRESS_OUT[03]
+ 5D ;
+ 5D ; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ 5D ; (put again 020503)
+ 5D 0F01 LOAD sF, 01
+ 5E 8347 CALL wait_loop[47]
+ 5F ;
+ 5F ; DATA OUT BUS DISABLE
+ 5F ;
+ 5F 0F00 LOAD sF, 00
+ 60 EF07 OUTPUT sF, CONTROL_OUT[07]
+ 61 ;
+ 61 ; (put again 020503)
+ 61 0F02 LOAD sF, 02
+ 62 8347 CALL wait_loop[47]
+ 63 8080 RETURN
+ 64 read_ide_register:
+ 64 ;
+ 64 ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ 64 ;
+ 64 EF03 OUTPUT sF, IDE_ADDRESS_OUT[03]
+ 65 ;
+ 65 ; WAIT FOR 70 NS (MIN)
+ 65 ;
+ 65 0F01 LOAD sF, 01
+ 66 8347 CALL wait_loop[47]
+ 67 ;
+ 67 ; READ STROBE ON
+ 67 ; reset control_out (140503)
+ 67 0F00 LOAD sF, 00
+ 68 EF07 OUTPUT sF, CONTROL_OUT[07]
+ 69 0FFE LOAD sF, NIORD[FE]
+ 6A EF02 OUTPUT sF, IDE_CONTROL_OUT[02]
+ 6B ;
+ 6B ; WAIT FOR 165NS (MIN)
+ 6B ;
+ 6B 0F02 LOAD sF, 02
+ 6C 8347 CALL wait_loop[47]
+ 6D ;
+ 6D ; TAKE DE DATA FROM IDE BUS
+ 6D ;
+ 6D AB00 INPUT sB, DATA_IDE_IN_7_0[00]
+ 6E AC01 INPUT sC, DATA_IDE_IN_15_8[01]
+ 6F ;
+ 6F ; READ STROBE OFF
+ 6F ;
+ 6F 0FFF LOAD sF, FF
+ 70 EF02 OUTPUT sF, IDE_CONTROL_OUT[02]
+ 71 ;
+ 71 ; WAIT FOR 20NS (MIN)
+ 71 ;
+ 71 ;LOAD sF,01
+ 71 ;CALL wait_loop
+ 71 ;
+ 71 ; CE AND ADRESSES OFF
+ 71 ;
+ 71 0F18 LOAD sF, CF_OFF[18]
+ 72 EF03 OUTPUT sF, IDE_ADDRESS_OUT[03]
+ 73 ;
+ 73 ; WAIT FOR 20NS (MIN)
+ 73 ; (120ns/50mhz)
+ 73 ;LOAD sF,01
+ 73 ;CALL wait_loop
+ 73 8080 RETURN
+ 74 read_sector:
+ 74 ;
+ 74 ; WRITE ATA COMMANDS TO THE CF
+ 74 ;
+ 74 ;
+ 74 ; IDE FEATURE REGISTER
+ 74 ;
+ 74 0D00 LOAD sD, WRITE_SEC_FEATURE[00]
+ 75 0F11 LOAD sF, FEATURE[11]
+ 76 834E CALL write_ide_register[4E]
+ 77 ;
+ 77 ; IDE SECTOR COUNT REGISTER
+ 77 ;
+ 77 0D01 LOAD sD, 01
+ 78 0F12 LOAD sF, SECTOR_COUNT[12]
+ 79 834E CALL write_ide_register[4E]
+ 7A ;
+ 7A ; IDE LBA_7_0
+ 7A ;
+ 7A CD70 LOAD sD, s7
+ 7B 0F13 LOAD sF, LBA_7_0[13]
+ 7C 834E CALL write_ide_register[4E]
+ 7D ;
+ 7D ; IDE LBA_15_8
+ 7D ;
+ 7D CD80 LOAD sD, s8
+ 7E 0F14 LOAD sF, LBA_15_8[14]
+ 7F 834E CALL write_ide_register[4E]
+ 80 ;
+ 80 ; IDE LBA_23_16
+ 80 ;
+ 80 CD90 LOAD sD, s9
+ 81 0F15 LOAD sF, LBA_23_16[15]
+ 82 834E CALL write_ide_register[4E]
+ 83 ;
+ 83 ; IDE LD_LBA_27_24
+ 83 ;
+ 83 ; LBA_27_42 OR WITH 1110
+ 83 ; BIT7 : 1
+ 83 ; BIT6 : LBA=1
+ 83 ; BIT5 : 1
+ 83 ; BIT4 : DRV=0
+ 83 ;
+ 83 ;
+ 83 CFA0 LOAD sF, sA
+ 84 2FE0 OR sF, E0
+ 85 CDF0 LOAD sD, sF
+ 86 0F16 LOAD sF, LD_LBA_27_24[16]
+ 87 834E CALL write_ide_register[4E]
+ 88 ;
+ 88 ; IDE READ SECTOR COMMAND
+ 88 ;
+ 88 0D20 LOAD sD, READ_SECTOR_COMMAND[20]
+ 89 0F17 LOAD sF, COMMAND[17]
+ 8A 834E CALL write_ide_register[4E]
+ 8B ;
+ 8B ; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ 8B ;
+ 8B ; 290103 Added data available check
+ 8B retry_status_check:
+ 8B 83B8 CALL cf_status_check[B8]
+ 8C CF50 LOAD sF, s5
+ 8D 1F08 AND sF, ERROR_MY_STATUS[08]
+ 8E 9480 RETURN NZ
+ 8F 0F04 LOAD sF, DATA_TRANSFER_ALLOWED[04]
+ 90 CF51 AND sF, s5
+ 91 ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ 91 918B JUMP Z, retry_status_check[8B]
+ 92 0F01 LOAD sF, SECTOR_AVAILABLE[01]
+ 93 C5F2 OR s5, sF
+ 94 ;
+ 94 ; RESET WORDS READ REGISTER
+ 94 ;
+ 94 06FF LOAD s6, FF
+ 95 8080 RETURN
+ 96 read_word_from_cf:
+ 96 ;
+ 96 ; CHECK IF THE SECTOR IS AVAILABLE
+ 96 ;
+ 96 0F01 LOAD sF, SECTOR_AVAILABLE[01]
+ 97 CF51 AND sF, s5
+ 98 ;
+ 98 ; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ 98 ;
+ 98 93AC CALL Z, read_new_sector[AC]
+ 99 ; check for error
+ 99 CF50 LOAD sF, s5
+ 9A 1F08 AND sF, ERROR_MY_STATUS[08]
+ 9B 9480 RETURN NZ
+ 9C ;retry_status_check:
+ 9C ;CALL cf_status_check
+ 9C ;
+ 9C ; CHECK IF DATA IS AVAILABLE
+ 9C ;
+ 9C ; 120103 - changed . When there is sector
+ 9C ; available in the cf ram buffer it is not
+ 9C ; necessary to check neither bsy or drq
+ 9C ; only read words with the correct timing paramenters
+ 9C ;
+ 9C ;LOAD sF,DATA_TRANSFER_ALLOWED
+ 9C ;AND sF,s5
+ 9C ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ 9C ;JUMP Z,retry_status_check
+ 9C ; end 120103
+ 9C ;
+ 9C ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ 9C ;
+ 9C 83A5 CALL read_word[A5]
+ 9D C661 AND s6, s6
+ 9E 91A1 JUMP Z, reset_word_READ[A1]
+ 9F ;
+ 9F ; DECREMENT NUMBER OF WORDS READ
+ 9F ;
+ 9F 6601 SUB s6, 01
+ A0 8080 RETURN
+ A1 reset_word_READ:
+ A1 ;
+ A1 ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ A1 ;
+ A1 ;ADD s7,01
+ A1 06FF LOAD s6, FF
+ A2 0FFE LOAD sF, FE
+ A3 C5F1 AND s5, sF
+ A4 8080 RETURN
+ A5
+ A5 read_word:
+ A5 ;
+ A5 ; READ WORDS FROM IDE DATA REGISTERS
+ A5 ;
+ A5 0F10 LOAD sF, DATA[10]
+ A6 8364 CALL read_ide_register[64]
+ A7 ;
+ A7 ; DATA ARE IN sB , sC
+ A7 ;
+ A7 ; DATA AVAILABLE SIGNAL IS STORED
+ A7 0F02 LOAD sF, TAG0_WORD_AVAILABLE[02]
+ A8 EF06 OUTPUT sF, CONTROL_WB_OUT[06]
+ A9 8080 RETURN
+ AA dummy_word_read:
+ AA 83A5 CALL read_word[A5]
+ AB 6601 SUB s6, 01
+ AC read_new_sector:
+ AC 83B8 CALL cf_status_check[B8]
+ AD CF50 LOAD sF, s5
+ AE 1F04 AND sF, DATA_TRANSFER_ALLOWED[04]
+ AF ;loops until previous non READ words are READ
+ AF 95AA JUMP NZ, dummy_word_read[AA]
+ B0 CF50 LOAD sF, s5
+ B1 1F08 AND sF, ERROR_MY_STATUS[08]
+ B2 9480 RETURN NZ
+ B3 CF50 LOAD sF, s5
+ B4 1F02 AND sF, COMMAND_ALLOWED[02]
+ B5 ; loops until commands are allowed
+ B5 06FF LOAD s6, FF
+ B6 91AC JUMP Z, read_new_sector[AC]
+ B7 8174 JUMP read_sector[74]
+ B8 cf_status_check:
+ B8 ;
+ B8 ; CF STATUS REGISTER READ
+ B8 ;
+ B8 0F17 LOAD sF, STATUS[17]
+ B9 8364 CALL read_ide_register[64]
+ BA ;
+ BA ; ERROR
+ BA ;
+ BA ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ BA ; MASK 0 0 0 0 0 0 0 1
+ BA ; ERR-ST X X X X X X X 1
+ BA ; AND 0 0 0 0 0 0 0 1
+ BA 0F01 LOAD sF, 01
+ BB CFB1 AND sF, sB
+ BC 95C6 JUMP NZ, put_error_code[C6]
+ BD ;
+ BD ; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ BD ;
+ BD ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ BD ; MASK 1 1 0 0 1 0 0 1
+ BD ; DRQ-ST 0 1 X X 1 X X 0
+ BD ; AND 0 1 0 0 1 0 0 0
+ BD 0FC9 LOAD sF, C9
+ BE CFB1 AND sF, sB
+ BF 6F48 SUB sF, 48
+ C0 91DA JUMP Z, put_data_request_allowed[DA]
+ C1
+ C1 ;
+ C1 ; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ C1 ;
+ C1 ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ C1 ; MASK 1 1 0 0 0 0 0 1
+ C1 ; CMD-ST 0 1 X X 0 X X 0
+ C1 ; AND 0 1 0 0 0 0 0 0
+ C1 0FC1 LOAD sF, C1
+ C2 CFB1 AND sF, sB
+ C3 6F40 SUB sF, 40
+ C4 91DE JUMP Z, put_command_allowed[DE]
+ C5 ;
+ C5 ; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ C5 ;
+ C5 ;JUMP put_error_code
+ C5 ; REVISAR ???
+ C5 ;AND s5,01
+ C5 8080 RETURN
+ C6 put_error_code:
+ C6 ;
+ C6 ; ERROR SIGNAL
+ C6 ;
+ C6 ; PUT ERROR CODE
+ C6 ;
+ C6 0F04 LOAD sF, 04
+ C7 EF07 OUTPUT sF, CONTROL_OUT[07]
+ C8 83CB CALL soft_reset[CB]
+ C9 0508 LOAD s5, ERROR_MY_STATUS[08]
+ CA 8080 RETURN
+ CB ;JUMP inicialization (STACK OVERFLOW???)
+ CB soft_reset:
+ CB 0D04 LOAD sD, SOFT_RESET[04]
+ CC 0F0E LOAD sF, CONTROL[0E]
+ CD 834E CALL write_ide_register[4E]
+ CE 0FFF LOAD sF, FF
+ CF 8347 CALL wait_loop[47]
+ D0 0FFF LOAD sF, FF
+ D1 8347 CALL wait_loop[47]
+ D2 0FFF LOAD sF, FF
+ D3 8347 CALL wait_loop[47]
+ D4 0FFF LOAD sF, FF
+ D5 8347 CALL wait_loop[47]
+ D6 0D00 LOAD sD, 00
+ D7 0F0E LOAD sF, CONTROL[0E]
+ D8 834E CALL write_ide_register[4E]
+ D9 8080 RETURN
+ DA put_data_request_allowed:
+ DA ;
+ DA ; DRQ ALLOW -> MY STATUS REGISTER
+ DA ;
+ DA 15FD AND s5, FD
+ DB 0F04 LOAD sF, DATA_TRANSFER_ALLOWED[04]
+ DC C5F2 OR s5, sF
+ DD 8080 RETURN
+ DE put_command_allowed:
+ DE ;
+ DE ; DRQ ALLOW -> MY STATUS REGISTER
+ DE ;
+ DE 15FB AND s5, FB
+ DF 0F02 LOAD sF, COMMAND_ALLOWED[02]
+ E0 C5F2 OR s5, sF
+ E1 8080 RETURN
+ FF ADDRESS FF
+ FF interrupt:
+ FF 80F0 RETURNI ENABLE
Index: compile/CFREADER.VHD
===================================================================
--- compile/CFREADER.VHD (nonexistent)
+++ compile/CFREADER.VHD (revision 13)
@@ -0,0 +1,103 @@
+--
+-- Definition of a single port ROM for KCPSM program defined by cfreader.psm
+-- and assmbled using KCPSM assembler.
+--
+-- Standard IEEE libraries
+--
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+--
+-- The Unisim Library is used to define Xilinx primitives. It is also used during
+-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd
+--
+library unisim;
+use unisim.vcomponents.all;
+--
+--
+entity cfreader is
+ Port ( address : in std_logic_vector(7 downto 0);
+ instruction : out std_logic_vector(15 downto 0);
+ clk : in std_logic);
+ end cfreader;
+--
+architecture low_level_definition of cfreader is
+--
+-- Attributes to define ROM contents during implementation synthesis.
+-- The information is repeated in the generic map for functional simulation
+--
+attribute INIT_00 : string;
+attribute INIT_01 : string;
+attribute INIT_02 : string;
+attribute INIT_03 : string;
+attribute INIT_04 : string;
+attribute INIT_05 : string;
+attribute INIT_06 : string;
+attribute INIT_07 : string;
+attribute INIT_08 : string;
+attribute INIT_09 : string;
+attribute INIT_0A : string;
+attribute INIT_0B : string;
+attribute INIT_0C : string;
+attribute INIT_0D : string;
+attribute INIT_0E : string;
+attribute INIT_0F : string;
+--
+-- Attributes to define ROM contents during implementation synthesis.
+--
+attribute INIT_00 of ram_256_x_16 : label is "0FFF06000500EF020FFFEF030F18EF01EF000F00EF06EF05EF040F00EF070F00";
+attribute INIT_01 of ram_256_x_16 : label is "912A6F05CF30A302CFF1CFF1CFF1CFF183470FFF83470FFF83470FFF83CB8347";
+attribute INIT_02 of ram_256_x_16 : label is "A903813EC5F10F00A804A7038118EF06EF070F0091366F01CF30912F6F15CF30";
+attribute INIT_03 of ram_256_x_16 : label is "EF060F01EF070F02EC05EB0495341F08CF508396050083CB813EC5F10F00AA04";
+attribute INIT_04 of ram_256_x_16 : label is "ED00EF03808095486101954960010003C1F08118EF060F00CFF1CFF1CFF1CFF1";
+attribute INIT_05 of ram_256_x_16 : label is "0F0083470F01EF030F18EF020FFF83470F02EF020FFD83470F01EF070F01EE01";
+attribute INIT_06 of ram_256_x_16 : label is "0FFFAC01AB0083470F02EF020FFEEF070F0083470F01EF03808083470F02EF07";
+attribute INIT_07 of ram_256_x_16 : label is "834E0F14CD80834E0F13CD70834E0F120D01834E0F110D008080EF030F18EF02";
+attribute INIT_08 of ram_256_x_16 : label is "0F0494801F08CF5083B8834E0F170D20834E0F16CDF02FE0CFA0834E0F15CD90";
+attribute INIT_09 of ram_256_x_16 : label is "660191A1C66183A594801F08CF5093ACCF510F01808006FFC5F20F01918BCF51";
+attribute INIT_0A of ram_256_x_16 : label is "95AA1F04CF5083B8660183A58080EF060F0283640F108080C5F10FFE06FF8080";
+attribute INIT_0B of ram_256_x_16 : label is "6F48CFB10FC995C6CFB10F0183640F17817491AC06FF1F02CF5094801F08CF50";
+attribute INIT_0C of ram_256_x_16 : label is "83470FFF834E0F0E0D048080050883CBEF070F04808091DE6F40CFB10FC191DA";
+attribute INIT_0D of ram_256_x_16 : label is "0F0215FB8080C5F20F0415FD8080834E0F0E0D0083470FFF83470FFF83470FFF";
+attribute INIT_0E of ram_256_x_16 : label is "000000000000000000000000000000000000000000000000000000008080C5F2";
+attribute INIT_0F of ram_256_x_16 : label is "80F0000000000000000000000000000000000000000000000000000000000000";
+--
+begin
+--
+ --Instantiate the Xilinx primitive for a block RAM
+ ram_256_x_16: RAMB4_S16
+ --translate_off
+ --INIT values repeated to define contents for functional simulation
+ generic map (INIT_00 => X"0FFF06000500EF020FFFEF030F18EF01EF000F00EF06EF05EF040F00EF070F00",
+ INIT_01 => X"912A6F05CF30A302CFF1CFF1CFF1CFF183470FFF83470FFF83470FFF83CB8347",
+ INIT_02 => X"A903813EC5F10F00A804A7038118EF06EF070F0091366F01CF30912F6F15CF30",
+ INIT_03 => X"EF060F01EF070F02EC05EB0495341F08CF508396050083CB813EC5F10F00AA04",
+ INIT_04 => X"ED00EF03808095486101954960010003C1F08118EF060F00CFF1CFF1CFF1CFF1",
+ INIT_05 => X"0F0083470F01EF030F18EF020FFF83470F02EF020FFD83470F01EF070F01EE01",
+ INIT_06 => X"0FFFAC01AB0083470F02EF020FFEEF070F0083470F01EF03808083470F02EF07",
+ INIT_07 => X"834E0F14CD80834E0F13CD70834E0F120D01834E0F110D008080EF030F18EF02",
+ INIT_08 => X"0F0494801F08CF5083B8834E0F170D20834E0F16CDF02FE0CFA0834E0F15CD90",
+ INIT_09 => X"660191A1C66183A594801F08CF5093ACCF510F01808006FFC5F20F01918BCF51",
+ INIT_0A => X"95AA1F04CF5083B8660183A58080EF060F0283640F108080C5F10FFE06FF8080",
+ INIT_0B => X"6F48CFB10FC995C6CFB10F0183640F17817491AC06FF1F02CF5094801F08CF50",
+ INIT_0C => X"83470FFF834E0F0E0D048080050883CBEF070F04808091DE6F40CFB10FC191DA",
+ INIT_0D => X"0F0215FB8080C5F20F0415FD8080834E0F0E0D0083470FFF83470FFF83470FFF",
+ INIT_0E => X"000000000000000000000000000000000000000000000000000000008080C5F2",
+ INIT_0F => X"80F0000000000000000000000000000000000000000000000000000000000000",
+ --translate_on
+ port map( DI => "0000000000000000",
+ EN => '1',
+ WE => '0',
+ RST => '0',
+ CLK => clk,
+ ADDR => address,
+ DO => instruction(15 downto 0));
+--
+end low_level_definition;
+--
+------------------------------------------------------------------------------------
+--
+-- END OF FILE cfreader.vhd
+--
+------------------------------------------------------------------------------------
Index: compile/cfreader.ngo
===================================================================
--- compile/cfreader.ngo (nonexistent)
+++ compile/cfreader.ngo (revision 13)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.0e
+$bdx=>TFEK>T_<8=;DL4?DBCZ5<596J@<3<0?AO582?0HD2:>29GM61BN488596J@<8<74>>4:M<=6<4@2E44CA8:2;4=6<4@2E47CA8>:M<=6<4@2E4457UjmIe48@J:697l0EC][RTAWMJH;9;4n7D@\TSW@PLII4:4j7LJKRDQP868382OM<>>I19GE476ANO288L>I03GE476ANM288L>I00GE426A88ON<70990HD88;BPFEQCC9m1SEAGAX,ZGF%6)9)Y_YO.?.0"BWFON?2KOH_28>49GK959;2NB;85KI=4=7>BN0>1JHI\31?63?=5F?0>3<==H?192;450ANJ?M>=H?183;AF@299L;84:700D3<16<89:;<=>?0123456789:;<=>?0123456789:;<=>?01234567092;O8H=0G2150@E;2NB595_ASV5?AO;9:4>7IG30?58MKOSW9:?<6MI51:0FD>4=8:M=:>K21:0146A9?IOJ=4=8:M=8MK91:0146A9=IO4=m4URGQ[SOTAKFN:6J@<00=b>OI[]X^OYG@N=30:`=NFZ^YYNZFOO>7:d=FLMXN_^2;>`9VW@TXIECJ_:5FNHV\442739L;>HM?5D@30<34?8L;4NH:091:=537819HH5?;1B7E55@78HK;8L7?39375F3A9=:0OK;?82@B<6G0092;:;>>EG254C650:<<=0ECG[_116?#YN:;>0HD??7:NLCLEFD>1JHI\32?58MKOSW9>>7+QF1978"ZO5;=1OE9;EK?51823MC7=394IOKW[53382:MO47:C9AEF46A8828::>I16:232?6IL:=JK?I03AE15?309;M<5MI51;6EA7A8=?0*RG>949%[L43<2NB=?84SNWQG@09F52@BG77NJ;2=IM9F5:@BG723/UB>8;4&^K041=CA89h7nh}e`ffv+h`g:1H@F;4DN>6:2=NF@^T<::?;92;4F3A:9L;8<;ID92;4=5299L;I=J?0917E5@AN19?M=HIF917E5@AN19?M=HIF49%[L41=2,TE>?;;EK200=CA525;6GAIU]3<0=!W@8<96(PI207?AO6=o1Sh`CfnnpUawungg=0MIJ]<2<1?RC382:MJK>9012645CA8;:MJKKI022E5=CA88OM<=>I01GE43CA8I01GE426A89=0ECG[_1;7?!O59<1-SD<75:$\M6563E<0HD2>5?78@L:56:1Y_Y:4$H340>"N:;?0*RG=949%[L53>2ND0<:1f:KMWQTRK]CDB1?:>d9JJVRU]J^BCC29>`9B@ATB[Z6=295+I0:7?!O5;<1-SD=:8:CG@WCT[9i0EC][RTAWMJH7=2ND0;0;;%K2=1=#A;>>7+QF37:8EABUMZY:h6GASUPVGQOHF8:h7D@\TSW@PLII9o1Sh`CnjnpUawungg<0TDBFNY78@L:>6:1]ONk4IOQWVPESAFD7<3o4AEFQAVU;87>0(D<:4:&J75>>5HNE58EABU4=4>7IA30?68 L41<2.B?<64AEFQAVU4l2CE_Y\ZCUKLJ44d3@DXX_[LTHMM70=CA5958=570G23456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>;;%K131=#A:837LJKRDQP0a=NFZ^YYNZFOO30g>OI[]X^OYG@N5:8aaoa:gmo:6I]OTLG2>BH48?5i6GASUPVGQOHF5=5m6OKDSGPW919<9129=>>F1:@B66F;98HJK?LFG3@BC7DNO;3?9O?FGD;71G7NOL3?9O?FGD;7FB?;=K?7)G=859'M65?3HNO^H]\5e9JJVRU]J^BCC?;c:KMWQTRK]CDB874VHGT[Q_WM8?0SRVKM^VLTZVFZ]C_EB@P_79GM9776<1OC1918:aev`gcm{=0ECG[_1C7?!O51=1/E>:7;@FGV@UT>m1BB^Z]UBVJKK72k2CE_Y\ZCUKLJ3`=0MIJ]<4<6?AI;97>0XT^J7:KMMQY7K=1/E>8l;HLPPWSD\@EE4l5Y51RR616*<:1:"=;4DH>7:2=NF@^T==I=<=??011@5C6?982NJ=8?F12@BC7DNO;HJK?LFG3FB507N9;NJ=98;HLJPZ6B02\GSAKYEM48@L:697?0HB27>528<6368O;8OI9?82724C758M::4>;>0G324A67092;IK><0G3;AC658OLMMN>>AC233>OIA]U;J>5KI1;8GJKJA]^NH;5KO=33:c=NFZ^YYNZFOO>25;cLL;;=H?0830=3@79JL8<4?<27D21F@480;9H;H?5BD046=CA8wKL}m7;AB{15<72;0:w^?9:859fg<6;8k??44=7`ab>6}i?m0:7c;k:19'b?703tYh4778:c`9567f<:31>:ola;28`d0=93:1=7?tS049=2<1=jk0:?:183>>ifm3:1<75`cc83>5<5;n0:>5<722e?57>50;9j<7<72900c;h50;29?lga290;66a6a;294?=nkj0;6=44ocd94?6=3`;86=4?::m:>5<722c9m7>50;9j0d<72900e:>50;29?l?e290;66l99;37>5<5k3:1;4$c494>"5<3<;7):6<:4$5`9`>"2;3i>7);6:378 37=9l1/m:4=e:&a4?253-h<69m4$cf911=#k80:j6*l6;;2?l>=83:17d?k:183>>o4i3:1<75f5d83>5<5<722c:47>50;9je1<72900en=50;29?ld=83:17d<=:183>>o4n3:1<75f6783>5<5;h63>5<722c=;7>50;9j=5<72900eom50;29?l0=83:17d?m:183>>o4<3:1<75f5983>5<l1<7>5;h72>5<722e3m7>50;9lf0<72900c>4?:188k4?=83:17b=?:183>>i2:3:1<75`7783>5<5;na7>5<722eh6=4?::k56=831b9k4?:188kf?=83:17b??:183>>i5?3:1<75`4683>5<5;n;:>5<722wi;<4;:182>5<7sA8=7)m=:6g8 7d=;j1/n;478:m:6=831vn:954;295?6=8rB9:6*l2;5f?!4e2=90(o85819l<5<72900qo8=:583>4<729qC>;5+c384a>"5j3997)l9:9:8k<>=83:17pl9a;694?7=83:pD?84$b093`=#:k08;6*m6;:;?j??290;66sm7387>5<6290;wE<9;%a1>2c<,;h1?i5+b78;<>i>03:1<75rb6:90?6=93:11<7280;6=uG279'g7<0m2.9n7:k;%`5>=>5;|`;f?2=83;1<7>tH348 f4=?l1/>o4:5:&a2?>?3f336=4?::a=7<3290:6=4?{I05?!e52>o0(?l55`9'f302e247>50;9~f50zJ12>"d:3=n7)1<7?50;2xL70<,j81;h5+2c87a>"e>3237b77:183>>{e0j0?6=4>:183M413-i96:k4$3`913=#j?0346a68;294?=zj09187>51;294~N5>2.h>79j;%0a>0d<,k<1455`9983>5<5}O:?1/o?48e:&1f?033-h=6564o8:94?6=3thj57:50;394?6|@;<0(n<57d9'6g<1k2.i:767;n;;>5<722win<4;:182>5<7sA8=7)m=:6g8 7d=?:1/n;478:m:6=831vno654;295?6=8rB9:6*l2;5f?!4e2>30(o85899l==<72900q~7m:083>7}Y1k16:44>8:&1f?d53ty<<7?50;0xZ26<5?31>6*=b;cb?xu3i3;1<7 o46f:p6d<62909wS=?<,;h1595rs0195?6=:rT:?6399;7f?!4e21n0q~ml:083>7}Ykj16:4423tyjj7?50;0xZd`<5?31=i5+2c84e>{t0;0:6=4={_:1?80>211/>o484:p2`<62909wS8j;<4:><,;h1mo5rs5:95?6=:rT?46399;4g?!4e2h:0q~<7:083>7}Y:116:44;7:&1f??23ty:=7?50;0xZ47<5?31>:5+2c8;a>{tkh0:6=4={_ab?80>28:0(?l5879~wdb=93:1>vPnd:?5=?e>3-8i6:l4}r;95?6=:rT27086:b9'6g:181[da34<26n:4$3`9f<=z{0k1=7>52z\:e>;113k>7)2<<0>2.9n7ol;|q7=?7=838pR974=7;917=#:k0j=6s|2882>5<5sW827086:228 7d=1?1v<<51;296~X6:27=57?6;%0a>=`0087)2<5<5s4<26;84=709===#:k0>o6s|3g82>5<5s4<26>h4=7c9===#:k0>;6s|2382>5<5s4<26?<4=609===#:k0?j6s|b;394?4|5?31n6388;;;?!4e2=?0q~m<:083>7}:>00h?6373;;;?!4e2:o0q~o;:083>7}:>00j8637b;;;?!4e2:20q~9i:083>7}:>007}:>00>4636d;;;?!4e28i0q~=;:083>7}:>008863n8;;;?!4e28k0q~?m:083>7}:>00:n6374;;;?!4e28?0q~851;296~;113<015m5999'6g468:&1f?g2<<>8272i777;%0a>2=z{?=1=7>52z?5=?0034k26464$3`90>{t<90:6=4={<4:>16<5k;1555+2c8`a>{t::0:6=4={<4:>75<5k21555+2c8`3>{t=80;6=4={_72?80>2<;0q~7}:>00:7098:928 7d=;:1v;;50;297~;113?m709>:8:893?=>11vqc9i:083>4}O:?1vb:k51;295~N5>2we;i4>:182M413tdk1=7>51zJ12>{i1h0:6=4>{I05?xh?13;1<7?tH348yk>?280;64<728qC>;5rn6;95?6=9rB9:6sa8282>5<6sA8=7p`88;394?7|@;<0qc6=:083>4}O:?1vb:951;295~N5>2we4<4>:182M413td<:7?50;3xL70?1=7>51zJ12>{i?=0:6=4>{I05?xh0;3;1<7?tH348yk15280;64<728qC>;5rn9a95?6=9rB9:6sa8c82>5<6sA8=7p`7a;394?7|@;<0qc76:083>4}O:?1vb4651;295~N5>2we5:4>:182M413td2:7?50;3xL706<4?:0yK63=zf0>1=7>51zJ12>{i1:0:6=4>{I05?xh>:3;1<7?tH348yk?6280;6
compile/KCPSM.EXE
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: compile/PASS1.DAT
===================================================================
--- compile/PASS1.DAT (nonexistent)
+++ compile/PASS1.DAT (revision 13)
@@ -0,0 +1,3480 @@
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CF SECTOR READER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - SEPTEMBER 2002
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - UPV / EHU.
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Design units : FAT FILE LOADER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- File name : cf_sector_reader.txt
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Purpose : READ RAW SECTORS FROM CF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Library : -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Compiler : KCPSM ASSEMBLER V1.25
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Debugger : PSM DEBUG V1.00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Revision list
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Version Author Date Changes
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 260902 Armando Astarloa 27 September 2002 -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- do_reset_and_retry state
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Description : DUMMY CF SECTORS READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CONSTANT DEFINITIONS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DELAY1
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDENTIFY_COMMAND
+ OPERAND2-EC
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SECTOR_COMMAND
+ OPERAND2-30
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-READ_SECTOR_COMMAND
+ OPERAND2-20
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SEC_FEATURE
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SOFT_RESET
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- RAM REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s2
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s3 -> WISHBONE CONTROL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s4 -> REGISTERS STACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s5 -> MY_STATUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_AVAILABLE
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND_ALLOWED
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_TRANSFER_ALLOWED
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR_MY_STATUS
+ OPERAND2-08
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s6 -> WORDS_READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s7 -> LBA_7_0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s8 -> LBA_15_8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s9 -> LBA_23_16
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sA -> LD_LBA_27_24
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sB -> data[7:0] in ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sC -> data[15:8] in ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sD -> data[7:0] out ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sE -> data[15:8] out ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sF -> acummulator
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- OUTPUT PORTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - OUTPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_7_0
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_15_8
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_CONTROL_OUT
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = NIOWR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = NIORD
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIOWR
+ OPERAND2-FD
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIORD
+ OPERAND2-FE
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_ADDRESS_OUT
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = NCE1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = NCE0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = A2
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = A0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE IDE REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA
+ OPERAND2-10
+ COMMENT-; 000 1 0 0 0 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-FEATURE
+ OPERAND2-11
+ COMMENT-; 000 1 0 0 0 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_COUNT
+ OPERAND2-12
+ COMMENT-; 000 1 0 0 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_7_0
+ OPERAND2-13
+ COMMENT-; 000 1 0 0 1 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_15_8
+ OPERAND2-14
+ COMMENT-; 000 1 0 1 0 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_23_16
+ OPERAND2-15
+ COMMENT-; 000 1 0 1 0 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LD_LBA_27_24
+ OPERAND2-16
+ COMMENT-; 000 1 0 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CF_OFF
+ OPERAND2-18
+ COMMENT-; 000 1 1 0 0 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ IDE REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-A_STATUS
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STATUS
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_7_0
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_15_8
+ OPERAND2-05
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_OUT
+ OPERAND2-06
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG0_WORD_AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = ACK_CF_READER
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ACK_CF_READER
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG0_WORD_AVAILABLE
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- BUS CONTROL SIGNALS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_OUT
+ OPERAND2-07
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = WB_BUS_WRITE_ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = IDE_BUS_WRITE_ENABLE
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_BUS_WRITE_ENABLE
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WB_BUS_WRITE_ENABLE
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- INPUT PORTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_7_0
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_15_8
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_IN
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = WB_A0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = W_WE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG1_WORD_REQUEST
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = STROBE_CF_READER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_15_0
+ OPERAND2-05
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_27_16
+ OPERAND2-15
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STROBE_CF_READER_AND_RD
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG1_WORD_REQUEST
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-W_WE
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_7_0
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_15_8
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- REGISTERS INITIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-inicialization
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BUS CONTROL : WRITE NOT ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE BUS INIZIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE BUS INICIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-18
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 210NS*31 (RESET DELAY)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-main
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK WISHBONE BUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; wait state for stb_i deassertion
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s3
+ OPERAND2-CONTROL_WB_IN
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK STROBE & READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_15_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_15_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_27_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_27_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-STROBE_CF_READER_AND_RD
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_in_wb_bus
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF NOT READ REQUEST MAINTAIN SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ LABEL-store_lba_15_0
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s7
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s8
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ LABEL-store_lba_27_16
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s9
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sA
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE -> 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; antes 020503 LOAD sF,FE
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ LABEL-do_reset_and_retry
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ LABEL-put_data_in_wb_bus
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word_from_cf
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-do_reset_and_retry
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sB
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sC
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ENABLE WB ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-WB_BUS_WRITE_ENABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-wishbone_ack
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE ACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-ACK_CF_READER
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; null - wait state
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;OUTPUT sF,CONTROL_OUT
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ LABEL-wait_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SOFTWARE DELAY LOOP
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKES SLOW LOOP VALUE FROM sF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TWO CYCLES PER INSTRUCTION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SLOW LOOP 3 INSTRUCTIONS * sF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s1
+ OPERAND2-sF
+ COMMENT-
+ LABEL-slow_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s0
+ OPERAND2-DELAY1
+ COMMENT-
+ LABEL-fast_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s0
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-fast_loop
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s1
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-slow_loop
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-write_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT IDE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sD
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sE
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-IDE_BUS_WRITE_ENABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50Mhz)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE ON
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIOWR
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (240ns/50Mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (410ns/50Mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS DISABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE ON
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; reset control_out (140503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIORD
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE DE DATA FROM IDE BUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sB
+ OPERAND2-DATA_IDE_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sC
+ OPERAND2-DATA_IDE_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE ATA COMMANDS TO THE CF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE FEATURE REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-WRITE_SEC_FEATURE
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FEATURE
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE SECTOR COUNT REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_COUNT
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_7_0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s7
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_15_8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s8
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_23_16
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s9
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_23_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LD_LBA_27_24
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LBA_27_42 OR WITH 1110
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT7 : 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT6 : LBA=1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT5 : 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT4 : DRV=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-sA
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-sF
+ OPERAND2-E0
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LD_LBA_27_24
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE READ SECTOR COMMAND
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-READ_SECTOR_COMMAND
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 290103 Added data available check
+ LABEL-retry_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-retry_status_check
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; RESET WORDS READ REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_word_from_cf
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF THE SECTOR IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;retry_status_check:
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL cf_status_check
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 120103 - changed . When there is sector
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; available in the cf ram buffer it is not
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; necessary to check neither bsy or drq
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; only read words with the correct timing paramenters
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,DATA_TRANSFER_ALLOWED
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND sF,s5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP Z,retry_status_check
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; end 120103
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s6
+ OPERAND2-s6
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-reset_word_READ
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DECREMENT NUMBER OF WORDS READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-reset_word_READ
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;ADD s7,01
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FE
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_word
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ WORDS FROM IDE DATA REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA ARE IN sB , sC
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA AVAILABLE SIGNAL IS STORED
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-TAG0_WORD_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-dummy_word_read
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ LABEL-read_new_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;loops until previous non READ words are READ
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-dummy_word_read
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; loops until commands are allowed
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-read_sector
+ OPERAND2-
+ COMMENT-
+ LABEL-cf_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CF STATUS REGISTER READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 0 0 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERR-ST X X X X X X X 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 0 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-put_error_code
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 1 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ-ST 0 1 X X 1 X X 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 1 0 0 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C9
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-48
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_request_allowed
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CMD-ST 0 1 X X 0 X X 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 0 0 0 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C1
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-40
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_command_allowed
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP put_error_code
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; REVISAR ???
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND s5,01
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_error_code
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT ERROR CODE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP inicialization (STACK OVERFLOW???)
+ LABEL-soft_reset
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-SOFT_RESET
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_data_request_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FD
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_command_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FB
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-ADDRESS
+ OPERAND1-FF
+ OPERAND2-
+ COMMENT-
+ LABEL-interrupt
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURNI
+ OPERAND1-ENABLE
+ OPERAND2-
+ COMMENT-
Index: compile/CFREADER.HEX
===================================================================
--- compile/CFREADER.HEX (nonexistent)
+++ compile/CFREADER.HEX (revision 13)
@@ -0,0 +1,256 @@
+0F00
+EF07
+0F00
+EF04
+EF05
+EF06
+0F00
+EF00
+EF01
+0F18
+EF03
+0FFF
+EF02
+0500
+0600
+0FFF
+8347
+83CB
+0FFF
+8347
+0FFF
+8347
+0FFF
+8347
+CFF1
+CFF1
+CFF1
+CFF1
+A302
+CF30
+6F05
+912A
+CF30
+6F15
+912F
+CF30
+6F01
+9136
+0F00
+EF07
+EF06
+8118
+A703
+A804
+0F00
+C5F1
+813E
+A903
+AA04
+0F00
+C5F1
+813E
+83CB
+0500
+8396
+CF50
+1F08
+9534
+EB04
+EC05
+0F02
+EF07
+0F01
+EF06
+CFF1
+CFF1
+CFF1
+CFF1
+0F00
+EF06
+8118
+C1F0
+0003
+6001
+9549
+6101
+9548
+8080
+EF03
+ED00
+EE01
+0F01
+EF07
+0F01
+8347
+0FFD
+EF02
+0F02
+8347
+0FFF
+EF02
+0F18
+EF03
+0F01
+8347
+0F00
+EF07
+0F02
+8347
+8080
+EF03
+0F01
+8347
+0F00
+EF07
+0FFE
+EF02
+0F02
+8347
+AB00
+AC01
+0FFF
+EF02
+0F18
+EF03
+8080
+0D00
+0F11
+834E
+0D01
+0F12
+834E
+CD70
+0F13
+834E
+CD80
+0F14
+834E
+CD90
+0F15
+834E
+CFA0
+2FE0
+CDF0
+0F16
+834E
+0D20
+0F17
+834E
+83B8
+CF50
+1F08
+9480
+0F04
+CF51
+918B
+0F01
+C5F2
+06FF
+8080
+0F01
+CF51
+93AC
+CF50
+1F08
+9480
+83A5
+C661
+91A1
+6601
+8080
+06FF
+0FFE
+C5F1
+8080
+0F10
+8364
+0F02
+EF06
+8080
+83A5
+6601
+83B8
+CF50
+1F04
+95AA
+CF50
+1F08
+9480
+CF50
+1F02
+06FF
+91AC
+8174
+0F17
+8364
+0F01
+CFB1
+95C6
+0FC9
+CFB1
+6F48
+91DA
+0FC1
+CFB1
+6F40
+91DE
+8080
+0F04
+EF07
+83CB
+0508
+8080
+0D04
+0F0E
+834E
+0FFF
+8347
+0FFF
+8347
+0FFF
+8347
+0FFF
+8347
+0D00
+0F0E
+834E
+8080
+15FD
+0F04
+C5F2
+8080
+15FB
+0F02
+C5F2
+8080
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+80F0
Index: compile/PASS2.DAT
===================================================================
--- compile/PASS2.DAT (nonexistent)
+++ compile/PASS2.DAT (revision 13)
@@ -0,0 +1,3480 @@
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CF SECTOR READER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - SEPTEMBER 2002
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - UPV / EHU.
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Design units : FAT FILE LOADER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- File name : cf_sector_reader.txt
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Purpose : READ RAW SECTORS FROM CF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Library : -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Compiler : KCPSM ASSEMBLER V1.25
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Debugger : PSM DEBUG V1.00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Revision list
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Version Author Date Changes
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 260902 Armando Astarloa 27 September 2002 -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- do_reset_and_retry state
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Description : DUMMY CF SECTORS READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CONSTANT DEFINITIONS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DELAY1
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDENTIFY_COMMAND
+ OPERAND2-EC
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SECTOR_COMMAND
+ OPERAND2-30
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-READ_SECTOR_COMMAND
+ OPERAND2-20
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SEC_FEATURE
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SOFT_RESET
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- RAM REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s2
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s3 -> WISHBONE CONTROL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s4 -> REGISTERS STACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s5 -> MY_STATUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_AVAILABLE
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND_ALLOWED
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_TRANSFER_ALLOWED
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR_MY_STATUS
+ OPERAND2-08
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s6 -> WORDS_READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s7 -> LBA_7_0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s8 -> LBA_15_8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s9 -> LBA_23_16
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sA -> LD_LBA_27_24
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sB -> data[7:0] in ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sC -> data[15:8] in ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sD -> data[7:0] out ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sE -> data[15:8] out ide
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sF -> acummulator
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- OUTPUT PORTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - OUTPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_7_0
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_15_8
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_CONTROL_OUT
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = NIOWR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = NIORD
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIOWR
+ OPERAND2-FD
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIORD
+ OPERAND2-FE
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_ADDRESS_OUT
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = NCE1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = NCE0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = A2
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = A0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE IDE REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA
+ OPERAND2-10
+ COMMENT-; 000 1 0 0 0 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-FEATURE
+ OPERAND2-11
+ COMMENT-; 000 1 0 0 0 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_COUNT
+ OPERAND2-12
+ COMMENT-; 000 1 0 0 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_7_0
+ OPERAND2-13
+ COMMENT-; 000 1 0 0 1 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_15_8
+ OPERAND2-14
+ COMMENT-; 000 1 0 1 0 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_23_16
+ OPERAND2-15
+ COMMENT-; 000 1 0 1 0 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LD_LBA_27_24
+ OPERAND2-16
+ COMMENT-; 000 1 0 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CF_OFF
+ OPERAND2-18
+ COMMENT-; 000 1 1 0 0 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ IDE REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-A_STATUS
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STATUS
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_7_0
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_15_8
+ OPERAND2-05
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_OUT
+ OPERAND2-06
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG0_WORD_AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = ACK_CF_READER
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ACK_CF_READER
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG0_WORD_AVAILABLE
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- BUS CONTROL SIGNALS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_OUT
+ OPERAND2-07
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = WB_BUS_WRITE_ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = IDE_BUS_WRITE_ENABLE
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_BUS_WRITE_ENABLE
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WB_BUS_WRITE_ENABLE
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- INPUT PORTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_7_0
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_15_8
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_IN
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = WB_A0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = -
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = W_WE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG1_WORD_REQUEST
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = STROBE_CF_READER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_15_0
+ OPERAND2-05
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_27_16
+ OPERAND2-15
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STROBE_CF_READER_AND_RD
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG1_WORD_REQUEST
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-W_WE
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_7_0
+ OPERAND2-03
+ COMMENT-
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_15_8
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- REGISTERS INITIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ LABEL-inicialization
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BUS CONTROL : WRITE NOT ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE BUS INIZIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE BUS INICIALIZATION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-18
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 210NS*31 (RESET DELAY)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-main
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK WISHBONE BUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; wait state for stb_i deassertion
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s3
+ OPERAND2-CONTROL_WB_IN
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK STROBE & READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_15_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_15_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_27_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_27_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-STROBE_CF_READER_AND_RD
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_in_wb_bus
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF NOT READ REQUEST MAINTAIN SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ LABEL-store_lba_15_0
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s7
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s8
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ LABEL-store_lba_27_16
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s9
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sA
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE -> 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; antes 020503 LOAD sF,FE
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ LABEL-do_reset_and_retry
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ LABEL-put_data_in_wb_bus
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word_from_cf
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-do_reset_and_retry
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sB
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sC
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ENABLE WB ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-WB_BUS_WRITE_ENABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-wishbone_ack
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE ACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-ACK_CF_READER
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; null - wait state
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;OUTPUT sF,CONTROL_OUT
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ LABEL-wait_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SOFTWARE DELAY LOOP
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKES SLOW LOOP VALUE FROM sF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TWO CYCLES PER INSTRUCTION
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SLOW LOOP 3 INSTRUCTIONS * sF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s1
+ OPERAND2-sF
+ COMMENT-
+ LABEL-slow_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s0
+ OPERAND2-DELAY1
+ COMMENT-
+ LABEL-fast_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s0
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-fast_loop
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s1
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-slow_loop
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-write_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT IDE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sD
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sE
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS ENABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-IDE_BUS_WRITE_ENABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50Mhz)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE ON
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIOWR
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (240ns/50Mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (410ns/50Mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS DISABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE ON
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; reset control_out (140503)
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIORD
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE DE DATA FROM IDE BUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sB
+ OPERAND2-DATA_IDE_IN_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sC
+ OPERAND2-DATA_IDE_IN_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50mhz)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE ATA COMMANDS TO THE CF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE FEATURE REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-WRITE_SEC_FEATURE
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FEATURE
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE SECTOR COUNT REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_COUNT
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_7_0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s7
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_7_0
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_15_8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s8
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_15_8
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_23_16
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s9
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_23_16
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LD_LBA_27_24
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LBA_27_42 OR WITH 1110
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT7 : 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT6 : LBA=1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT5 : 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT4 : DRV=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-sA
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-sF
+ OPERAND2-E0
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LD_LBA_27_24
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE READ SECTOR COMMAND
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-READ_SECTOR_COMMAND
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 290103 Added data available check
+ LABEL-retry_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-retry_status_check
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; RESET WORDS READ REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_word_from_cf
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF THE SECTOR IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;retry_status_check:
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL cf_status_check
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 120103 - changed . When there is sector
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; available in the cf ram buffer it is not
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; necessary to check neither bsy or drq
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; only read words with the correct timing paramenters
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,DATA_TRANSFER_ALLOWED
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND sF,s5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP Z,retry_status_check
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; end 120103
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s6
+ OPERAND2-s6
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-reset_word_READ
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DECREMENT NUMBER OF WORDS READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-reset_word_READ
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;ADD s7,01
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FE
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-read_word
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ WORDS FROM IDE DATA REGISTERS
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA ARE IN sB , sC
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA AVAILABLE SIGNAL IS STORED
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-TAG0_WORD_AVAILABLE
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-dummy_word_read
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ LABEL-read_new_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;loops until previous non READ words are READ
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-dummy_word_read
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; loops until commands are allowed
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-read_sector
+ OPERAND2-
+ COMMENT-
+ LABEL-cf_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CF STATUS REGISTER READ
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 0 0 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERR-ST X X X X X X X 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 0 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-put_error_code
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 1 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ-ST 0 1 X X 1 X X 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 1 0 0 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C9
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-48
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_request_allowed
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 0 0 0 1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CMD-ST 0 1 X X 0 X X 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 0 0 0 0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C1
+ COMMENT-
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-40
+ COMMENT-
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_command_allowed
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP put_error_code
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; REVISAR ???
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND s5,01
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_error_code
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR SIGNAL
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT ERROR CODE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-04
+ COMMENT-
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP inicialization (STACK OVERFLOW???)
+ LABEL-soft_reset
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-SOFT_RESET
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-00
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_data_request_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FD
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-put_command_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FB
+ COMMENT-
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-ADDRESS
+ OPERAND1-FF
+ OPERAND2-
+ COMMENT-
+ LABEL-interrupt
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ LABEL-
+INSTRUCTION-RETURNI
+ OPERAND1-ENABLE
+ OPERAND2-
+ COMMENT-
Index: compile/ROM_form.vhd
===================================================================
--- compile/ROM_form.vhd (nonexistent)
+++ compile/ROM_form.vhd (revision 13)
@@ -0,0 +1,134 @@
+ROM_form.vhd
+
+Ken Chapman (Xilinx Ltd) October 2002
+
+This is the VHDL template file for the KCPSM assembler.
+It is used to configure a Virtex(E) and Spartan-II(E) block RAM to act as a single port
+program ROM.
+
+This VHDL file is not valid as input directly into a synthesis or simulation tool.
+The assembler will read this template and insert the data required to complete the
+definition of program ROM and write it out to a new '.vhd' file associated with the
+name of the original '.psm' file being assembled.
+
+This template can be modified to define alternative memory definitions such as dual port.
+However, you are responsible for ensuring the template is correct as the assembler does
+not perform any checking of the VHDL.
+
+The assembler identifies all text enclosed by {} characters, and replaces these
+character strings. All templates should include these {} character strings for
+the assembler to work correctly.
+
+****************************************************************************************
+
+This template defines a block RAM configured in 256 x 16-bit single port mode and
+conneceted to act as a single port ROM.
+
+****************************************************************************************
+
+The next line is used to determine where the template actually starts and must exist.
+{begin template}
+--
+-- Definition of a single port ROM for KCPSM program defined by {name}.psm
+-- and assmbled using KCPSM assembler.
+--
+-- Standard IEEE libraries
+--
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+--
+-- The Unisim Library is used to define Xilinx primitives. It is also used during
+-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd
+--
+library unisim;
+use unisim.vcomponents.all;
+--
+--
+entity {name} is
+ Port ( address : in std_logic_vector(7 downto 0);
+ instruction : out std_logic_vector(15 downto 0);
+ clk : in std_logic);
+ end {name};
+--
+architecture low_level_definition of {name} is
+--
+-- Attributes to define ROM contents during implementation synthesis.
+-- The information is repeated in the generic map for functional simulation
+--
+attribute INIT_00 : string;
+attribute INIT_01 : string;
+attribute INIT_02 : string;
+attribute INIT_03 : string;
+attribute INIT_04 : string;
+attribute INIT_05 : string;
+attribute INIT_06 : string;
+attribute INIT_07 : string;
+attribute INIT_08 : string;
+attribute INIT_09 : string;
+attribute INIT_0A : string;
+attribute INIT_0B : string;
+attribute INIT_0C : string;
+attribute INIT_0D : string;
+attribute INIT_0E : string;
+attribute INIT_0F : string;
+--
+-- Attributes to define ROM contents during implementation synthesis.
+--
+attribute INIT_00 of ram_256_x_16 : label is "{INIT_00}";
+attribute INIT_01 of ram_256_x_16 : label is "{INIT_01}";
+attribute INIT_02 of ram_256_x_16 : label is "{INIT_02}";
+attribute INIT_03 of ram_256_x_16 : label is "{INIT_03}";
+attribute INIT_04 of ram_256_x_16 : label is "{INIT_04}";
+attribute INIT_05 of ram_256_x_16 : label is "{INIT_05}";
+attribute INIT_06 of ram_256_x_16 : label is "{INIT_06}";
+attribute INIT_07 of ram_256_x_16 : label is "{INIT_07}";
+attribute INIT_08 of ram_256_x_16 : label is "{INIT_08}";
+attribute INIT_09 of ram_256_x_16 : label is "{INIT_09}";
+attribute INIT_0A of ram_256_x_16 : label is "{INIT_0A}";
+attribute INIT_0B of ram_256_x_16 : label is "{INIT_0B}";
+attribute INIT_0C of ram_256_x_16 : label is "{INIT_0C}";
+attribute INIT_0D of ram_256_x_16 : label is "{INIT_0D}";
+attribute INIT_0E of ram_256_x_16 : label is "{INIT_0E}";
+attribute INIT_0F of ram_256_x_16 : label is "{INIT_0F}";
+--
+begin
+--
+ --Instantiate the Xilinx primitive for a block RAM
+ ram_256_x_16: RAMB4_S16
+ --translate_off
+ --INIT values repeated to define contents for functional simulation
+ generic map (INIT_00 => X"{INIT_00}",
+ INIT_01 => X"{INIT_01}",
+ INIT_02 => X"{INIT_02}",
+ INIT_03 => X"{INIT_03}",
+ INIT_04 => X"{INIT_04}",
+ INIT_05 => X"{INIT_05}",
+ INIT_06 => X"{INIT_06}",
+ INIT_07 => X"{INIT_07}",
+ INIT_08 => X"{INIT_08}",
+ INIT_09 => X"{INIT_09}",
+ INIT_0A => X"{INIT_0A}",
+ INIT_0B => X"{INIT_0B}",
+ INIT_0C => X"{INIT_0C}",
+ INIT_0D => X"{INIT_0D}",
+ INIT_0E => X"{INIT_0E}",
+ INIT_0F => X"{INIT_0F}",
+ --translate_on
+ port map( DI => "0000000000000000",
+ EN => '1',
+ WE => '0',
+ RST => '0',
+ CLK => clk,
+ ADDR => address,
+ DO => instruction(15 downto 0));
+--
+end low_level_definition;
+--
+------------------------------------------------------------------------------------
+--
+-- END OF FILE {name}.vhd
+--
+------------------------------------------------------------------------------------
+
Index: compile/PASS3.DAT
===================================================================
--- compile/PASS3.DAT (nonexistent)
+++ compile/PASS3.DAT (revision 13)
@@ -0,0 +1,4176 @@
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CF SECTOR READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - SEPTEMBER 2002
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- - UPV / EHU.
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Design units : FAT FILE LOADER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- File name : cf_sector_reader.txt
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Purpose : READ RAW SECTORS FROM CF
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Library : -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Compiler : KCPSM ASSEMBLER V1.25
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Debugger : PSM DEBUG V1.00
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Revision list
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Version Author Date Changes
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 260902 Armando Astarloa 27 September 2002 -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- do_reset_and_retry state
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- Description : DUMMY CF SECTORS READ
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- CONSTANT DEFINITIONS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DELAY1
+ OPERAND2-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDENTIFY_COMMAND
+ OPERAND2-EC
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SECTOR_COMMAND
+ OPERAND2-30
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-READ_SECTOR_COMMAND
+ OPERAND2-20
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SEC_FEATURE
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SOFT_RESET
+ OPERAND2-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- RAM REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s2
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s3 -> WISHBONE CONTROL
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s4 -> REGISTERS STACK
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s5 -> MY_STATUS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = ERROR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_AVAILABLE
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND_ALLOWED
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_TRANSFER_ALLOWED
+ OPERAND2-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR_MY_STATUS
+ OPERAND2-08
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s6 -> WORDS_READ
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s7 -> LBA_7_0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s8 -> LBA_15_8
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; s9 -> LBA_23_16
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sA -> LD_LBA_27_24
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sB -> data[7:0] in ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sC -> data[15:8] in ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sD -> data[7:0] out ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sE -> data[15:8] out ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; sF -> acummulator
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- OUTPUT PORTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_7_0
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_15_8
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_CONTROL_OUT
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = NIOWR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = NIORD
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIOWR
+ OPERAND2-FD
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIORD
+ OPERAND2-FE
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_ADDRESS_OUT
+ OPERAND2-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = NCE1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = NCE0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = A2
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = A1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA
+ OPERAND2-10
+ COMMENT-; 000 1 0 0 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-FEATURE
+ OPERAND2-11
+ COMMENT-; 000 1 0 0 0 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_COUNT
+ OPERAND2-12
+ COMMENT-; 000 1 0 0 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_7_0
+ OPERAND2-13
+ COMMENT-; 000 1 0 0 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_15_8
+ OPERAND2-14
+ COMMENT-; 000 1 0 1 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_23_16
+ OPERAND2-15
+ COMMENT-; 000 1 0 1 0 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LD_LBA_27_24
+ OPERAND2-16
+ COMMENT-; 000 1 0 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CF_OFF
+ OPERAND2-18
+ COMMENT-; 000 1 1 0 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-A_STATUS
+ OPERAND2-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STATUS
+ OPERAND2-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_7_0
+ OPERAND2-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_15_8
+ OPERAND2-05
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_OUT
+ OPERAND2-06
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG0_WORD_AVAILABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = ACK_CF_READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ACK_CF_READER
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG0_WORD_AVAILABLE
+ OPERAND2-02
+ 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
+ OPERAND2-07
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = ERROR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = WB_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = IDE_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_BUS_WRITE_ENABLE
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WB_BUS_WRITE_ENABLE
+ 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-;-- INPUT PORTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;-- IDE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_7_0
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_15_8
+ OPERAND2-01
+ 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
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D4 = WB_A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D3 = -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D2 = W_WE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D1 = TAG1_WORD_REQUEST
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; D0 = STROBE_CF_READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_15_0
+ OPERAND2-05
+ 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-15
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STROBE_CF_READER_AND_RD
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG1_WORD_REQUEST
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-W_WE
+ OPERAND2-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ 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-DATA_WB_IN_7_0
+ OPERAND2-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_15_8
+ OPERAND2-04
+ 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-; BUS CONTROL : WRITE NOT ENABLE
+ 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-CONTROL_OUT
+ COMMENT-
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE BUS INIZIALIZATION
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-03
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ ADDRESS-04
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ ADDRESS-05
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE BUS INICIALIZATION
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-07
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ ADDRESS-08
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ ADDRESS-09
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-18
+ COMMENT-
+ ADDRESS-0A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ ADDRESS-0B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-0C
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 210NS*31 (RESET DELAY)
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-0E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-0F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-10
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-11
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ ADDRESS-12
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-13
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-14
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-15
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-16
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-17
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-18
+ LABEL-main
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK WISHBONE BUS
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; wait state for stb_i deassertion
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-19
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-1A
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-1B
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-1C
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s3
+ OPERAND2-CONTROL_WB_IN
+ COMMENT-
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK STROBE & READ
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ ADDRESS-1E
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_15_0
+ COMMENT-
+ ADDRESS-1F
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_15_0
+ COMMENT-
+ ADDRESS-20
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ ADDRESS-21
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-WRITE_LBA_27_16
+ COMMENT-
+ ADDRESS-22
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-store_lba_27_16
+ COMMENT-
+ ADDRESS-23
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s3
+ COMMENT-
+ ADDRESS-24
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-STROBE_CF_READER_AND_RD
+ COMMENT-
+ ADDRESS-25
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_in_wb_bus
+ COMMENT-
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF NOT READ REQUEST MAINTAIN SIGNAL
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-27
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-28
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ ADDRESS-29
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-store_lba_15_0
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ ADDRESS-2A
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s7
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ ADDRESS-2B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ ADDRESS-2B
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s8
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ ADDRESS-2C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ ADDRESS-2C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-2D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-2E
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-store_lba_27_16
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ ADDRESS-2F
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s9
+ OPERAND2-DATA_WB_IN_7_0
+ COMMENT-
+ ADDRESS-30
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ ADDRESS-30
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sA
+ OPERAND2-DATA_WB_IN_15_8
+ COMMENT-
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SECTOR AVAILABLE -> 0
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; antes 020503 LOAD sF,FE
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-32
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-33
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OPERAND2-
+ COMMENT-
+ ADDRESS-34
+ LABEL-do_reset_and_retry
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-34
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ ADDRESS-35
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-36
+ LABEL-put_data_in_wb_bus
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-36
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word_from_cf
+ OPERAND2-
+ COMMENT-
+ ADDRESS-37
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ ADDRESS-37
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-38
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ ADDRESS-39
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-do_reset_and_retry
+ COMMENT-
+ ADDRESS-3A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sB
+ OPERAND2-DATA_WB_OUT_7_0
+ COMMENT-
+ ADDRESS-3B
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sC
+ OPERAND2-DATA_WB_OUT_15_8
+ COMMENT-
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ENABLE WB ENABLE
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-WB_BUS_WRITE_ENABLE
+ COMMENT-
+ ADDRESS-3D
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-3E
+ LABEL-wishbone_ack
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE ACK
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-ACK_CF_READER
+ COMMENT-
+ ADDRESS-3F
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; null - wait state
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-41
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-42
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-43
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-45
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ ADDRESS-46
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;OUTPUT sF,CONTROL_OUT
+ ADDRESS-46
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OPERAND2-
+ COMMENT-
+ ADDRESS-47
+ LABEL-wait_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SOFTWARE DELAY LOOP
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKES SLOW LOOP VALUE FROM sF
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TWO CYCLES PER INSTRUCTION
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; SLOW LOOP 3 INSTRUCTIONS * sF
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s1
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-48
+ LABEL-slow_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-48
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s0
+ OPERAND2-DELAY1
+ COMMENT-
+ ADDRESS-49
+ LABEL-fast_loop
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-49
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s0
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-4A
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-fast_loop
+ COMMENT-
+ ADDRESS-4B
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s1
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-4C
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-slow_loop
+ COMMENT-
+ ADDRESS-4D
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-write_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT IDE
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sD
+ OPERAND2-DATA_IDE_OUT_7_0
+ COMMENT-
+ ADDRESS-50
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sE
+ OPERAND2-DATA_IDE_OUT_15_8
+ COMMENT-
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS ENABLE
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-IDE_BUS_WRITE_ENABLE
+ COMMENT-
+ ADDRESS-52
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50Mhz)
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-54
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE ON
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIOWR
+ COMMENT-
+ ADDRESS-56
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (240ns/50Mhz)
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-58
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE STROBE OFF
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-5A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (410ns/50Mhz)
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 020503
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ ADDRESS-5C
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-5E
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA OUT BUS DISABLE
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-60
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (put again 020503)
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-62
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-63
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-64
+ LABEL-read_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-66
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE ON
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; reset control_out (140503)
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-68
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-69
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-NIORD
+ COMMENT-
+ ADDRESS-6A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-02
+ COMMENT-
+ ADDRESS-6C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; TAKE DE DATA FROM IDE BUS
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sB
+ OPERAND2-DATA_IDE_IN_7_0
+ COMMENT-
+ ADDRESS-6E
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sC
+ OPERAND2-DATA_IDE_IN_15_8
+ COMMENT-
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ STROBE OFF
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-70
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_CONTROL_OUT
+ COMMENT-
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CF_OFF
+ COMMENT-
+ ADDRESS-72
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ COMMENT-
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; (120ns/50mhz)
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,01
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL wait_loop
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-74
+ LABEL-read_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; WRITE ATA COMMANDS TO THE CF
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE FEATURE REGISTER
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-WRITE_SEC_FEATURE
+ COMMENT-
+ ADDRESS-75
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FEATURE
+ COMMENT-
+ ADDRESS-76
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE SECTOR COUNT REGISTER
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-78
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_COUNT
+ COMMENT-
+ ADDRESS-79
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_7_0
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s7
+ COMMENT-
+ ADDRESS-7B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_7_0
+ COMMENT-
+ ADDRESS-7C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_15_8
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s8
+ COMMENT-
+ ADDRESS-7E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_15_8
+ COMMENT-
+ ADDRESS-7F
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LBA_23_16
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-s9
+ COMMENT-
+ ADDRESS-81
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LBA_23_16
+ COMMENT-
+ ADDRESS-82
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE LD_LBA_27_24
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LBA_27_42 OR WITH 1110
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT7 : 1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT6 : LBA=1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT5 : 1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BIT4 : DRV=0
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-sA
+ COMMENT-
+ ADDRESS-84
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-sF
+ OPERAND2-E0
+ COMMENT-
+ ADDRESS-85
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-86
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-LD_LBA_27_24
+ COMMENT-
+ ADDRESS-87
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IDE READ SECTOR COMMAND
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-READ_SECTOR_COMMAND
+ COMMENT-
+ ADDRESS-89
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND
+ COMMENT-
+ ADDRESS-8A
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 290103 Added data available check
+ ADDRESS-8B
+ LABEL-retry_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ ADDRESS-8C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-8D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ ADDRESS-8E
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ ADDRESS-8F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ ADDRESS-90
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-91
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-91
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-retry_status_check
+ COMMENT-
+ ADDRESS-92
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ ADDRESS-93
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; RESET WORDS READ REGISTER
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-95
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-96
+ LABEL-read_word_from_cf
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF THE SECTOR IS AVAILABLE
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-SECTOR_AVAILABLE
+ COMMENT-
+ ADDRESS-97
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ ADDRESS-99
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; check for error
+ ADDRESS-99
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-9A
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ ADDRESS-9B
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;retry_status_check:
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;CALL cf_status_check
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CHECK IF DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; 120103 - changed . When there is sector
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; available in the cf ram buffer it is not
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; necessary to check neither bsy or drq
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; only read words with the correct timing paramenters
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;LOAD sF,DATA_TRANSFER_ALLOWED
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND sF,s5
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP Z,retry_status_check
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; end 120103
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ ADDRESS-9D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s6
+ OPERAND2-s6
+ COMMENT-
+ ADDRESS-9E
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-reset_word_READ
+ COMMENT-
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DECREMENT NUMBER OF WORDS READ
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-A0
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-reset_word_READ
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;ADD s7,01
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-A2
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FE
+ COMMENT-
+ ADDRESS-A3
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-A4
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-read_word
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; READ WORDS FROM IDE DATA REGISTERS
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA
+ COMMENT-
+ ADDRESS-A6
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA ARE IN sB , sC
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA AVAILABLE SIGNAL IS STORED
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-TAG0_WORD_AVAILABLE
+ COMMENT-
+ ADDRESS-A8
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_WB_OUT
+ COMMENT-
+ ADDRESS-A9
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-dummy_word_read
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OPERAND2-
+ COMMENT-
+ ADDRESS-AB
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-AC
+ LABEL-read_new_sector
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-AC
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OPERAND2-
+ COMMENT-
+ ADDRESS-AD
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-AE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ ADDRESS-AF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;loops until previous non READ words are READ
+ ADDRESS-AF
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-dummy_word_read
+ COMMENT-
+ ADDRESS-B0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-B1
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ ADDRESS-B2
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OPERAND2-
+ COMMENT-
+ ADDRESS-B3
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-s5
+ COMMENT-
+ ADDRESS-B4
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ ADDRESS-B5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; loops until commands are allowed
+ ADDRESS-B5
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-B6
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-read_new_sector
+ COMMENT-
+ ADDRESS-B7
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-read_sector
+ OPERAND2-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-cf_status_check
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CF STATUS REGISTER READ
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-STATUS
+ COMMENT-
+ ADDRESS-B9
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERR-ST X X X X X X X 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-01
+ COMMENT-
+ ADDRESS-BB
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ ADDRESS-BC
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OPERAND2-put_error_code
+ COMMENT-
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 1 0 0 1
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ-ST 0 1 X X 1 X X 0
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 1 0 0 0
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C9
+ COMMENT-
+ ADDRESS-BE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ ADDRESS-BF
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-48
+ COMMENT-
+ ADDRESS-C0
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_data_request_allowed
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; MASK 1 1 0 0 0 0 0 1
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; CMD-ST 0 1 X X 0 X X 0
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; AND 0 1 0 0 0 0 0 0
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-C1
+ COMMENT-
+ ADDRESS-C2
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OPERAND2-sB
+ COMMENT-
+ ADDRESS-C3
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OPERAND2-40
+ COMMENT-
+ ADDRESS-C4
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OPERAND2-put_command_allowed
+ COMMENT-
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP put_error_code
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; REVISAR ???
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;AND s5,01
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-put_error_code
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; ERROR SIGNAL
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; PUT ERROR CODE
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-04
+ COMMENT-
+ ADDRESS-C7
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OPERAND2-CONTROL_OUT
+ COMMENT-
+ ADDRESS-C8
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OPERAND2-
+ COMMENT-
+ ADDRESS-C9
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OPERAND2-ERROR_MY_STATUS
+ COMMENT-
+ ADDRESS-CA
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;JUMP inicialization (STACK OVERFLOW???)
+ ADDRESS-CB
+ LABEL-soft_reset
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-SOFT_RESET
+ COMMENT-
+ ADDRESS-CC
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ ADDRESS-CD
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-CE
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-CF
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-D0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-D1
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-D2
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-D3
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-D4
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-FF
+ COMMENT-
+ ADDRESS-D5
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OPERAND2-
+ COMMENT-
+ ADDRESS-D6
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OPERAND2-00
+ COMMENT-
+ ADDRESS-D7
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-CONTROL
+ COMMENT-
+ ADDRESS-D8
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OPERAND2-
+ COMMENT-
+ ADDRESS-D9
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-put_data_request_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FD
+ COMMENT-
+ ADDRESS-DB
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ COMMENT-
+ ADDRESS-DC
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-DD
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-put_command_allowed
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OPERAND2-FB
+ COMMENT-
+ ADDRESS-DF
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OPERAND2-COMMAND_ALLOWED
+ COMMENT-
+ ADDRESS-E0
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OPERAND2-sF
+ COMMENT-
+ ADDRESS-E1
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+INSTRUCTION-ADDRESS
+ OPERAND1-FF
+ OPERAND2-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-interrupt
+INSTRUCTION-
+ OPERAND1-
+ OPERAND2-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+INSTRUCTION-RETURNI
+ OPERAND1-ENABLE
+ OPERAND2-
+ COMMENT-
Index: compile/CFREADER.FMT
===================================================================
--- compile/CFREADER.FMT (nonexistent)
+++ compile/CFREADER.FMT (revision 13)
@@ -0,0 +1,696 @@
+ ;--===========================================================================--
+ ;--
+ ;-- CF SECTOR READER
+ ;--
+ ;-- - SEPTEMBER 2002
+ ;-- - UPV / EHU.
+ ;--
+ ;-- Design units : FAT FILE LOADER
+ ;--
+ ;-- File name : cf_sector_reader.txt
+ ;--
+ ;-- Purpose : READ RAW SECTORS FROM CF
+ ;--
+ ;-- Library : -
+ ;--
+ ;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ ;--
+ ;-- Compiler : KCPSM ASSEMBLER V1.25
+ ;--
+ ;-- Debugger : PSM DEBUG V1.00
+ ;--===========================================================================--
+ ;-------------------------------------------------------------------------------
+ ;-- Revision list
+ ;-- Version Author Date Changes
+ ;--
+ ;-- 260902 Armando Astarloa 27 September 2002 -
+ ;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ ;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ ;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ ;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ ;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ ;-- do_reset_and_retry state
+ ;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ ;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ ;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ ;--
+ ;-------------------------------------------------------------------------------
+ ;-- Description : DUMMY CF SECTORS READ
+ ;-------------------------------------------------------------------------------
+ ;--
+ ;-- CONSTANT DEFINITIONS
+ ;--
+ CONSTANT DELAY1, 03
+ ; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ ; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ CONSTANT IDENTIFY_COMMAND, EC
+ CONSTANT WRITE_SECTOR_COMMAND, 30
+ CONSTANT READ_SECTOR_COMMAND, 20
+ CONSTANT WRITE_SEC_FEATURE, 00
+ CONSTANT SOFT_RESET, 04
+ ;--
+ ;-- RAM REGISTERS
+ ;--
+ ;
+ ; s0
+ ; s1
+ ; s2
+ ; s3 -> WISHBONE CONTROL
+ ; s4 -> REGISTERS STACK
+ ; s5 -> MY_STATUS
+ ; D3 = ERROR
+ ; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ ; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ ; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ CONSTANT SECTOR_AVAILABLE, 01
+ CONSTANT COMMAND_ALLOWED, 02
+ CONSTANT DATA_TRANSFER_ALLOWED, 04
+ CONSTANT ERROR_MY_STATUS, 08
+ ; s6 -> WORDS_READ
+ ; s7 -> LBA_7_0
+ ; s8 -> LBA_15_8
+ ; s9 -> LBA_23_16
+ ; sA -> LD_LBA_27_24
+ ; sB -> data[7:0] in ide
+ ; sC -> data[15:8] in ide
+ ; sD -> data[7:0] out ide
+ ; sE -> data[15:8] out ide
+ ; sF -> acummulator
+ ;
+ ;--
+ ;-- OUTPUT PORTS
+ ;--
+ ;--
+ ;-- IDE INTERFACE PORTS - OUTPUTS
+ ;--
+ CONSTANT DATA_IDE_OUT_7_0, 00
+ CONSTANT DATA_IDE_OUT_15_8, 01
+ CONSTANT IDE_CONTROL_OUT, 02
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 =
+ ; D1 = NIOWR
+ ; D0 = NIORD
+ CONSTANT NIOWR, FD
+ CONSTANT NIORD, FE
+ CONSTANT IDE_ADDRESS_OUT, 03
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 = NCE1
+ ; D3 = NCE0
+ ; D2 = A2
+ ; D1 = A1
+ ; D0 = A0
+ ;
+ ; WRITE IDE REGISTERS
+ ;
+ ; NCE1/NCE0/ A2/ A1/ A0
+ CONSTANT CONTROL, 0E ; 000 0 1 1 1 0
+ CONSTANT DATA, 10 ; 000 1 0 0 0 0
+ CONSTANT FEATURE, 11 ; 000 1 0 0 0 1
+ CONSTANT SECTOR_COUNT, 12 ; 000 1 0 0 1 0
+ CONSTANT LBA_7_0, 13 ; 000 1 0 0 1 1
+ CONSTANT LBA_15_8, 14 ; 000 1 0 1 0 0
+ CONSTANT LBA_23_16, 15 ; 000 1 0 1 0 1
+ CONSTANT LD_LBA_27_24, 16 ; 000 1 0 1 1 0
+ CONSTANT COMMAND, 17 ; 000 1 0 1 1 1
+ CONSTANT CF_OFF, 18 ; 000 1 1 0 0 0
+ ;
+ ; READ IDE REGISTERS
+ ; NCE1/NCE0/ A2/ A1/ A0
+ CONSTANT A_STATUS, 0E ; 000 0 1 1 1 0
+ CONSTANT STATUS, 17 ; 000 1 0 1 1 1
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ ;--
+ CONSTANT DATA_WB_OUT_7_0, 04
+ CONSTANT DATA_WB_OUT_15_8, 05
+ CONSTANT CONTROL_WB_OUT, 06
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 =
+ ; D1 = TAG0_WORD_AVAILABLE
+ ; D0 = ACK_CF_READER
+ CONSTANT ACK_CF_READER, 01
+ CONSTANT TAG0_WORD_AVAILABLE, 02
+ ;--
+ ;-- BUS CONTROL SIGNALS
+ ;--
+ CONSTANT CONTROL_OUT, 07
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 = ERROR
+ ; D1 = WB_BUS_WRITE_ENABLE
+ ; D0 = IDE_BUS_WRITE_ENABLE
+ CONSTANT IDE_BUS_WRITE_ENABLE, 01
+ CONSTANT WB_BUS_WRITE_ENABLE, 02
+ CONSTANT ERROR, 04
+ ;--
+ ;-- INPUT PORTS
+ ;--
+ ;--
+ ;-- IDE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT DATA_IDE_IN_7_0, 00
+ CONSTANT DATA_IDE_IN_15_8, 01
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT CONTROL_WB_IN, 02
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 = WB_A0
+ ; D3 = -
+ ; D2 = W_WE
+ ; D1 = TAG1_WORD_REQUEST
+ ; D0 = STROBE_CF_READER
+ ;
+ ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ CONSTANT WRITE_LBA_15_0, 05
+ ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ CONSTANT WRITE_LBA_27_16, 15
+ CONSTANT STROBE_CF_READER_AND_RD, 01
+ CONSTANT TAG1_WORD_REQUEST, 02
+ CONSTANT W_WE, 04
+
+
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT DATA_WB_IN_7_0, 03
+ CONSTANT DATA_WB_IN_15_8, 04
+ ;--
+ ;-- REGISTERS INITIALIZATION
+ ;--
+ inicialization:
+ ;
+ ; BUS CONTROL : WRITE NOT ENABLE
+ ;
+ LOAD sF, 00
+ OUTPUT sF, CONTROL_OUT
+ ;
+ ; WISHBONE BUS INIZIALIZATION
+ ;
+ LOAD sF, 00
+ OUTPUT sF, DATA_WB_OUT_7_0
+ OUTPUT sF, DATA_WB_OUT_15_8
+ OUTPUT sF, CONTROL_WB_OUT
+ ;
+ ; IDE BUS INICIALIZATION
+ ;
+ LOAD sF, 00
+ OUTPUT sF, DATA_IDE_OUT_7_0
+ OUTPUT sF, DATA_IDE_OUT_15_8
+ LOAD sF, 18
+ OUTPUT sF, IDE_ADDRESS_OUT
+ LOAD sF, FF
+ OUTPUT sF, IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 210NS*31 (RESET DELAY)
+ ;
+ LOAD s5, 00
+ LOAD s6, 00
+ LOAD sF, FF
+ CALL wait_loop
+ CALL soft_reset
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sF, FF
+ CALL wait_loop
+ main:
+ ;
+ ; CHECK WISHBONE BUS
+ ;
+ ; wait state for stb_i deassertion
+ ;LOAD sF,01
+ ;CALL wait_loop
+ AND sF, sF
+ AND sF, sF
+ AND sF, sF
+ AND sF, sF
+ INPUT s3, CONTROL_WB_IN
+ ;
+ ; CHECK STROBE & READ
+ ;
+ LOAD sF, s3
+ SUB sF, WRITE_LBA_15_0
+ JUMP Z, store_lba_15_0
+ LOAD sF, s3
+ SUB sF, WRITE_LBA_27_16
+ JUMP Z, store_lba_27_16
+ LOAD sF, s3
+ SUB sF, STROBE_CF_READER_AND_RD
+ JUMP Z, put_data_in_wb_bus
+ ;
+ ; IF NOT READ REQUEST MAINTAIN SIGNAL
+ ;
+ LOAD sF, 00
+ OUTPUT sF, CONTROL_OUT
+ OUTPUT sF, CONTROL_WB_OUT
+ JUMP main
+ store_lba_15_0:
+ ; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ INPUT s7, DATA_WB_IN_7_0
+ ; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ INPUT s8, DATA_WB_IN_15_8
+ ; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ LOAD sF, 00
+ AND s5, sF
+ JUMP wishbone_ack
+ store_lba_27_16:
+ ; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ INPUT s9, DATA_WB_IN_7_0
+ ; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ INPUT sA, DATA_WB_IN_15_8
+ ; SECTOR AVAILABLE -> 0
+ ; antes 020503 LOAD sF,FE
+ LOAD sF, 00
+ AND s5, sF
+ JUMP wishbone_ack
+ do_reset_and_retry:
+ CALL soft_reset
+ LOAD s5, 00
+ put_data_in_wb_bus:
+ CALL read_word_from_cf
+ ; check for error
+ LOAD sF, s5
+ AND sF, ERROR_MY_STATUS
+ JUMP NZ, do_reset_and_retry
+ OUTPUT sB, DATA_WB_OUT_7_0
+ OUTPUT sC, DATA_WB_OUT_15_8
+ ;
+ ; ENABLE WB ENABLE
+ ;
+ LOAD sF, WB_BUS_WRITE_ENABLE
+ OUTPUT sF, CONTROL_OUT
+ wishbone_ack:
+ ;
+ ; WISHBONE ACK
+ ;
+ LOAD sF, ACK_CF_READER
+ OUTPUT sF, CONTROL_WB_OUT
+ ; null - wait state
+ ;
+ AND sF, sF
+ AND sF, sF
+ AND sF, sF
+ AND sF, sF
+ ; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ ; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ ; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ ;
+ LOAD sF, 00
+ OUTPUT sF, CONTROL_WB_OUT
+ ;OUTPUT sF,CONTROL_OUT
+ JUMP main
+ wait_loop:
+ ;
+ ; SOFTWARE DELAY LOOP
+ ; TAKES SLOW LOOP VALUE FROM sF
+ ;
+ ; TWO CYCLES PER INSTRUCTION
+ ;
+ ; SLOW LOOP 3 INSTRUCTIONS * sF
+ ; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ ; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ LOAD s1, sF
+ slow_loop:
+ LOAD s0, DELAY1
+ fast_loop:
+ SUB s0, 01
+ JUMP NZ, fast_loop
+ SUB s1, 01
+ JUMP NZ, slow_loop
+ RETURN
+ write_ide_register:
+ ;
+ ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ;
+ OUTPUT sF, IDE_ADDRESS_OUT
+ ;
+ ; DATA OUT IDE
+ ;
+ OUTPUT sD, DATA_IDE_OUT_7_0
+ OUTPUT sE, DATA_IDE_OUT_15_8
+ ;
+ ; DATA OUT BUS ENABLE
+ ;
+ LOAD sF, IDE_BUS_WRITE_ENABLE
+ OUTPUT sF, CONTROL_OUT
+ ;
+ ; WAIT FOR 70 NS (MIN)
+ ; (120ns/50Mhz)
+ LOAD sF, 01
+ CALL wait_loop
+ ;
+ ; WRITE STROBE ON
+ ;
+ LOAD sF, NIOWR
+ OUTPUT sF, IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 165NS (MIN)
+ ; (240ns/50Mhz)
+ ; 020503
+ LOAD sF, 02
+ CALL wait_loop
+ ;
+ ; WRITE STROBE OFF
+ ;
+ LOAD sF, FF
+ OUTPUT sF, IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ; (410ns/50Mhz)
+ ; 020503
+ ;LOAD sF,01
+ ;CALL wait_loop
+ ;
+ ; CE AND ADRESSES OFF
+ ;
+ LOAD sF, CF_OFF
+ OUTPUT sF, IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ ; (put again 020503)
+ LOAD sF, 01
+ CALL wait_loop
+ ;
+ ; DATA OUT BUS DISABLE
+ ;
+ LOAD sF, 00
+ OUTPUT sF, CONTROL_OUT
+ ;
+ ; (put again 020503)
+ LOAD sF, 02
+ CALL wait_loop
+ RETURN
+ read_ide_register:
+ ;
+ ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ;
+ OUTPUT sF, IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 70 NS (MIN)
+ ;
+ LOAD sF, 01
+ CALL wait_loop
+ ;
+ ; READ STROBE ON
+ ; reset control_out (140503)
+ LOAD sF, 00
+ OUTPUT sF, CONTROL_OUT
+ LOAD sF, NIORD
+ OUTPUT sF, IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 165NS (MIN)
+ ;
+ LOAD sF, 02
+ CALL wait_loop
+ ;
+ ; TAKE DE DATA FROM IDE BUS
+ ;
+ INPUT sB, DATA_IDE_IN_7_0
+ INPUT sC, DATA_IDE_IN_15_8
+ ;
+ ; READ STROBE OFF
+ ;
+ LOAD sF, FF
+ OUTPUT sF, IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ;
+ ;LOAD sF,01
+ ;CALL wait_loop
+ ;
+ ; CE AND ADRESSES OFF
+ ;
+ LOAD sF, CF_OFF
+ OUTPUT sF, IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ; (120ns/50mhz)
+ ;LOAD sF,01
+ ;CALL wait_loop
+ RETURN
+ read_sector:
+ ;
+ ; WRITE ATA COMMANDS TO THE CF
+ ;
+ ;
+ ; IDE FEATURE REGISTER
+ ;
+ LOAD sD, WRITE_SEC_FEATURE
+ LOAD sF, FEATURE
+ CALL write_ide_register
+ ;
+ ; IDE SECTOR COUNT REGISTER
+ ;
+ LOAD sD, 01
+ LOAD sF, SECTOR_COUNT
+ CALL write_ide_register
+ ;
+ ; IDE LBA_7_0
+ ;
+ LOAD sD, s7
+ LOAD sF, LBA_7_0
+ CALL write_ide_register
+ ;
+ ; IDE LBA_15_8
+ ;
+ LOAD sD, s8
+ LOAD sF, LBA_15_8
+ CALL write_ide_register
+ ;
+ ; IDE LBA_23_16
+ ;
+ LOAD sD, s9
+ LOAD sF, LBA_23_16
+ CALL write_ide_register
+ ;
+ ; IDE LD_LBA_27_24
+ ;
+ ; LBA_27_42 OR WITH 1110
+ ; BIT7 : 1
+ ; BIT6 : LBA=1
+ ; BIT5 : 1
+ ; BIT4 : DRV=0
+ ;
+ ;
+ LOAD sF, sA
+ OR sF, E0
+ LOAD sD, sF
+ LOAD sF, LD_LBA_27_24
+ CALL write_ide_register
+ ;
+ ; IDE READ SECTOR COMMAND
+ ;
+ LOAD sD, READ_SECTOR_COMMAND
+ LOAD sF, COMMAND
+ CALL write_ide_register
+ ;
+ ; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ ;
+ ; 290103 Added data available check
+ retry_status_check:
+ CALL cf_status_check
+ LOAD sF, s5
+ AND sF, ERROR_MY_STATUS
+ RETURN NZ
+ LOAD sF, DATA_TRANSFER_ALLOWED
+ AND sF, s5
+ ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ JUMP Z, retry_status_check
+ LOAD sF, SECTOR_AVAILABLE
+ OR s5, sF
+ ;
+ ; RESET WORDS READ REGISTER
+ ;
+ LOAD s6, FF
+ RETURN
+ read_word_from_cf:
+ ;
+ ; CHECK IF THE SECTOR IS AVAILABLE
+ ;
+ LOAD sF, SECTOR_AVAILABLE
+ AND sF, s5
+ ;
+ ; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ ;
+ CALL Z, read_new_sector
+ ; check for error
+ LOAD sF, s5
+ AND sF, ERROR_MY_STATUS
+ RETURN NZ
+ ;retry_status_check:
+ ;CALL cf_status_check
+ ;
+ ; CHECK IF DATA IS AVAILABLE
+ ;
+ ; 120103 - changed . When there is sector
+ ; available in the cf ram buffer it is not
+ ; necessary to check neither bsy or drq
+ ; only read words with the correct timing paramenters
+ ;
+ ;LOAD sF,DATA_TRANSFER_ALLOWED
+ ;AND sF,s5
+ ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ;JUMP Z,retry_status_check
+ ; end 120103
+ ;
+ ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ;
+ CALL read_word
+ AND s6, s6
+ JUMP Z, reset_word_READ
+ ;
+ ; DECREMENT NUMBER OF WORDS READ
+ ;
+ SUB s6, 01
+ RETURN
+ reset_word_READ:
+ ;
+ ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ;
+ ;ADD s7,01
+ LOAD s6, FF
+ LOAD sF, FE
+ AND s5, sF
+ RETURN
+
+ read_word:
+ ;
+ ; READ WORDS FROM IDE DATA REGISTERS
+ ;
+ LOAD sF, DATA
+ CALL read_ide_register
+ ;
+ ; DATA ARE IN sB , sC
+ ;
+ ; DATA AVAILABLE SIGNAL IS STORED
+ LOAD sF, TAG0_WORD_AVAILABLE
+ OUTPUT sF, CONTROL_WB_OUT
+ RETURN
+ dummy_word_read:
+ CALL read_word
+ SUB s6, 01
+ read_new_sector:
+ CALL cf_status_check
+ LOAD sF, s5
+ AND sF, DATA_TRANSFER_ALLOWED
+ ;loops until previous non READ words are READ
+ JUMP NZ, dummy_word_read
+ LOAD sF, s5
+ AND sF, ERROR_MY_STATUS
+ RETURN NZ
+ LOAD sF, s5
+ AND sF, COMMAND_ALLOWED
+ ; loops until commands are allowed
+ LOAD s6, FF
+ JUMP Z, read_new_sector
+ JUMP read_sector
+ cf_status_check:
+ ;
+ ; CF STATUS REGISTER READ
+ ;
+ LOAD sF, STATUS
+ CALL read_ide_register
+ ;
+ ; ERROR
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 0 0 0 0 0 0 0 1
+ ; ERR-ST X X X X X X X 1
+ ; AND 0 0 0 0 0 0 0 1
+ LOAD sF, 01
+ AND sF, sB
+ JUMP NZ, put_error_code
+ ;
+ ; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 1 1 0 0 1 0 0 1
+ ; DRQ-ST 0 1 X X 1 X X 0
+ ; AND 0 1 0 0 1 0 0 0
+ LOAD sF, C9
+ AND sF, sB
+ SUB sF, 48
+ JUMP Z, put_data_request_allowed
+
+ ;
+ ; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 1 1 0 0 0 0 0 1
+ ; CMD-ST 0 1 X X 0 X X 0
+ ; AND 0 1 0 0 0 0 0 0
+ LOAD sF, C1
+ AND sF, sB
+ SUB sF, 40
+ JUMP Z, put_command_allowed
+ ;
+ ; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ ;
+ ;JUMP put_error_code
+ ; REVISAR ???
+ ;AND s5,01
+ RETURN
+ put_error_code:
+ ;
+ ; ERROR SIGNAL
+ ;
+ ; PUT ERROR CODE
+ ;
+ LOAD sF, 04
+ OUTPUT sF, CONTROL_OUT
+ CALL soft_reset
+ LOAD s5, ERROR_MY_STATUS
+ RETURN
+ ;JUMP inicialization (STACK OVERFLOW???)
+ soft_reset:
+ LOAD sD, SOFT_RESET
+ LOAD sF, CONTROL
+ CALL write_ide_register
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sF, FF
+ CALL wait_loop
+ LOAD sD, 00
+ LOAD sF, CONTROL
+ CALL write_ide_register
+ RETURN
+put_data_request_allowed:
+ ;
+ ; DRQ ALLOW -> MY STATUS REGISTER
+ ;
+ AND s5, FD
+ LOAD sF, DATA_TRANSFER_ALLOWED
+ OR s5, sF
+ RETURN
+ put_command_allowed:
+ ;
+ ; DRQ ALLOW -> MY STATUS REGISTER
+ ;
+ AND s5, FB
+ LOAD sF, COMMAND_ALLOWED
+ OR s5, sF
+ RETURN
+ ADDRESS FF
+ interrupt:
+ RETURNI ENABLE
Index: compile/PASS4.DAT
===================================================================
--- compile/PASS4.DAT (nonexistent)
+++ compile/PASS4.DAT (revision 13)
@@ -0,0 +1,5568 @@
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- CF SECTOR READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- - SEPTEMBER 2002
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- - UPV / EHU.
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Design units : FAT FILE LOADER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- File name : cf_sector_reader.txt
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Purpose : READ RAW SECTORS FROM CF
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Library : -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Compiler : KCPSM ASSEMBLER V1.25
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Debugger : PSM DEBUG V1.00
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Revision list
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Version Author Date Changes
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 260902 Armando Astarloa 27 September 2002 -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- do_reset_and_retry state
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Description : DUMMY CF SECTORS READ
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- CONSTANT DEFINITIONS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DELAY1
+ OP1 VALUE-DELAY1
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDENTIFY_COMMAND
+ OP1 VALUE-IDENTIFY_COMMAND
+ OPERAND2-EC
+ OP2 VALUE-EC
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SECTOR_COMMAND
+ OP1 VALUE-WRITE_SECTOR_COMMAND
+ OPERAND2-30
+ OP2 VALUE-30
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-READ_SECTOR_COMMAND
+ OP1 VALUE-READ_SECTOR_COMMAND
+ OPERAND2-20
+ OP2 VALUE-20
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SEC_FEATURE
+ OP1 VALUE-WRITE_SEC_FEATURE
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SOFT_RESET
+ OP1 VALUE-SOFT_RESET
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- RAM REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s2
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s3 -> WISHBONE CONTROL
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s4 -> REGISTERS STACK
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s5 -> MY_STATUS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = ERROR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_AVAILABLE
+ OP1 VALUE-SECTOR_AVAILABLE
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND_ALLOWED
+ OP1 VALUE-COMMAND_ALLOWED
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_TRANSFER_ALLOWED
+ OP1 VALUE-DATA_TRANSFER_ALLOWED
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR_MY_STATUS
+ OP1 VALUE-ERROR_MY_STATUS
+ OPERAND2-08
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s6 -> WORDS_READ
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s7 -> LBA_7_0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s8 -> LBA_15_8
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s9 -> LBA_23_16
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sA -> LD_LBA_27_24
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sB -> data[7:0] in ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sC -> data[15:8] in ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sD -> data[7:0] out ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sE -> data[15:8] out ide
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sF -> acummulator
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- OUTPUT PORTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- IDE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_7_0
+ OP1 VALUE-DATA_IDE_OUT_7_0
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_15_8
+ OP1 VALUE-DATA_IDE_OUT_15_8
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_CONTROL_OUT
+ OP1 VALUE-IDE_CONTROL_OUT
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = NIOWR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = NIORD
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIOWR
+ OP1 VALUE-NIOWR
+ OPERAND2-FD
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-NIORD
+ OP1 VALUE-NIORD
+ OPERAND2-FE
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_ADDRESS_OUT
+ OP1 VALUE-IDE_ADDRESS_OUT
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 = NCE1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = NCE0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = A2
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = A1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL
+ OP1 VALUE-CONTROL
+ OPERAND2-0E
+ OP2 VALUE-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA
+ OP1 VALUE-DATA
+ OPERAND2-10
+ OP2 VALUE-10
+ COMMENT-; 000 1 0 0 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-FEATURE
+ OP1 VALUE-FEATURE
+ OPERAND2-11
+ OP2 VALUE-11
+ COMMENT-; 000 1 0 0 0 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_COUNT
+ OP1 VALUE-SECTOR_COUNT
+ OPERAND2-12
+ OP2 VALUE-12
+ COMMENT-; 000 1 0 0 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_7_0
+ OP1 VALUE-LBA_7_0
+ OPERAND2-13
+ OP2 VALUE-13
+ COMMENT-; 000 1 0 0 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_15_8
+ OP1 VALUE-LBA_15_8
+ OPERAND2-14
+ OP2 VALUE-14
+ COMMENT-; 000 1 0 1 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_23_16
+ OP1 VALUE-LBA_23_16
+ OPERAND2-15
+ OP2 VALUE-15
+ COMMENT-; 000 1 0 1 0 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-LD_LBA_27_24
+ OP1 VALUE-LD_LBA_27_24
+ OPERAND2-16
+ OP2 VALUE-16
+ COMMENT-; 000 1 0 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND
+ OP1 VALUE-COMMAND
+ OPERAND2-17
+ OP2 VALUE-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CF_OFF
+ OP1 VALUE-CF_OFF
+ OPERAND2-18
+ OP2 VALUE-18
+ COMMENT-; 000 1 1 0 0 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-A_STATUS
+ OP1 VALUE-A_STATUS
+ OPERAND2-0E
+ OP2 VALUE-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STATUS
+ OP1 VALUE-STATUS
+ OPERAND2-17
+ OP2 VALUE-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_7_0
+ OP1 VALUE-DATA_WB_OUT_7_0
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_15_8
+ OP1 VALUE-DATA_WB_OUT_15_8
+ OPERAND2-05
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_OUT
+ OP1 VALUE-CONTROL_WB_OUT
+ OPERAND2-06
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = TAG0_WORD_AVAILABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = ACK_CF_READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ACK_CF_READER
+ OP1 VALUE-ACK_CF_READER
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG0_WORD_AVAILABLE
+ OP1 VALUE-TAG0_WORD_AVAILABLE
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- BUS CONTROL SIGNALS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_OUT
+ OP1 VALUE-CONTROL_OUT
+ OPERAND2-07
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = ERROR
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = WB_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = IDE_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_BUS_WRITE_ENABLE
+ OP1 VALUE-IDE_BUS_WRITE_ENABLE
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WB_BUS_WRITE_ENABLE
+ OP1 VALUE-WB_BUS_WRITE_ENABLE
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR
+ OP1 VALUE-ERROR
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- INPUT PORTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- IDE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_7_0
+ OP1 VALUE-DATA_IDE_IN_7_0
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_15_8
+ OP1 VALUE-DATA_IDE_IN_15_8
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_IN
+ OP1 VALUE-CONTROL_WB_IN
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 = WB_A0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = -
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = W_WE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = TAG1_WORD_REQUEST
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = STROBE_CF_READER
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_15_0
+ OP1 VALUE-WRITE_LBA_15_0
+ OPERAND2-05
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_27_16
+ OP1 VALUE-WRITE_LBA_27_16
+ OPERAND2-15
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-STROBE_CF_READER_AND_RD
+ OP1 VALUE-STROBE_CF_READER_AND_RD
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG1_WORD_REQUEST
+ OP1 VALUE-TAG1_WORD_REQUEST
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-W_WE
+ OP1 VALUE-W_WE
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_7_0
+ OP1 VALUE-DATA_WB_IN_7_0
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_15_8
+ OP1 VALUE-DATA_WB_IN_15_8
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- REGISTERS INITIALIZATION
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-inicialization
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BUS CONTROL : WRITE NOT ENABLE
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-01
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE BUS INIZIALIZATION
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-03
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_WB_OUT_7_0
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-04
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_WB_OUT_15_8
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-05
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE BUS INICIALIZATION
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-07
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_IDE_OUT_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-08
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_IDE_OUT_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-09
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-18
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-0A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-0B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-0C
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 210NS*31 (RESET DELAY)
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-0E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-0F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-10
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-11
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-12
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-13
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-14
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-15
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-16
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-17
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-18
+ LABEL-main
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK WISHBONE BUS
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; wait state for stb_i deassertion
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-18
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-19
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1A
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1B
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1C
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s3
+ OP1 VALUE-s3
+ OPERAND2-CONTROL_WB_IN
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK STROBE & READ
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-1E
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WRITE_LBA_15_0
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-1F
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-store_lba_15_0
+ OP2 VALUE-2A
+ COMMENT-
+ ADDRESS-20
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-21
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WRITE_LBA_27_16
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-22
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-store_lba_27_16
+ OP2 VALUE-2F
+ COMMENT-
+ ADDRESS-23
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-24
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-STROBE_CF_READER_AND_RD
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-25
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_data_in_wb_bus
+ OP2 VALUE-36
+ COMMENT-
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF NOT READ REQUEST MAINTAIN SIGNAL
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-27
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-28
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-29
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OP1 VALUE-18
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-store_lba_15_0
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ ADDRESS-2A
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s7
+ OP1 VALUE-s7
+ OPERAND2-DATA_WB_IN_7_0
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-2B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ ADDRESS-2B
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s8
+ OP1 VALUE-s8
+ OPERAND2-DATA_WB_IN_15_8
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-2C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ ADDRESS-2C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-2D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-2E
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OP1 VALUE-3E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-store_lba_27_16
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ ADDRESS-2F
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-s9
+ OP1 VALUE-s9
+ OPERAND2-DATA_WB_IN_7_0
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-30
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ ADDRESS-30
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sA
+ OP1 VALUE-sA
+ OPERAND2-DATA_WB_IN_15_8
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SECTOR AVAILABLE -> 0
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; antes 020503 LOAD sF,FE
+ ADDRESS-31
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-32
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-33
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OP1 VALUE-3E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-34
+ LABEL-do_reset_and_retry
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-34
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-35
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-36
+ LABEL-put_data_in_wb_bus
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-36
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word_from_cf
+ OP1 VALUE-96
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-37
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; check for error
+ ADDRESS-37
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-38
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-39
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-do_reset_and_retry
+ OP2 VALUE-34
+ COMMENT-
+ ADDRESS-3A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sB
+ OP1 VALUE-sB
+ OPERAND2-DATA_WB_OUT_7_0
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-3B
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sC
+ OP1 VALUE-sC
+ OPERAND2-DATA_WB_OUT_15_8
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ENABLE WB ENABLE
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WB_BUS_WRITE_ENABLE
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-3D
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-3E
+ LABEL-wishbone_ack
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE ACK
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ACK_CF_READER
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-3F
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; null - wait state
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-40
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-41
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-42
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-43
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-44
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-45
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-46
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;OUTPUT sF,CONTROL_OUT
+ ADDRESS-46
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OP1 VALUE-18
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-47
+ LABEL-wait_loop
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SOFTWARE DELAY LOOP
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKES SLOW LOOP VALUE FROM sF
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TWO CYCLES PER INSTRUCTION
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SLOW LOOP 3 INSTRUCTIONS * sF
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-47
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s1
+ OP1 VALUE-s1
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-48
+ LABEL-slow_loop
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-48
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s0
+ OP1 VALUE-s0
+ OPERAND2-DELAY1
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-49
+ LABEL-fast_loop
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-49
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s0
+ OP1 VALUE-s0
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-4A
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-fast_loop
+ OP2 VALUE-49
+ COMMENT-
+ ADDRESS-4B
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s1
+ OP1 VALUE-s1
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-4C
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-slow_loop
+ OP2 VALUE-48
+ COMMENT-
+ ADDRESS-4D
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-write_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT IDE
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-DATA_IDE_OUT_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-50
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sE
+ OP1 VALUE-sE
+ OPERAND2-DATA_IDE_OUT_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT BUS ENABLE
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_BUS_WRITE_ENABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-52
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (120ns/50Mhz)
+ ADDRESS-53
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-54
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE STROBE ON
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-NIOWR
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-56
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (240ns/50Mhz)
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 020503
+ ADDRESS-57
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-58
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE STROBE OFF
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-5A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (410ns/50Mhz)
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 020503
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CF_OFF
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-5C
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (put again 020503)
+ ADDRESS-5D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-5E
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT BUS DISABLE
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-60
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (put again 020503)
+ ADDRESS-61
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-62
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-63
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-64
+ LABEL-read_ide_register
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-66
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ STROBE ON
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; reset control_out (140503)
+ ADDRESS-67
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-68
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-69
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-NIORD
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-6A
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-6C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE DE DATA FROM IDE BUS
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sB
+ OP1 VALUE-sB
+ OPERAND2-DATA_IDE_IN_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-6E
+ LABEL-
+INSTRUCTION-INPUT
+ OPERAND1-sC
+ OP1 VALUE-sC
+ OPERAND2-DATA_IDE_IN_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ STROBE OFF
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-70
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CF_OFF
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-72
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (120ns/50mhz)
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-73
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-74
+ LABEL-read_sector
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE ATA COMMANDS TO THE CF
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE FEATURE REGISTER
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-WRITE_SEC_FEATURE
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-75
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FEATURE
+ OP2 VALUE-11
+ COMMENT-
+ ADDRESS-76
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE SECTOR COUNT REGISTER
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-78
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_COUNT
+ OP2 VALUE-12
+ COMMENT-
+ ADDRESS-79
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_7_0
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s7
+ OP2 VALUE-s7
+ COMMENT-
+ ADDRESS-7B
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_7_0
+ OP2 VALUE-13
+ COMMENT-
+ ADDRESS-7C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_15_8
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s8
+ OP2 VALUE-s8
+ COMMENT-
+ ADDRESS-7E
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_15_8
+ OP2 VALUE-14
+ COMMENT-
+ ADDRESS-7F
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_23_16
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s9
+ OP2 VALUE-s9
+ COMMENT-
+ ADDRESS-81
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_23_16
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-82
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LD_LBA_27_24
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LBA_27_42 OR WITH 1110
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT7 : 1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT6 : LBA=1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT5 : 1
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT4 : DRV=0
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sA
+ OP2 VALUE-sA
+ COMMENT-
+ ADDRESS-84
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-E0
+ OP2 VALUE-E0
+ COMMENT-
+ ADDRESS-85
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-86
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LD_LBA_27_24
+ OP2 VALUE-16
+ COMMENT-
+ ADDRESS-87
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE READ SECTOR COMMAND
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-READ_SECTOR_COMMAND
+ OP2 VALUE-20
+ COMMENT-
+ ADDRESS-89
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND
+ OP2 VALUE-17
+ COMMENT-
+ ADDRESS-8A
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 290103 Added data available check
+ ADDRESS-8B
+ LABEL-retry_status_check
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OP1 VALUE-B8
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8C
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-8D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-8E
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8F
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-90
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-91
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-91
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-retry_status_check
+ OP2 VALUE-8B
+ COMMENT-
+ ADDRESS-92
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_AVAILABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-93
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; RESET WORDS READ REGISTER
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-95
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-96
+ LABEL-read_word_from_cf
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK IF THE SECTOR IS AVAILABLE
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_AVAILABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-97
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-read_new_sector
+ OP2 VALUE-AC
+ COMMENT-
+ ADDRESS-99
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; check for error
+ ADDRESS-99
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-9A
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-9B
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;retry_status_check:
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL cf_status_check
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK IF DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 120103 - changed . When there is sector
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; available in the cf ram buffer it is not
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; necessary to check neither bsy or drq
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; only read words with the correct timing paramenters
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,DATA_TRANSFER_ALLOWED
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;AND sF,s5
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP Z,retry_status_check
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; end 120103
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OP1 VALUE-A5
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-9D
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-s6
+ OP2 VALUE-s6
+ COMMENT-
+ ADDRESS-9E
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-reset_word_READ
+ OP2 VALUE-A1
+ COMMENT-
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DECREMENT NUMBER OF WORDS READ
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-A0
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-reset_word_READ
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;ADD s7,01
+ ADDRESS-A1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-A2
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FE
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-A3
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-A4
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-read_word
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ WORDS FROM IDE DATA REGISTERS
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA
+ OP2 VALUE-10
+ COMMENT-
+ ADDRESS-A6
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OP1 VALUE-64
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA ARE IN sB , sC
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA AVAILABLE SIGNAL IS STORED
+ ADDRESS-A7
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-TAG0_WORD_AVAILABLE
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-A8
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-A9
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-dummy_word_read
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OP1 VALUE-A5
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AB
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-AC
+ LABEL-read_new_sector
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AC
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OP1 VALUE-B8
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AD
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-AE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-AF
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;loops until previous non READ words are READ
+ ADDRESS-AF
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-dummy_word_read
+ OP2 VALUE-AA
+ COMMENT-
+ ADDRESS-B0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-B1
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-B2
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B3
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-B4
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND_ALLOWED
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-B5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; loops until commands are allowed
+ ADDRESS-B5
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-B6
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-read_new_sector
+ OP2 VALUE-AC
+ COMMENT-
+ ADDRESS-B7
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-read_sector
+ OP1 VALUE-74
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-cf_status_check
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CF STATUS REGISTER READ
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-STATUS
+ OP2 VALUE-17
+ COMMENT-
+ ADDRESS-B9
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OP1 VALUE-64
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERROR
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERR-ST X X X X X X X 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-BB
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-BC
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-put_error_code
+ OP2 VALUE-C6
+ COMMENT-
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 1 1 0 0 1 0 0 1
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ-ST 0 1 X X 1 X X 0
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 1 0 0 1 0 0 0
+ ADDRESS-BD
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-C9
+ OP2 VALUE-C9
+ COMMENT-
+ ADDRESS-BE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-BF
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-48
+ OP2 VALUE-48
+ COMMENT-
+ ADDRESS-C0
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_data_request_allowed
+ OP2 VALUE-DA
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 1 1 0 0 0 0 0 1
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CMD-ST 0 1 X X 0 X X 0
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 1 0 0 0 0 0 0
+ ADDRESS-C1
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-C1
+ OP2 VALUE-C1
+ COMMENT-
+ ADDRESS-C2
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-C3
+ LABEL-
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-40
+ OP2 VALUE-40
+ COMMENT-
+ ADDRESS-C4
+ LABEL-
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_command_allowed
+ OP2 VALUE-DE
+ COMMENT-
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP put_error_code
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; REVISAR ???
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;AND s5,01
+ ADDRESS-C5
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-put_error_code
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERROR SIGNAL
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; PUT ERROR CODE
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-C7
+ LABEL-
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-C8
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C9
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-CA
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP inicialization (STACK OVERFLOW???)
+ ADDRESS-CB
+ LABEL-soft_reset
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-SOFT_RESET
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-CC
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL
+ OP2 VALUE-0E
+ COMMENT-
+ ADDRESS-CD
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CE
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-CF
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D0
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D1
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D2
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D3
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D4
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D5
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D6
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-D7
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL
+ OP2 VALUE-0E
+ COMMENT-
+ ADDRESS-D8
+ LABEL-
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D9
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-put_data_request_allowed
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-FD
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-DB
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-DC
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-DD
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-put_command_allowed
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-FB
+ OP2 VALUE-FB
+ COMMENT-
+ ADDRESS-DF
+ LABEL-
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND_ALLOWED
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-E0
+ LABEL-
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-E1
+ LABEL-
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+INSTRUCTION-ADDRESS
+ OPERAND1-FF
+ OP1 VALUE-FF
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-interrupt
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+INSTRUCTION-RETURNI
+ OPERAND1-ENABLE
+ OP1 VALUE-ENABLE
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
Index: compile/PASS5.DAT
===================================================================
--- compile/PASS5.DAT (nonexistent)
+++ compile/PASS5.DAT (revision 13)
@@ -0,0 +1,6960 @@
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- CF SECTOR READER
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- - SEPTEMBER 2002
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- - UPV / EHU.
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Design units : FAT FILE LOADER
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- File name : cf_sector_reader.txt
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Purpose : READ RAW SECTORS FROM CF
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Library : -
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Compiler : KCPSM ASSEMBLER V1.25
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Debugger : PSM DEBUG V1.00
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--===========================================================================--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Revision list
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Version Author Date Changes
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 260902 Armando Astarloa 27 September 2002 -
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- do_reset_and_retry state
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- Description : DUMMY CF SECTORS READ
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-------------------------------------------------------------------------------
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- CONSTANT DEFINITIONS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DELAY1, 03
+ LOGFORMAT-CONSTANT DELAY1, 03
+INSTRUCTION-CONSTANT
+ OPERAND1-DELAY1
+ OP1 VALUE-DELAY1
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT IDENTIFY_COMMAND, EC
+ LOGFORMAT-CONSTANT IDENTIFY_COMMAND, EC
+INSTRUCTION-CONSTANT
+ OPERAND1-IDENTIFY_COMMAND
+ OP1 VALUE-IDENTIFY_COMMAND
+ OPERAND2-EC
+ OP2 VALUE-EC
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT WRITE_SECTOR_COMMAND, 30
+ LOGFORMAT-CONSTANT WRITE_SECTOR_COMMAND, 30
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SECTOR_COMMAND
+ OP1 VALUE-WRITE_SECTOR_COMMAND
+ OPERAND2-30
+ OP2 VALUE-30
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT READ_SECTOR_COMMAND, 20
+ LOGFORMAT-CONSTANT READ_SECTOR_COMMAND, 20
+INSTRUCTION-CONSTANT
+ OPERAND1-READ_SECTOR_COMMAND
+ OP1 VALUE-READ_SECTOR_COMMAND
+ OPERAND2-20
+ OP2 VALUE-20
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT WRITE_SEC_FEATURE, 00
+ LOGFORMAT-CONSTANT WRITE_SEC_FEATURE, 00
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_SEC_FEATURE
+ OP1 VALUE-WRITE_SEC_FEATURE
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT SOFT_RESET, 04
+ LOGFORMAT-CONSTANT SOFT_RESET, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-SOFT_RESET
+ OP1 VALUE-SOFT_RESET
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- RAM REGISTERS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s2
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s3 -> WISHBONE CONTROL
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s4 -> REGISTERS STACK
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s5 -> MY_STATUS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = ERROR
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT SECTOR_AVAILABLE, 01
+ LOGFORMAT-CONSTANT SECTOR_AVAILABLE, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_AVAILABLE
+ OP1 VALUE-SECTOR_AVAILABLE
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT COMMAND_ALLOWED, 02
+ LOGFORMAT-CONSTANT COMMAND_ALLOWED, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND_ALLOWED
+ OP1 VALUE-COMMAND_ALLOWED
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_TRANSFER_ALLOWED, 04
+ LOGFORMAT-CONSTANT DATA_TRANSFER_ALLOWED, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_TRANSFER_ALLOWED
+ OP1 VALUE-DATA_TRANSFER_ALLOWED
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT ERROR_MY_STATUS, 08
+ LOGFORMAT-CONSTANT ERROR_MY_STATUS, 08
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR_MY_STATUS
+ OP1 VALUE-ERROR_MY_STATUS
+ OPERAND2-08
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s6 -> WORDS_READ
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s7 -> LBA_7_0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s8 -> LBA_15_8
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; s9 -> LBA_23_16
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sA -> LD_LBA_27_24
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sB -> data[7:0] in ide
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sC -> data[15:8] in ide
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sD -> data[7:0] out ide
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sE -> data[15:8] out ide
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; sF -> acummulator
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- OUTPUT PORTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- IDE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_IDE_OUT_7_0, 00
+ LOGFORMAT-CONSTANT DATA_IDE_OUT_7_0, 00
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_7_0
+ OP1 VALUE-DATA_IDE_OUT_7_0
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_IDE_OUT_15_8, 01
+ LOGFORMAT-CONSTANT DATA_IDE_OUT_15_8, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_OUT_15_8
+ OP1 VALUE-DATA_IDE_OUT_15_8
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT IDE_CONTROL_OUT, 02
+ LOGFORMAT-CONSTANT IDE_CONTROL_OUT, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_CONTROL_OUT
+ OP1 VALUE-IDE_CONTROL_OUT
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = NIOWR
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = NIORD
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT NIOWR, FD
+ LOGFORMAT-CONSTANT NIOWR, FD
+INSTRUCTION-CONSTANT
+ OPERAND1-NIOWR
+ OP1 VALUE-NIOWR
+ OPERAND2-FD
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT NIORD, FE
+ LOGFORMAT-CONSTANT NIORD, FE
+INSTRUCTION-CONSTANT
+ OPERAND1-NIORD
+ OP1 VALUE-NIORD
+ OPERAND2-FE
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT IDE_ADDRESS_OUT, 03
+ LOGFORMAT-CONSTANT IDE_ADDRESS_OUT, 03
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_ADDRESS_OUT
+ OP1 VALUE-IDE_ADDRESS_OUT
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 = NCE1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = NCE0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = A2
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = A1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = A0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT CONTROL, 0E
+ LOGFORMAT-CONSTANT CONTROL, 0E
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL
+ OP1 VALUE-CONTROL
+ OPERAND2-0E
+ OP2 VALUE-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA, 10
+ LOGFORMAT-CONSTANT DATA, 10
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA
+ OP1 VALUE-DATA
+ OPERAND2-10
+ OP2 VALUE-10
+ COMMENT-; 000 1 0 0 0 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT FEATURE, 11
+ LOGFORMAT-CONSTANT FEATURE, 11
+INSTRUCTION-CONSTANT
+ OPERAND1-FEATURE
+ OP1 VALUE-FEATURE
+ OPERAND2-11
+ OP2 VALUE-11
+ COMMENT-; 000 1 0 0 0 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT SECTOR_COUNT, 12
+ LOGFORMAT-CONSTANT SECTOR_COUNT, 12
+INSTRUCTION-CONSTANT
+ OPERAND1-SECTOR_COUNT
+ OP1 VALUE-SECTOR_COUNT
+ OPERAND2-12
+ OP2 VALUE-12
+ COMMENT-; 000 1 0 0 1 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT LBA_7_0, 13
+ LOGFORMAT-CONSTANT LBA_7_0, 13
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_7_0
+ OP1 VALUE-LBA_7_0
+ OPERAND2-13
+ OP2 VALUE-13
+ COMMENT-; 000 1 0 0 1 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT LBA_15_8, 14
+ LOGFORMAT-CONSTANT LBA_15_8, 14
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_15_8
+ OP1 VALUE-LBA_15_8
+ OPERAND2-14
+ OP2 VALUE-14
+ COMMENT-; 000 1 0 1 0 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT LBA_23_16, 15
+ LOGFORMAT-CONSTANT LBA_23_16, 15
+INSTRUCTION-CONSTANT
+ OPERAND1-LBA_23_16
+ OP1 VALUE-LBA_23_16
+ OPERAND2-15
+ OP2 VALUE-15
+ COMMENT-; 000 1 0 1 0 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT LD_LBA_27_24, 16
+ LOGFORMAT-CONSTANT LD_LBA_27_24, 16
+INSTRUCTION-CONSTANT
+ OPERAND1-LD_LBA_27_24
+ OP1 VALUE-LD_LBA_27_24
+ OPERAND2-16
+ OP2 VALUE-16
+ COMMENT-; 000 1 0 1 1 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT COMMAND, 17
+ LOGFORMAT-CONSTANT COMMAND, 17
+INSTRUCTION-CONSTANT
+ OPERAND1-COMMAND
+ OP1 VALUE-COMMAND
+ OPERAND2-17
+ OP2 VALUE-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT CF_OFF, 18
+ LOGFORMAT-CONSTANT CF_OFF, 18
+INSTRUCTION-CONSTANT
+ OPERAND1-CF_OFF
+ OP1 VALUE-CF_OFF
+ OPERAND2-18
+ OP2 VALUE-18
+ COMMENT-; 000 1 1 0 0 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ IDE REGISTERS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; NCE1/NCE0/ A2/ A1/ A0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT A_STATUS, 0E
+ LOGFORMAT-CONSTANT A_STATUS, 0E
+INSTRUCTION-CONSTANT
+ OPERAND1-A_STATUS
+ OP1 VALUE-A_STATUS
+ OPERAND2-0E
+ OP2 VALUE-0E
+ COMMENT-; 000 0 1 1 1 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT STATUS, 17
+ LOGFORMAT-CONSTANT STATUS, 17
+INSTRUCTION-CONSTANT
+ OPERAND1-STATUS
+ OP1 VALUE-STATUS
+ OPERAND2-17
+ OP2 VALUE-17
+ COMMENT-; 000 1 0 1 1 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_WB_OUT_7_0, 04
+ LOGFORMAT-CONSTANT DATA_WB_OUT_7_0, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_7_0
+ OP1 VALUE-DATA_WB_OUT_7_0
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_WB_OUT_15_8, 05
+ LOGFORMAT-CONSTANT DATA_WB_OUT_15_8, 05
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_OUT_15_8
+ OP1 VALUE-DATA_WB_OUT_15_8
+ OPERAND2-05
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT CONTROL_WB_OUT, 06
+ LOGFORMAT-CONSTANT CONTROL_WB_OUT, 06
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_OUT
+ OP1 VALUE-CONTROL_WB_OUT
+ OPERAND2-06
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = TAG0_WORD_AVAILABLE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = ACK_CF_READER
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT ACK_CF_READER, 01
+ LOGFORMAT-CONSTANT ACK_CF_READER, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-ACK_CF_READER
+ OP1 VALUE-ACK_CF_READER
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT TAG0_WORD_AVAILABLE, 02
+ LOGFORMAT-CONSTANT TAG0_WORD_AVAILABLE, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG0_WORD_AVAILABLE
+ OP1 VALUE-TAG0_WORD_AVAILABLE
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- BUS CONTROL SIGNALS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT CONTROL_OUT, 07
+ LOGFORMAT-CONSTANT CONTROL_OUT, 07
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_OUT
+ OP1 VALUE-CONTROL_OUT
+ OPERAND2-07
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = ERROR
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = WB_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = IDE_BUS_WRITE_ENABLE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT IDE_BUS_WRITE_ENABLE, 01
+ LOGFORMAT-CONSTANT IDE_BUS_WRITE_ENABLE, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-IDE_BUS_WRITE_ENABLE
+ OP1 VALUE-IDE_BUS_WRITE_ENABLE
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT WB_BUS_WRITE_ENABLE, 02
+ LOGFORMAT-CONSTANT WB_BUS_WRITE_ENABLE, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-WB_BUS_WRITE_ENABLE
+ OP1 VALUE-WB_BUS_WRITE_ENABLE
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT ERROR, 04
+ LOGFORMAT-CONSTANT ERROR, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-ERROR
+ OP1 VALUE-ERROR
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- INPUT PORTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- IDE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_IDE_IN_7_0, 00
+ LOGFORMAT-CONSTANT DATA_IDE_IN_7_0, 00
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_7_0
+ OP1 VALUE-DATA_IDE_IN_7_0
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_IDE_IN_15_8, 01
+ LOGFORMAT-CONSTANT DATA_IDE_IN_15_8, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_IDE_IN_15_8
+ OP1 VALUE-DATA_IDE_IN_15_8
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT CONTROL_WB_IN, 02
+ LOGFORMAT-CONSTANT CONTROL_WB_IN, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-CONTROL_WB_IN
+ OP1 VALUE-CONTROL_WB_IN
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D7 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D6 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D5 =
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D4 = WB_A0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D3 = -
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D2 = W_WE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D1 = TAG1_WORD_REQUEST
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; D0 = STROBE_CF_READER
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT WRITE_LBA_15_0, 05
+ LOGFORMAT-CONSTANT WRITE_LBA_15_0, 05
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_15_0
+ OP1 VALUE-WRITE_LBA_15_0
+ OPERAND2-05
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT WRITE_LBA_27_16, 15
+ LOGFORMAT-CONSTANT WRITE_LBA_27_16, 15
+INSTRUCTION-CONSTANT
+ OPERAND1-WRITE_LBA_27_16
+ OP1 VALUE-WRITE_LBA_27_16
+ OPERAND2-15
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT STROBE_CF_READER_AND_RD, 01
+ LOGFORMAT-CONSTANT STROBE_CF_READER_AND_RD, 01
+INSTRUCTION-CONSTANT
+ OPERAND1-STROBE_CF_READER_AND_RD
+ OP1 VALUE-STROBE_CF_READER_AND_RD
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT TAG1_WORD_REQUEST, 02
+ LOGFORMAT-CONSTANT TAG1_WORD_REQUEST, 02
+INSTRUCTION-CONSTANT
+ OPERAND1-TAG1_WORD_REQUEST
+ OP1 VALUE-TAG1_WORD_REQUEST
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT W_WE, 04
+ LOGFORMAT-CONSTANT W_WE, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-W_WE
+ OP1 VALUE-W_WE
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- WISHBONE INTERFACE PORTS - INPUTS
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_WB_IN_7_0, 03
+ LOGFORMAT-CONSTANT DATA_WB_IN_7_0, 03
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_7_0
+ OP1 VALUE-DATA_WB_IN_7_0
+ OPERAND2-03
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-CONSTANT DATA_WB_IN_15_8, 04
+ LOGFORMAT-CONSTANT DATA_WB_IN_15_8, 04
+INSTRUCTION-CONSTANT
+ OPERAND1-DATA_WB_IN_15_8
+ OP1 VALUE-DATA_WB_IN_15_8
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;-- REGISTERS INITIALIZATION
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;--
+ ADDRESS-00
+ LABEL-inicialization
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BUS CONTROL : WRITE NOT ENABLE
+ ADDRESS-00
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-00
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-01
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-02
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE BUS INIZIALIZATION
+ ADDRESS-02
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-02
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-03
+ LABEL-
+ FORMATTED-OUTPUT sF, DATA_WB_OUT_7_0
+ LOGFORMAT-OUTPUT sF, DATA_WB_OUT_7_0[04]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_WB_OUT_7_0
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-04
+ LABEL-
+ FORMATTED-OUTPUT sF, DATA_WB_OUT_15_8
+ LOGFORMAT-OUTPUT sF, DATA_WB_OUT_15_8[05]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_WB_OUT_15_8
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-05
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_WB_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_WB_OUT[06]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-06
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE BUS INICIALIZATION
+ ADDRESS-06
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-06
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-07
+ LABEL-
+ FORMATTED-OUTPUT sF, DATA_IDE_OUT_7_0
+ LOGFORMAT-OUTPUT sF, DATA_IDE_OUT_7_0[00]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_IDE_OUT_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-08
+ LABEL-
+ FORMATTED-OUTPUT sF, DATA_IDE_OUT_15_8
+ LOGFORMAT-OUTPUT sF, DATA_IDE_OUT_15_8[01]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_IDE_OUT_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-09
+ LABEL-
+ FORMATTED-LOAD sF, 18
+ LOGFORMAT-LOAD sF, 18
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-18
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-0A
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_ADDRESS_OUT
+ LOGFORMAT-OUTPUT sF, IDE_ADDRESS_OUT[03]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-0B
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-0C
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, IDE_CONTROL_OUT[02]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-0D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 210NS*31 (RESET DELAY)
+ ADDRESS-0D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-0D
+ LABEL-
+ FORMATTED-LOAD s5, 00
+ LOGFORMAT-LOAD s5, 00
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-0E
+ LABEL-
+ FORMATTED-LOAD s6, 00
+ LOGFORMAT-LOAD s6, 00
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-0F
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-10
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-11
+ LABEL-
+ FORMATTED-CALL soft_reset
+ LOGFORMAT-CALL soft_reset[CB]
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-12
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-13
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-14
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-15
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-16
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-17
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-18
+ LABEL-main
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK WISHBONE BUS
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; wait state for stb_i deassertion
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-18
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-18
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-19
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1A
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1B
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-1C
+ LABEL-
+ FORMATTED-INPUT s3, CONTROL_WB_IN
+ LOGFORMAT-INPUT s3, CONTROL_WB_IN[02]
+INSTRUCTION-INPUT
+ OPERAND1-s3
+ OP1 VALUE-s3
+ OPERAND2-CONTROL_WB_IN
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-1D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK STROBE & READ
+ ADDRESS-1D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-1D
+ LABEL-
+ FORMATTED-LOAD sF, s3
+ LOGFORMAT-LOAD sF, s3
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-1E
+ LABEL-
+ FORMATTED-SUB sF, WRITE_LBA_15_0
+ LOGFORMAT-SUB sF, WRITE_LBA_15_0[05]
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WRITE_LBA_15_0
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-1F
+ LABEL-
+ FORMATTED-JUMP Z, store_lba_15_0
+ LOGFORMAT-JUMP Z, store_lba_15_0[2A]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-store_lba_15_0
+ OP2 VALUE-2A
+ COMMENT-
+ ADDRESS-20
+ LABEL-
+ FORMATTED-LOAD sF, s3
+ LOGFORMAT-LOAD sF, s3
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-21
+ LABEL-
+ FORMATTED-SUB sF, WRITE_LBA_27_16
+ LOGFORMAT-SUB sF, WRITE_LBA_27_16[15]
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WRITE_LBA_27_16
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-22
+ LABEL-
+ FORMATTED-JUMP Z, store_lba_27_16
+ LOGFORMAT-JUMP Z, store_lba_27_16[2F]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-store_lba_27_16
+ OP2 VALUE-2F
+ COMMENT-
+ ADDRESS-23
+ LABEL-
+ FORMATTED-LOAD sF, s3
+ LOGFORMAT-LOAD sF, s3
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s3
+ OP2 VALUE-s3
+ COMMENT-
+ ADDRESS-24
+ LABEL-
+ FORMATTED-SUB sF, STROBE_CF_READER_AND_RD
+ LOGFORMAT-SUB sF, STROBE_CF_READER_AND_RD[01]
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-STROBE_CF_READER_AND_RD
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-25
+ LABEL-
+ FORMATTED-JUMP Z, put_data_in_wb_bus
+ LOGFORMAT-JUMP Z, put_data_in_wb_bus[36]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_data_in_wb_bus
+ OP2 VALUE-36
+ COMMENT-
+ ADDRESS-26
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF NOT READ REQUEST MAINTAIN SIGNAL
+ ADDRESS-26
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-26
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-27
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-28
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_WB_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_WB_OUT[06]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-29
+ LABEL-
+ FORMATTED-JUMP main
+ LOGFORMAT-JUMP main[18]
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OP1 VALUE-18
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-store_lba_15_0
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2A
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ ADDRESS-2A
+ LABEL-
+ FORMATTED-INPUT s7, DATA_WB_IN_7_0
+ LOGFORMAT-INPUT s7, DATA_WB_IN_7_0[03]
+INSTRUCTION-INPUT
+ OPERAND1-s7
+ OP1 VALUE-s7
+ OPERAND2-DATA_WB_IN_7_0
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-2B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ ADDRESS-2B
+ LABEL-
+ FORMATTED-INPUT s8, DATA_WB_IN_15_8
+ LOGFORMAT-INPUT s8, DATA_WB_IN_15_8[04]
+INSTRUCTION-INPUT
+ OPERAND1-s8
+ OP1 VALUE-s8
+ OPERAND2-DATA_WB_IN_15_8
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-2C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ ADDRESS-2C
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-2D
+ LABEL-
+ FORMATTED-AND s5, sF
+ LOGFORMAT-AND s5, sF
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-2E
+ LABEL-
+ FORMATTED-JUMP wishbone_ack
+ LOGFORMAT-JUMP wishbone_ack[3E]
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OP1 VALUE-3E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-store_lba_27_16
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-2F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ ADDRESS-2F
+ LABEL-
+ FORMATTED-INPUT s9, DATA_WB_IN_7_0
+ LOGFORMAT-INPUT s9, DATA_WB_IN_7_0[03]
+INSTRUCTION-INPUT
+ OPERAND1-s9
+ OP1 VALUE-s9
+ OPERAND2-DATA_WB_IN_7_0
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-30
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ ADDRESS-30
+ LABEL-
+ FORMATTED-INPUT sA, DATA_WB_IN_15_8
+ LOGFORMAT-INPUT sA, DATA_WB_IN_15_8[04]
+INSTRUCTION-INPUT
+ OPERAND1-sA
+ OP1 VALUE-sA
+ OPERAND2-DATA_WB_IN_15_8
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-31
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SECTOR AVAILABLE -> 0
+ ADDRESS-31
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; antes 020503 LOAD sF,FE
+ ADDRESS-31
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-32
+ LABEL-
+ FORMATTED-AND s5, sF
+ LOGFORMAT-AND s5, sF
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-33
+ LABEL-
+ FORMATTED-JUMP wishbone_ack
+ LOGFORMAT-JUMP wishbone_ack[3E]
+INSTRUCTION-JUMP
+ OPERAND1-wishbone_ack
+ OP1 VALUE-3E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-34
+ LABEL-do_reset_and_retry
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-34
+ LABEL-
+ FORMATTED-CALL soft_reset
+ LOGFORMAT-CALL soft_reset[CB]
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-35
+ LABEL-
+ FORMATTED-LOAD s5, 00
+ LOGFORMAT-LOAD s5, 00
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-36
+ LABEL-put_data_in_wb_bus
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-36
+ LABEL-
+ FORMATTED-CALL read_word_from_cf
+ LOGFORMAT-CALL read_word_from_cf[96]
+INSTRUCTION-CALL
+ OPERAND1-read_word_from_cf
+ OP1 VALUE-96
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-37
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; check for error
+ ADDRESS-37
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-38
+ LABEL-
+ FORMATTED-AND sF, ERROR_MY_STATUS
+ LOGFORMAT-AND sF, ERROR_MY_STATUS[08]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-39
+ LABEL-
+ FORMATTED-JUMP NZ, do_reset_and_retry
+ LOGFORMAT-JUMP NZ, do_reset_and_retry[34]
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-do_reset_and_retry
+ OP2 VALUE-34
+ COMMENT-
+ ADDRESS-3A
+ LABEL-
+ FORMATTED-OUTPUT sB, DATA_WB_OUT_7_0
+ LOGFORMAT-OUTPUT sB, DATA_WB_OUT_7_0[04]
+INSTRUCTION-OUTPUT
+ OPERAND1-sB
+ OP1 VALUE-sB
+ OPERAND2-DATA_WB_OUT_7_0
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-3B
+ LABEL-
+ FORMATTED-OUTPUT sC, DATA_WB_OUT_15_8
+ LOGFORMAT-OUTPUT sC, DATA_WB_OUT_15_8[05]
+INSTRUCTION-OUTPUT
+ OPERAND1-sC
+ OP1 VALUE-sC
+ OPERAND2-DATA_WB_OUT_15_8
+ OP2 VALUE-05
+ COMMENT-
+ ADDRESS-3C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ENABLE WB ENABLE
+ ADDRESS-3C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3C
+ LABEL-
+ FORMATTED-LOAD sF, WB_BUS_WRITE_ENABLE
+ LOGFORMAT-LOAD sF, WB_BUS_WRITE_ENABLE[02]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-WB_BUS_WRITE_ENABLE
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-3D
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-3E
+ LABEL-wishbone_ack
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-3E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE ACK
+ ADDRESS-3E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-3E
+ LABEL-
+ FORMATTED-LOAD sF, ACK_CF_READER
+ LOGFORMAT-LOAD sF, ACK_CF_READER[01]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ACK_CF_READER
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-3F
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_WB_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_WB_OUT[06]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-40
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; null - wait state
+ ADDRESS-40
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-40
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-41
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-42
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-43
+ LABEL-
+ FORMATTED-AND sF, sF
+ LOGFORMAT-AND sF, sF
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-44
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ ADDRESS-44
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ ADDRESS-44
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ ADDRESS-44
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-44
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-45
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_WB_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_WB_OUT[06]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-46
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;OUTPUT sF,CONTROL_OUT
+ ADDRESS-46
+ LABEL-
+ FORMATTED-JUMP main
+ LOGFORMAT-JUMP main[18]
+INSTRUCTION-JUMP
+ OPERAND1-main
+ OP1 VALUE-18
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-47
+ LABEL-wait_loop
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SOFTWARE DELAY LOOP
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKES SLOW LOOP VALUE FROM sF
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TWO CYCLES PER INSTRUCTION
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; SLOW LOOP 3 INSTRUCTIONS * sF
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ ADDRESS-47
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ ADDRESS-47
+ LABEL-
+ FORMATTED-LOAD s1, sF
+ LOGFORMAT-LOAD s1, sF
+INSTRUCTION-LOAD
+ OPERAND1-s1
+ OP1 VALUE-s1
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-48
+ LABEL-slow_loop
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-48
+ LABEL-
+ FORMATTED-LOAD s0, DELAY1
+ LOGFORMAT-LOAD s0, DELAY1[03]
+INSTRUCTION-LOAD
+ OPERAND1-s0
+ OP1 VALUE-s0
+ OPERAND2-DELAY1
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-49
+ LABEL-fast_loop
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-49
+ LABEL-
+ FORMATTED-SUB s0, 01
+ LOGFORMAT-SUB s0, 01
+INSTRUCTION-SUB
+ OPERAND1-s0
+ OP1 VALUE-s0
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-4A
+ LABEL-
+ FORMATTED-JUMP NZ, fast_loop
+ LOGFORMAT-JUMP NZ, fast_loop[49]
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-fast_loop
+ OP2 VALUE-49
+ COMMENT-
+ ADDRESS-4B
+ LABEL-
+ FORMATTED-SUB s1, 01
+ LOGFORMAT-SUB s1, 01
+INSTRUCTION-SUB
+ OPERAND1-s1
+ OP1 VALUE-s1
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-4C
+ LABEL-
+ FORMATTED-JUMP NZ, slow_loop
+ LOGFORMAT-JUMP NZ, slow_loop[48]
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-slow_loop
+ OP2 VALUE-48
+ COMMENT-
+ ADDRESS-4D
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-write_ide_register
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-4E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-4E
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4E
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_ADDRESS_OUT
+ LOGFORMAT-OUTPUT sF, IDE_ADDRESS_OUT[03]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-4F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT IDE
+ ADDRESS-4F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-4F
+ LABEL-
+ FORMATTED-OUTPUT sD, DATA_IDE_OUT_7_0
+ LOGFORMAT-OUTPUT sD, DATA_IDE_OUT_7_0[00]
+INSTRUCTION-OUTPUT
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-DATA_IDE_OUT_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-50
+ LABEL-
+ FORMATTED-OUTPUT sE, DATA_IDE_OUT_15_8
+ LOGFORMAT-OUTPUT sE, DATA_IDE_OUT_15_8[01]
+INSTRUCTION-OUTPUT
+ OPERAND1-sE
+ OP1 VALUE-sE
+ OPERAND2-DATA_IDE_OUT_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-51
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT BUS ENABLE
+ ADDRESS-51
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-51
+ LABEL-
+ FORMATTED-LOAD sF, IDE_BUS_WRITE_ENABLE
+ LOGFORMAT-LOAD sF, IDE_BUS_WRITE_ENABLE[01]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_BUS_WRITE_ENABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-52
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-53
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-53
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-53
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (120ns/50Mhz)
+ ADDRESS-53
+ LABEL-
+ FORMATTED-LOAD sF, 01
+ LOGFORMAT-LOAD sF, 01
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-54
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-55
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE STROBE ON
+ ADDRESS-55
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-55
+ LABEL-
+ FORMATTED-LOAD sF, NIOWR
+ LOGFORMAT-LOAD sF, NIOWR[FD]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-NIOWR
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-56
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, IDE_CONTROL_OUT[02]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-57
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-57
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-57
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (240ns/50Mhz)
+ ADDRESS-57
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 020503
+ ADDRESS-57
+ LABEL-
+ FORMATTED-LOAD sF, 02
+ LOGFORMAT-LOAD sF, 02
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-58
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-59
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE STROBE OFF
+ ADDRESS-59
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-59
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-5A
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, IDE_CONTROL_OUT[02]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (410ns/50Mhz)
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 020503
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5B
+ LABEL-
+ FORMATTED-LOAD sF, CF_OFF
+ LOGFORMAT-LOAD sF, CF_OFF[18]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CF_OFF
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-5C
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_ADDRESS_OUT
+ LOGFORMAT-OUTPUT sF, IDE_ADDRESS_OUT[03]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-5D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ ADDRESS-5D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (put again 020503)
+ ADDRESS-5D
+ LABEL-
+ FORMATTED-LOAD sF, 01
+ LOGFORMAT-LOAD sF, 01
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-5E
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-5F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA OUT BUS DISABLE
+ ADDRESS-5F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-5F
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-60
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-61
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-61
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (put again 020503)
+ ADDRESS-61
+ LABEL-
+ FORMATTED-LOAD sF, 02
+ LOGFORMAT-LOAD sF, 02
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-62
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-63
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-64
+ LABEL-read_ide_register
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-64
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ADDRESS-64
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-64
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_ADDRESS_OUT
+ LOGFORMAT-OUTPUT sF, IDE_ADDRESS_OUT[03]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-65
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 70 NS (MIN)
+ ADDRESS-65
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-65
+ LABEL-
+ FORMATTED-LOAD sF, 01
+ LOGFORMAT-LOAD sF, 01
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-66
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-67
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-67
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ STROBE ON
+ ADDRESS-67
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; reset control_out (140503)
+ ADDRESS-67
+ LABEL-
+ FORMATTED-LOAD sF, 00
+ LOGFORMAT-LOAD sF, 00
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-68
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-69
+ LABEL-
+ FORMATTED-LOAD sF, NIORD
+ LOGFORMAT-LOAD sF, NIORD[FE]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-NIORD
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-6A
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, IDE_CONTROL_OUT[02]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-6B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 165NS (MIN)
+ ADDRESS-6B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6B
+ LABEL-
+ FORMATTED-LOAD sF, 02
+ LOGFORMAT-LOAD sF, 02
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-02
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-6C
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-6D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; TAKE DE DATA FROM IDE BUS
+ ADDRESS-6D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6D
+ LABEL-
+ FORMATTED-INPUT sB, DATA_IDE_IN_7_0
+ LOGFORMAT-INPUT sB, DATA_IDE_IN_7_0[00]
+INSTRUCTION-INPUT
+ OPERAND1-sB
+ OP1 VALUE-sB
+ OPERAND2-DATA_IDE_IN_7_0
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-6E
+ LABEL-
+ FORMATTED-INPUT sC, DATA_IDE_IN_15_8
+ LOGFORMAT-INPUT sC, DATA_IDE_IN_15_8[01]
+INSTRUCTION-INPUT
+ OPERAND1-sC
+ OP1 VALUE-sC
+ OPERAND2-DATA_IDE_IN_15_8
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-6F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ STROBE OFF
+ ADDRESS-6F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-6F
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-70
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, IDE_CONTROL_OUT[02]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_CONTROL_OUT
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CE AND ADRESSES OFF
+ ADDRESS-71
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-71
+ LABEL-
+ FORMATTED-LOAD sF, CF_OFF
+ LOGFORMAT-LOAD sF, CF_OFF[18]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CF_OFF
+ OP2 VALUE-18
+ COMMENT-
+ ADDRESS-72
+ LABEL-
+ FORMATTED-OUTPUT sF, IDE_ADDRESS_OUT
+ LOGFORMAT-OUTPUT sF, IDE_ADDRESS_OUT[03]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-IDE_ADDRESS_OUT
+ OP2 VALUE-03
+ COMMENT-
+ ADDRESS-73
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-73
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WAIT FOR 20NS (MIN)
+ ADDRESS-73
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; (120ns/50mhz)
+ ADDRESS-73
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,01
+ ADDRESS-73
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL wait_loop
+ ADDRESS-73
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-74
+ LABEL-read_sector
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; WRITE ATA COMMANDS TO THE CF
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE FEATURE REGISTER
+ ADDRESS-74
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-74
+ LABEL-
+ FORMATTED-LOAD sD, WRITE_SEC_FEATURE
+ LOGFORMAT-LOAD sD, WRITE_SEC_FEATURE[00]
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-WRITE_SEC_FEATURE
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-75
+ LABEL-
+ FORMATTED-LOAD sF, FEATURE
+ LOGFORMAT-LOAD sF, FEATURE[11]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FEATURE
+ OP2 VALUE-11
+ COMMENT-
+ ADDRESS-76
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-77
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE SECTOR COUNT REGISTER
+ ADDRESS-77
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-77
+ LABEL-
+ FORMATTED-LOAD sD, 01
+ LOGFORMAT-LOAD sD, 01
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-78
+ LABEL-
+ FORMATTED-LOAD sF, SECTOR_COUNT
+ LOGFORMAT-LOAD sF, SECTOR_COUNT[12]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_COUNT
+ OP2 VALUE-12
+ COMMENT-
+ ADDRESS-79
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-7A
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_7_0
+ ADDRESS-7A
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7A
+ LABEL-
+ FORMATTED-LOAD sD, s7
+ LOGFORMAT-LOAD sD, s7
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s7
+ OP2 VALUE-s7
+ COMMENT-
+ ADDRESS-7B
+ LABEL-
+ FORMATTED-LOAD sF, LBA_7_0
+ LOGFORMAT-LOAD sF, LBA_7_0[13]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_7_0
+ OP2 VALUE-13
+ COMMENT-
+ ADDRESS-7C
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-7D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_15_8
+ ADDRESS-7D
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-7D
+ LABEL-
+ FORMATTED-LOAD sD, s8
+ LOGFORMAT-LOAD sD, s8
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s8
+ OP2 VALUE-s8
+ COMMENT-
+ ADDRESS-7E
+ LABEL-
+ FORMATTED-LOAD sF, LBA_15_8
+ LOGFORMAT-LOAD sF, LBA_15_8[14]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_15_8
+ OP2 VALUE-14
+ COMMENT-
+ ADDRESS-7F
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-80
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LBA_23_16
+ ADDRESS-80
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-80
+ LABEL-
+ FORMATTED-LOAD sD, s9
+ LOGFORMAT-LOAD sD, s9
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-s9
+ OP2 VALUE-s9
+ COMMENT-
+ ADDRESS-81
+ LABEL-
+ FORMATTED-LOAD sF, LBA_23_16
+ LOGFORMAT-LOAD sF, LBA_23_16[15]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LBA_23_16
+ OP2 VALUE-15
+ COMMENT-
+ ADDRESS-82
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE LD_LBA_27_24
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LBA_27_42 OR WITH 1110
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT7 : 1
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT6 : LBA=1
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT5 : 1
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BIT4 : DRV=0
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-83
+ LABEL-
+ FORMATTED-LOAD sF, sA
+ LOGFORMAT-LOAD sF, sA
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sA
+ OP2 VALUE-sA
+ COMMENT-
+ ADDRESS-84
+ LABEL-
+ FORMATTED-OR sF, E0
+ LOGFORMAT-OR sF, E0
+INSTRUCTION-OR
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-E0
+ OP2 VALUE-E0
+ COMMENT-
+ ADDRESS-85
+ LABEL-
+ FORMATTED-LOAD sD, sF
+ LOGFORMAT-LOAD sD, sF
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-86
+ LABEL-
+ FORMATTED-LOAD sF, LD_LBA_27_24
+ LOGFORMAT-LOAD sF, LD_LBA_27_24[16]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-LD_LBA_27_24
+ OP2 VALUE-16
+ COMMENT-
+ ADDRESS-87
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-88
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IDE READ SECTOR COMMAND
+ ADDRESS-88
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-88
+ LABEL-
+ FORMATTED-LOAD sD, READ_SECTOR_COMMAND
+ LOGFORMAT-LOAD sD, READ_SECTOR_COMMAND[20]
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-READ_SECTOR_COMMAND
+ OP2 VALUE-20
+ COMMENT-
+ ADDRESS-89
+ LABEL-
+ FORMATTED-LOAD sF, COMMAND
+ LOGFORMAT-LOAD sF, COMMAND[17]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND
+ OP2 VALUE-17
+ COMMENT-
+ ADDRESS-8A
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ ADDRESS-8B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-8B
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 290103 Added data available check
+ ADDRESS-8B
+ LABEL-retry_status_check
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8B
+ LABEL-
+ FORMATTED-CALL cf_status_check
+ LOGFORMAT-CALL cf_status_check[B8]
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OP1 VALUE-B8
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8C
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-8D
+ LABEL-
+ FORMATTED-AND sF, ERROR_MY_STATUS
+ LOGFORMAT-AND sF, ERROR_MY_STATUS[08]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-8E
+ LABEL-
+ FORMATTED-RETURN NZ
+ LOGFORMAT-RETURN NZ
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-8F
+ LABEL-
+ FORMATTED-LOAD sF, DATA_TRANSFER_ALLOWED
+ LOGFORMAT-LOAD sF, DATA_TRANSFER_ALLOWED[04]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-90
+ LABEL-
+ FORMATTED-AND sF, s5
+ LOGFORMAT-AND sF, s5
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-91
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-91
+ LABEL-
+ FORMATTED-JUMP Z, retry_status_check
+ LOGFORMAT-JUMP Z, retry_status_check[8B]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-retry_status_check
+ OP2 VALUE-8B
+ COMMENT-
+ ADDRESS-92
+ LABEL-
+ FORMATTED-LOAD sF, SECTOR_AVAILABLE
+ LOGFORMAT-LOAD sF, SECTOR_AVAILABLE[01]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_AVAILABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-93
+ LABEL-
+ FORMATTED-OR s5, sF
+ LOGFORMAT-OR s5, sF
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-94
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; RESET WORDS READ REGISTER
+ ADDRESS-94
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-94
+ LABEL-
+ FORMATTED-LOAD s6, FF
+ LOGFORMAT-LOAD s6, FF
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-95
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-96
+ LABEL-read_word_from_cf
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-96
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK IF THE SECTOR IS AVAILABLE
+ ADDRESS-96
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-96
+ LABEL-
+ FORMATTED-LOAD sF, SECTOR_AVAILABLE
+ LOGFORMAT-LOAD sF, SECTOR_AVAILABLE[01]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-SECTOR_AVAILABLE
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-97
+ LABEL-
+ FORMATTED-AND sF, s5
+ LOGFORMAT-AND sF, s5
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-98
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ ADDRESS-98
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-98
+ LABEL-
+ FORMATTED-CALL Z, read_new_sector
+ LOGFORMAT-CALL Z, read_new_sector[AC]
+INSTRUCTION-CALL
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-read_new_sector
+ OP2 VALUE-AC
+ COMMENT-
+ ADDRESS-99
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; check for error
+ ADDRESS-99
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-9A
+ LABEL-
+ FORMATTED-AND sF, ERROR_MY_STATUS
+ LOGFORMAT-AND sF, ERROR_MY_STATUS[08]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-9B
+ LABEL-
+ FORMATTED-RETURN NZ
+ LOGFORMAT-RETURN NZ
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;retry_status_check:
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;CALL cf_status_check
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CHECK IF DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; 120103 - changed . When there is sector
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; available in the cf ram buffer it is not
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; necessary to check neither bsy or drq
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; only read words with the correct timing paramenters
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;LOAD sF,DATA_TRANSFER_ALLOWED
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;AND sF,s5
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP Z,retry_status_check
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; end 120103
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9C
+ LABEL-
+ FORMATTED-CALL read_word
+ LOGFORMAT-CALL read_word[A5]
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OP1 VALUE-A5
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-9D
+ LABEL-
+ FORMATTED-AND s6, s6
+ LOGFORMAT-AND s6, s6
+INSTRUCTION-AND
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-s6
+ OP2 VALUE-s6
+ COMMENT-
+ ADDRESS-9E
+ LABEL-
+ FORMATTED-JUMP Z, reset_word_READ
+ LOGFORMAT-JUMP Z, reset_word_READ[A1]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-reset_word_READ
+ OP2 VALUE-A1
+ COMMENT-
+ ADDRESS-9F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DECREMENT NUMBER OF WORDS READ
+ ADDRESS-9F
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-9F
+ LABEL-
+ FORMATTED-SUB s6, 01
+ LOGFORMAT-SUB s6, 01
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-A0
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-reset_word_READ
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ADDRESS-A1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;ADD s7,01
+ ADDRESS-A1
+ LABEL-
+ FORMATTED-LOAD s6, FF
+ LOGFORMAT-LOAD s6, FF
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-A2
+ LABEL-
+ FORMATTED-LOAD sF, FE
+ LOGFORMAT-LOAD sF, FE
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FE
+ OP2 VALUE-FE
+ COMMENT-
+ ADDRESS-A3
+ LABEL-
+ FORMATTED-AND s5, sF
+ LOGFORMAT-AND s5, sF
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-A4
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-read_word
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; READ WORDS FROM IDE DATA REGISTERS
+ ADDRESS-A5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A5
+ LABEL-
+ FORMATTED-LOAD sF, DATA
+ LOGFORMAT-LOAD sF, DATA[10]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA
+ OP2 VALUE-10
+ COMMENT-
+ ADDRESS-A6
+ LABEL-
+ FORMATTED-CALL read_ide_register
+ LOGFORMAT-CALL read_ide_register[64]
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OP1 VALUE-64
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-A7
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA ARE IN sB , sC
+ ADDRESS-A7
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-A7
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA AVAILABLE SIGNAL IS STORED
+ ADDRESS-A7
+ LABEL-
+ FORMATTED-LOAD sF, TAG0_WORD_AVAILABLE
+ LOGFORMAT-LOAD sF, TAG0_WORD_AVAILABLE[02]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-TAG0_WORD_AVAILABLE
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-A8
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_WB_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_WB_OUT[06]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_WB_OUT
+ OP2 VALUE-06
+ COMMENT-
+ ADDRESS-A9
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-dummy_word_read
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AA
+ LABEL-
+ FORMATTED-CALL read_word
+ LOGFORMAT-CALL read_word[A5]
+INSTRUCTION-CALL
+ OPERAND1-read_word
+ OP1 VALUE-A5
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AB
+ LABEL-
+ FORMATTED-SUB s6, 01
+ LOGFORMAT-SUB s6, 01
+INSTRUCTION-SUB
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-AC
+ LABEL-read_new_sector
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AC
+ LABEL-
+ FORMATTED-CALL cf_status_check
+ LOGFORMAT-CALL cf_status_check[B8]
+INSTRUCTION-CALL
+ OPERAND1-cf_status_check
+ OP1 VALUE-B8
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-AD
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-AE
+ LABEL-
+ FORMATTED-AND sF, DATA_TRANSFER_ALLOWED
+ LOGFORMAT-AND sF, DATA_TRANSFER_ALLOWED[04]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-AF
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;loops until previous non READ words are READ
+ ADDRESS-AF
+ LABEL-
+ FORMATTED-JUMP NZ, dummy_word_read
+ LOGFORMAT-JUMP NZ, dummy_word_read[AA]
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-dummy_word_read
+ OP2 VALUE-AA
+ COMMENT-
+ ADDRESS-B0
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-B1
+ LABEL-
+ FORMATTED-AND sF, ERROR_MY_STATUS
+ LOGFORMAT-AND sF, ERROR_MY_STATUS[08]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-B2
+ LABEL-
+ FORMATTED-RETURN NZ
+ LOGFORMAT-RETURN NZ
+INSTRUCTION-RETURN
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B3
+ LABEL-
+ FORMATTED-LOAD sF, s5
+ LOGFORMAT-LOAD sF, s5
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-s5
+ OP2 VALUE-s5
+ COMMENT-
+ ADDRESS-B4
+ LABEL-
+ FORMATTED-AND sF, COMMAND_ALLOWED
+ LOGFORMAT-AND sF, COMMAND_ALLOWED[02]
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND_ALLOWED
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-B5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; loops until commands are allowed
+ ADDRESS-B5
+ LABEL-
+ FORMATTED-LOAD s6, FF
+ LOGFORMAT-LOAD s6, FF
+INSTRUCTION-LOAD
+ OPERAND1-s6
+ OP1 VALUE-s6
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-B6
+ LABEL-
+ FORMATTED-JUMP Z, read_new_sector
+ LOGFORMAT-JUMP Z, read_new_sector[AC]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-read_new_sector
+ OP2 VALUE-AC
+ COMMENT-
+ ADDRESS-B7
+ LABEL-
+ FORMATTED-JUMP read_sector
+ LOGFORMAT-JUMP read_sector[74]
+INSTRUCTION-JUMP
+ OPERAND1-read_sector
+ OP1 VALUE-74
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-cf_status_check
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-B8
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CF STATUS REGISTER READ
+ ADDRESS-B8
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-B8
+ LABEL-
+ FORMATTED-LOAD sF, STATUS
+ LOGFORMAT-LOAD sF, STATUS[17]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-STATUS
+ OP2 VALUE-17
+ COMMENT-
+ ADDRESS-B9
+ LABEL-
+ FORMATTED-CALL read_ide_register
+ LOGFORMAT-CALL read_ide_register[64]
+INSTRUCTION-CALL
+ OPERAND1-read_ide_register
+ OP1 VALUE-64
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERROR
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERR-ST X X X X X X X 1
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 0 0 0 0 0 0 1
+ ADDRESS-BA
+ LABEL-
+ FORMATTED-LOAD sF, 01
+ LOGFORMAT-LOAD sF, 01
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-01
+ OP2 VALUE-01
+ COMMENT-
+ ADDRESS-BB
+ LABEL-
+ FORMATTED-AND sF, sB
+ LOGFORMAT-AND sF, sB
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-BC
+ LABEL-
+ FORMATTED-JUMP NZ, put_error_code
+ LOGFORMAT-JUMP NZ, put_error_code[C6]
+INSTRUCTION-JUMP
+ OPERAND1-NZ
+ OP1 VALUE-NZ
+ OPERAND2-put_error_code
+ OP2 VALUE-C6
+ COMMENT-
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 1 1 0 0 1 0 0 1
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ-ST 0 1 X X 1 X X 0
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 1 0 0 1 0 0 0
+ ADDRESS-BD
+ LABEL-
+ FORMATTED-LOAD sF, C9
+ LOGFORMAT-LOAD sF, C9
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-C9
+ OP2 VALUE-C9
+ COMMENT-
+ ADDRESS-BE
+ LABEL-
+ FORMATTED-AND sF, sB
+ LOGFORMAT-AND sF, sB
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-BF
+ LABEL-
+ FORMATTED-SUB sF, 48
+ LOGFORMAT-SUB sF, 48
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-48
+ OP2 VALUE-48
+ COMMENT-
+ ADDRESS-C0
+ LABEL-
+ FORMATTED-JUMP Z, put_data_request_allowed
+ LOGFORMAT-JUMP Z, put_data_request_allowed[DA]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_data_request_allowed
+ OP2 VALUE-DA
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; MASK 1 1 0 0 0 0 0 1
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; CMD-ST 0 1 X X 0 X X 0
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; AND 0 1 0 0 0 0 0 0
+ ADDRESS-C1
+ LABEL-
+ FORMATTED-LOAD sF, C1
+ LOGFORMAT-LOAD sF, C1
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-C1
+ OP2 VALUE-C1
+ COMMENT-
+ ADDRESS-C2
+ LABEL-
+ FORMATTED-AND sF, sB
+ LOGFORMAT-AND sF, sB
+INSTRUCTION-AND
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-sB
+ OP2 VALUE-sB
+ COMMENT-
+ ADDRESS-C3
+ LABEL-
+ FORMATTED-SUB sF, 40
+ LOGFORMAT-SUB sF, 40
+INSTRUCTION-SUB
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-40
+ OP2 VALUE-40
+ COMMENT-
+ ADDRESS-C4
+ LABEL-
+ FORMATTED-JUMP Z, put_command_allowed
+ LOGFORMAT-JUMP Z, put_command_allowed[DE]
+INSTRUCTION-JUMP
+ OPERAND1-Z
+ OP1 VALUE-Z
+ OPERAND2-put_command_allowed
+ OP2 VALUE-DE
+ COMMENT-
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP put_error_code
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; REVISAR ???
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;AND s5,01
+ ADDRESS-C5
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-put_error_code
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; ERROR SIGNAL
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; PUT ERROR CODE
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-C6
+ LABEL-
+ FORMATTED-LOAD sF, 04
+ LOGFORMAT-LOAD sF, 04
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-04
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-C7
+ LABEL-
+ FORMATTED-OUTPUT sF, CONTROL_OUT
+ LOGFORMAT-OUTPUT sF, CONTROL_OUT[07]
+INSTRUCTION-OUTPUT
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL_OUT
+ OP2 VALUE-07
+ COMMENT-
+ ADDRESS-C8
+ LABEL-
+ FORMATTED-CALL soft_reset
+ LOGFORMAT-CALL soft_reset[CB]
+INSTRUCTION-CALL
+ OPERAND1-soft_reset
+ OP1 VALUE-CB
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-C9
+ LABEL-
+ FORMATTED-LOAD s5, ERROR_MY_STATUS
+ LOGFORMAT-LOAD s5, ERROR_MY_STATUS[08]
+INSTRUCTION-LOAD
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-ERROR_MY_STATUS
+ OP2 VALUE-08
+ COMMENT-
+ ADDRESS-CA
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;JUMP inicialization (STACK OVERFLOW???)
+ ADDRESS-CB
+ LABEL-soft_reset
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CB
+ LABEL-
+ FORMATTED-LOAD sD, SOFT_RESET
+ LOGFORMAT-LOAD sD, SOFT_RESET[04]
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-SOFT_RESET
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-CC
+ LABEL-
+ FORMATTED-LOAD sF, CONTROL
+ LOGFORMAT-LOAD sF, CONTROL[0E]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL
+ OP2 VALUE-0E
+ COMMENT-
+ ADDRESS-CD
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-CE
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-CF
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D0
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D1
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D2
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D3
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D4
+ LABEL-
+ FORMATTED-LOAD sF, FF
+ LOGFORMAT-LOAD sF, FF
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-FF
+ OP2 VALUE-FF
+ COMMENT-
+ ADDRESS-D5
+ LABEL-
+ FORMATTED-CALL wait_loop
+ LOGFORMAT-CALL wait_loop[47]
+INSTRUCTION-CALL
+ OPERAND1-wait_loop
+ OP1 VALUE-47
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D6
+ LABEL-
+ FORMATTED-LOAD sD, 00
+ LOGFORMAT-LOAD sD, 00
+INSTRUCTION-LOAD
+ OPERAND1-sD
+ OP1 VALUE-sD
+ OPERAND2-00
+ OP2 VALUE-00
+ COMMENT-
+ ADDRESS-D7
+ LABEL-
+ FORMATTED-LOAD sF, CONTROL
+ LOGFORMAT-LOAD sF, CONTROL[0E]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-CONTROL
+ OP2 VALUE-0E
+ COMMENT-
+ ADDRESS-D8
+ LABEL-
+ FORMATTED-CALL write_ide_register
+ LOGFORMAT-CALL write_ide_register[4E]
+INSTRUCTION-CALL
+ OPERAND1-write_ide_register
+ OP1 VALUE-4E
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-D9
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-put_data_request_allowed
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DA
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DA
+ LABEL-
+ FORMATTED-AND s5, FD
+ LOGFORMAT-AND s5, FD
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-FD
+ OP2 VALUE-FD
+ COMMENT-
+ ADDRESS-DB
+ LABEL-
+ FORMATTED-LOAD sF, DATA_TRANSFER_ALLOWED
+ LOGFORMAT-LOAD sF, DATA_TRANSFER_ALLOWED[04]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-DATA_TRANSFER_ALLOWED
+ OP2 VALUE-04
+ COMMENT-
+ ADDRESS-DC
+ LABEL-
+ FORMATTED-OR s5, sF
+ LOGFORMAT-OR s5, sF
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-DD
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-put_command_allowed
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-DE
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-; DRQ ALLOW -> MY STATUS REGISTER
+ ADDRESS-DE
+ LABEL-
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-;
+ ADDRESS-DE
+ LABEL-
+ FORMATTED-AND s5, FB
+ LOGFORMAT-AND s5, FB
+INSTRUCTION-AND
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-FB
+ OP2 VALUE-FB
+ COMMENT-
+ ADDRESS-DF
+ LABEL-
+ FORMATTED-LOAD sF, COMMAND_ALLOWED
+ LOGFORMAT-LOAD sF, COMMAND_ALLOWED[02]
+INSTRUCTION-LOAD
+ OPERAND1-sF
+ OP1 VALUE-sF
+ OPERAND2-COMMAND_ALLOWED
+ OP2 VALUE-02
+ COMMENT-
+ ADDRESS-E0
+ LABEL-
+ FORMATTED-OR s5, sF
+ LOGFORMAT-OR s5, sF
+INSTRUCTION-OR
+ OPERAND1-s5
+ OP1 VALUE-s5
+ OPERAND2-sF
+ OP2 VALUE-sF
+ COMMENT-
+ ADDRESS-E1
+ LABEL-
+ FORMATTED-RETURN
+ LOGFORMAT-RETURN
+INSTRUCTION-RETURN
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+ FORMATTED-ADDRESS FF
+ LOGFORMAT-ADDRESS FF
+INSTRUCTION-ADDRESS
+ OPERAND1-FF
+ OP1 VALUE-FF
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-interrupt
+ FORMATTED-
+ LOGFORMAT-
+INSTRUCTION-
+ OPERAND1-
+ OP1 VALUE-
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
+ ADDRESS-FF
+ LABEL-
+ FORMATTED-RETURNI ENABLE
+ LOGFORMAT-RETURNI ENABLE
+INSTRUCTION-RETURNI
+ OPERAND1-ENABLE
+ OP1 VALUE-ENABLE
+ OPERAND2-
+ OP2 VALUE-
+ COMMENT-
Index: compile/cfdebug.coe
===================================================================
--- compile/cfdebug.coe (nonexistent)
+++ compile/cfdebug.coe (revision 13)
@@ -0,0 +1,50 @@
+Component_Name=debug;
+Data_width=16;
+Depth=256;
+Radix=16;
+Default_Data=0000;
+Memory_Initialization_Vector=
+component_name=cfreader;
+width_a=16;
+depth_a=256;
+configuration_port_a=read_only;
+port_a_enable_pin=false;
+port_a_handshaking_pins=false;
+port_a_register_inputs=false;
+port_a_init_pin=false;
+port_a_init_value=0000;
+port_a_additional_output_pipe_stages = 0;
+port_a_register_inputs = false;
+port_a_active_clock_edge = Rising_Edge_Triggered;
+width_b=16;
+depth_b=256;
+configuration_port_b=read_and_write;
+write_mode_port_b=read_after_write;
+port_b_enable_pin=false;
+port_b_handshaking_pins=false;
+port_b_register_inputs=false;
+port_b_init_pin=false;
+port_b_init_value=0000;
+port_b_additional_output_pipe_stages = 0;
+port_b_register_inputs = false;
+port_b_active_clock_edge = Rising_Edge_Triggered;
+port_b_write_enable_polarity = Active_High;
+memory_initialization_radix=16;
+global_init_value=0000;
+memory_initialization_vector=
+0F00, EF07, 0F00, EF04, EF05, EF06, 0F00, EF00, EF01, 0F18, EF03, 0FFF, EF02, 0500, 0600, 0FFF,
+8347, 83CB, 0FFF, 8347, 0FFF, 8347, 0FFF, 8347, CFF1, CFF1, CFF1, CFF1, A302, CF30, 6F05, 912A,
+CF30, 6F15, 912F, CF30, 6F01, 9136, 0F00, EF07, EF06, 8118, A703, A804, 0F00, C5F1, 813E, A903,
+AA04, 0F00, C5F1, 813E, 83CB, 0500, 8396, CF50, 1F08, 9534, EB04, EC05, 0F02, EF07, 0F01, EF06,
+CFF1, CFF1, CFF1, CFF1, 0F00, EF06, 8118, C1F0, 0003, 6001, 9549, 6101, 9548, 8080, EF03, ED00,
+EE01, 0F01, EF07, 0F01, 8347, 0FFD, EF02, 0F02, 8347, 0FFF, EF02, 0F18, EF03, 0F01, 8347, 0F00,
+EF07, 0F02, 8347, 8080, EF03, 0F01, 8347, 0F00, EF07, 0FFE, EF02, 0F02, 8347, AB00, AC01, 0FFF,
+EF02, 0F18, EF03, 8080, 0D00, 0F11, 834E, 0D01, 0F12, 834E, CD70, 0F13, 834E, CD80, 0F14, 834E,
+CD90, 0F15, 834E, CFA0, 2FE0, CDF0, 0F16, 834E, 0D20, 0F17, 834E, 83B8, CF50, 1F08, 9480, 0F04,
+CF51, 918B, 0F01, C5F2, 06FF, 8080, 0F01, CF51, 93AC, CF50, 1F08, 9480, 83A5, C661, 91A1, 6601,
+8080, 06FF, 0FFE, C5F1, 8080, 0F10, 8364, 0F02, EF06, 8080, 83A5, 6601, 83B8, CF50, 1F04, 95AA,
+CF50, 1F08, 9480, CF50, 1F02, 06FF, 91AC, 8174, 0F17, 8364, 0F01, CFB1, 95C6, 0FC9, CFB1, 6F48,
+91DA, 0FC1, CFB1, 6F40, 91DE, 8080, 0F04, EF07, 83CB, 0508, 8080, 0D04, 0F0E, 834E, 0FFF, 8347,
+0FFF, 8347, 0FFF, 8347, 0FFF, 8347, 0D00, 0F0E, 834E, 8080, 15FD, 0F04, C5F2, 8080, 15FB, 0F02,
+C5F2, 8080, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000,
+0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 80F0;
Index: compile/CFREADER.DEC
===================================================================
--- compile/CFREADER.DEC (nonexistent)
+++ compile/CFREADER.DEC (revision 13)
@@ -0,0 +1,256 @@
+ 61440
+ 979056
+ 61440
+ 979008
+ 979024
+ 979040
+ 61440
+ 978944
+ 978960
+ 61824
+ 978992
+ 65520
+ 978976
+ 20480
+ 24576
+ 65520
+ 537712
+ 539824
+ 65520
+ 537712
+ 65520
+ 537712
+ 65520
+ 537712
+ 851728
+ 851728
+ 851728
+ 851728
+ 667680
+ 848640
+ 454736
+ 594592
+ 848640
+ 454992
+ 594672
+ 848640
+ 454672
+ 594784
+ 61440
+ 979056
+ 979040
+ 528768
+ 684080
+ 688192
+ 61440
+ 810768
+ 529376
+ 692272
+ 696384
+ 61440
+ 810768
+ 529376
+ 539824
+ 20480
+ 538976
+ 849152
+ 127104
+ 611136
+ 962624
+ 966736
+ 61472
+ 979056
+ 61456
+ 979040
+ 851728
+ 851728
+ 851728
+ 851728
+ 61440
+ 979040
+ 528768
+ 794368
+ 48
+ 393232
+ 611472
+ 397328
+ 611456
+ 526336
+ 978992
+ 970752
+ 974864
+ 61456
+ 979056
+ 61456
+ 537712
+ 65488
+ 978976
+ 61472
+ 537712
+ 65520
+ 978976
+ 61824
+ 978992
+ 61456
+ 537712
+ 61440
+ 979056
+ 61472
+ 537712
+ 526336
+ 978992
+ 61456
+ 537712
+ 61440
+ 979056
+ 65504
+ 978976
+ 61472
+ 537712
+ 700416
+ 704528
+ 65520
+ 978976
+ 61824
+ 978992
+ 526336
+ 53248
+ 61712
+ 537824
+ 53264
+ 61728
+ 537824
+ 841472
+ 61744
+ 537824
+ 841728
+ 61760
+ 537824
+ 841984
+ 61776
+ 537824
+ 850432
+ 196096
+ 843520
+ 61792
+ 537824
+ 53760
+ 61808
+ 537824
+ 539520
+ 849152
+ 127104
+ 608256
+ 61504
+ 849168
+ 596144
+ 61456
+ 810784
+ 28656
+ 526336
+ 61456
+ 849168
+ 604864
+ 849152
+ 127104
+ 608256
+ 539216
+ 812560
+ 596496
+ 417808
+ 526336
+ 28656
+ 65504
+ 810768
+ 526336
+ 61696
+ 538176
+ 61472
+ 979040
+ 526336
+ 539216
+ 417808
+ 539520
+ 849152
+ 127040
+ 613024
+ 849152
+ 127104
+ 608256
+ 849152
+ 127008
+ 28656
+ 596672
+ 530240
+ 61808
+ 538176
+ 61456
+ 850704
+ 613472
+ 64656
+ 850704
+ 455808
+ 597408
+ 64528
+ 850704
+ 455680
+ 597472
+ 526336
+ 61504
+ 979056
+ 539824
+ 20608
+ 526336
+ 53312
+ 61664
+ 537824
+ 65520
+ 537712
+ 65520
+ 537712
+ 65520
+ 537712
+ 65520
+ 537712
+ 53248
+ 61664
+ 537824
+ 526336
+ 90064
+ 61504
+ 810784
+ 526336
+ 90032
+ 61472
+ 810784
+ 526336
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 528128
Index: compile/CONSTANT.TXT
===================================================================
--- compile/CONSTANT.TXT (nonexistent)
+++ compile/CONSTANT.TXT (revision 13)
@@ -0,0 +1,49 @@
+Table of constant values and their specified constant labels.
+
+03 DELAY1
+EC IDENTIFY_COMMAND
+30 WRITE_SECTOR_COMMAND
+20 READ_SECTOR_COMMAND
+00 WRITE_SEC_FEATURE
+04 SOFT_RESET
+01 SECTOR_AVAILABLE
+02 COMMAND_ALLOWED
+04 DATA_TRANSFER_ALLOWED
+08 ERROR_MY_STATUS
+00 DATA_IDE_OUT_7_0
+01 DATA_IDE_OUT_15_8
+02 IDE_CONTROL_OUT
+FD NIOWR
+FE NIORD
+03 IDE_ADDRESS_OUT
+0E CONTROL
+10 DATA
+11 FEATURE
+12 SECTOR_COUNT
+13 LBA_7_0
+14 LBA_15_8
+15 LBA_23_16
+16 LD_LBA_27_24
+17 COMMAND
+18 CF_OFF
+0E A_STATUS
+17 STATUS
+04 DATA_WB_OUT_7_0
+05 DATA_WB_OUT_15_8
+06 CONTROL_WB_OUT
+01 ACK_CF_READER
+02 TAG0_WORD_AVAILABLE
+07 CONTROL_OUT
+01 IDE_BUS_WRITE_ENABLE
+02 WB_BUS_WRITE_ENABLE
+04 ERROR
+00 DATA_IDE_IN_7_0
+01 DATA_IDE_IN_15_8
+02 CONTROL_WB_IN
+05 WRITE_LBA_15_0
+15 WRITE_LBA_27_16
+01 STROBE_CF_READER_AND_RD
+02 TAG1_WORD_REQUEST
+04 W_WE
+03 DATA_WB_IN_7_0
+04 DATA_WB_IN_15_8
Index: compile/do.bat
===================================================================
--- compile/do.bat (nonexistent)
+++ compile/do.bat (revision 13)
@@ -0,0 +1,6 @@
+KCPSM cfreader.psm
+rem ngdbuild -p xc2s150-5-pq208 cfreader
+rem ngd2vhdl -w cfreader.ngd
+copy headdb.txt+cfreader.coe cfdebug.coe
+echo edit cfdebug.coe
+
compile/do.bat
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: cfreader.psm
===================================================================
--- cfreader.psm (nonexistent)
+++ cfreader.psm (revision 13)
@@ -0,0 +1,731 @@
+;--===========================================================================--
+;--
+;-- CF SECTOR READER
+;--
+;-- - SEPTEMBER 2002
+;-- - APERT - UPV / EHU. - BASQUE COUNTRY UNIVERSITY
+;-- - DISTRIBUTED UNDER GPL LICENSE
+;--
+;-- Design units : FAT FILE LOADER
+;--
+;-- File name : cfreader.psm
+;--
+;-- Purpose : READ RAW SECTORS FROM CF
+;--
+;-- Library : -
+;--
+;-- Languaje : ASSEMBLER FOR XILINX PICOBLAZE
+;--
+;-- Compiler : KCPSM ASSEMBLER V1.10
+;--
+;-- Debugger : PSM DEBUG V1.00
+;--===========================================================================--
+;-------------------------------------------------------------------------------
+;-- Revision list
+;-- Version Author Date Changes
+;--
+;-- 260902 Armando Astarloa 27 September 2002 -
+;-- 241002 Armando Astarloa 27 October 2002 Reset on error
+;-- 031202 Armando Astarloa 27 December 2002 Load LBA information from data bus
+;-- 120103 Armando Astarloa 12 January 2003 Quit status check when words reading
+;-- 290103 Armando Astarloa 29 January 2003 Reset function. Reset after error
+;-- 050503 Armando Astarloa 02 May 2003 Allow not all bytes of the sector read.
+;-- do_reset_and_retry state
+;-- 160503 Armando Astarloa 15 May 2003 Complete sector reading
+;-- 170603 Armando Astarloa 17 June 2003 Bug in words per sector read
+;-- 230603 Armando Astarloa 24 June 2003 Quit soft reset (KCPSM v.1002 has reset)
+;--
+;-------------------------------------------------------------------------------
+;-- Description : DUMMY CF SECTORS READ
+;-------------------------------------------------------------------------------
+
+;--
+;-- CONSTANT DEFINITIONS
+;--
+CONSTANT DELAY1,03
+; 50 MHZ DELAY1 => T(clk_i) => fastloop=DELAY1*T*2= 120ns sF=1 => delay= sF*fastloop
+; 50 MHZ DELAY1=03 => T=20NS => fastloop=3*20*2= 120ns sF=1 => delay= 120ns
+CONSTANT IDENTIFY_COMMAND,EC
+CONSTANT WRITE_SECTOR_COMMAND,30
+CONSTANT READ_SECTOR_COMMAND,20
+CONSTANT WRITE_SEC_FEATURE,00
+CONSTANT SOFT_RESET,04
+;--
+;-- RAM REGISTERS
+;--
+
+;
+; s0
+; s1
+; s2
+; s3 -> WISHBONE CONTROL
+; s4 -> REGISTERS STACK
+; s5 -> MY_STATUS
+; D3 = ERROR
+; D2 = DATA TRANSFER ALLOWED (0 NOT / 1 YES)
+; D1 = COMMAND ALLOWED (NOT BUSY) (0 NOT / 1 YES)
+; D0 = SECTOR AVAILABLE (0 NOT / 1 YES)
+ CONSTANT SECTOR_AVAILABLE,01
+ CONSTANT COMMAND_ALLOWED,02
+ CONSTANT DATA_TRANSFER_ALLOWED,04
+ CONSTANT ERROR_MY_STATUS,08
+; s6 -> WORDS_READ
+; s7 -> LBA_7_0
+; s8 -> LBA_15_8
+; s9 -> LBA_23_16
+; sA -> LD_LBA_27_24
+; sB -> data[7:0] in ide
+; sC -> data[15:8] in ide
+; sD -> data[7:0] out ide
+; sE -> data[15:8] out ide
+; sF -> acummulator
+;
+
+;--
+;-- OUTPUT PORTS
+;--
+
+ ;--
+ ;-- IDE INTERFACE PORTS - OUTPUTS
+ ;--
+ CONSTANT DATA_IDE_OUT_7_0,00
+ CONSTANT DATA_IDE_OUT_15_8,01
+ CONSTANT IDE_CONTROL_OUT,02
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 =
+ ; D1 = NIOWR
+ ; D0 = NIORD
+ CONSTANT NIOWR,FD
+ CONSTANT NIORD,FE
+
+ CONSTANT IDE_ADDRESS_OUT,03
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 = NCE1
+ ; D3 = NCE0
+ ; D2 = A2
+ ; D1 = A1
+ ; D0 = A0
+ ;
+ ; WRITE IDE REGISTERS
+ ;
+ ; NCE1/NCE0/ A2/ A1/ A0
+ CONSTANT CONTROL,0E ; 000 0 1 1 1 0
+ CONSTANT DATA,10 ; 000 1 0 0 0 0
+ CONSTANT FEATURE,11 ; 000 1 0 0 0 1
+ CONSTANT SECTOR_COUNT,12; 000 1 0 0 1 0
+ CONSTANT LBA_7_0,13 ; 000 1 0 0 1 1
+ CONSTANT LBA_15_8,14 ; 000 1 0 1 0 0
+ CONSTANT LBA_23_16,15 ; 000 1 0 1 0 1
+ CONSTANT LD_LBA_27_24,16; 000 1 0 1 1 0
+ CONSTANT COMMAND,17 ; 000 1 0 1 1 1
+ CONSTANT CF_OFF,18 ; 000 1 1 0 0 0
+ ;
+ ; READ IDE REGISTERS
+ ; NCE1/NCE0/ A2/ A1/ A0
+ CONSTANT A_STATUS,0E ; 000 0 1 1 1 0
+ CONSTANT STATUS,17 ; 000 1 0 1 1 1
+
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - OUTPUTS
+ ;--
+ CONSTANT DATA_WB_OUT_7_0,04
+ CONSTANT DATA_WB_OUT_15_8,05
+ CONSTANT CONTROL_WB_OUT,06
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 =
+ ; D1 = TAG0_WORD_AVAILABLE
+ ; D0 = ACK_CF_READER
+ CONSTANT ACK_CF_READER,01
+ CONSTANT TAG0_WORD_AVAILABLE,02
+ ;--
+ ;-- BUS CONTROL SIGNALS
+ ;--
+ CONSTANT CONTROL_OUT,07
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 =
+ ; D3 =
+ ; D2 = ERROR
+ ; D1 = WB_BUS_WRITE_ENABLE
+ ; D0 = IDE_BUS_WRITE_ENABLE
+ CONSTANT IDE_BUS_WRITE_ENABLE,01
+ CONSTANT WB_BUS_WRITE_ENABLE,02
+ CONSTANT ERROR,04
+
+;--
+;-- INPUT PORTS
+;--
+
+ ;--
+ ;-- IDE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT DATA_IDE_IN_7_0,00
+ CONSTANT DATA_IDE_IN_15_8,01
+
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT CONTROL_WB_IN,02
+ ; D7 =
+ ; D6 =
+ ; D5 =
+ ; D4 = WB_A0
+ ; D3 = -
+ ; D2 = W_WE
+ ; D1 = TAG1_WORD_REQUEST
+ ; D0 = STROBE_CF_READER
+ ;
+ ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 0
+ CONSTANT WRITE_LBA_15_0,05
+ ; STROBE_CF_READER = 1 & W_WE=1 & WB_A0 = 1
+ CONSTANT WRITE_LBA_27_16,15
+ CONSTANT STROBE_CF_READER_AND_RD,01
+ CONSTANT TAG1_WORD_REQUEST,02
+ CONSTANT W_WE,04
+
+
+ ;--
+ ;-- WISHBONE INTERFACE PORTS - INPUTS
+ ;--
+ CONSTANT DATA_WB_IN_7_0,03
+ CONSTANT DATA_WB_IN_15_8,04
+
+;--
+;-- REGISTERS INITIALIZATION
+;--
+initialization:
+ ;
+ ; BUS CONTROL : WRITE NOT ENABLE
+ ;
+ LOAD sF,00
+ OUTPUT sF,CONTROL_OUT
+ ;
+ ; WISHBONE BUS INITIALIZATION
+ ;
+ LOAD sF,00
+ OUTPUT sF,DATA_WB_OUT_7_0
+ OUTPUT sF,DATA_WB_OUT_15_8
+ OUTPUT sF,CONTROL_WB_OUT
+ ;
+ ; IDE BUS INITIALIZATION
+ ;
+ LOAD sF,00
+ OUTPUT sF,DATA_IDE_OUT_7_0
+ OUTPUT sF,DATA_IDE_OUT_15_8
+ LOAD sF,18
+ OUTPUT sF,IDE_ADDRESS_OUT
+ LOAD sF,FF
+ OUTPUT sF,IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 210NS*31 (RESET DELAY)
+ ;
+ LOAD s5,00
+ LOAD s6,00
+ LOAD sF,FF
+ CALL wait_loop
+ CALL soft_reset
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sF,FF
+ CALL wait_loop
+
+main:
+ ;
+ ; CHECK WISHBONE BUS
+ ;
+ ; wait state for stb_i deassertion
+ ;LOAD sF,01
+ ;CALL wait_loop
+ AND sF,sF
+ AND sF,sF
+ AND sF,sF
+ AND sF,sF
+ INPUT s3,CONTROL_WB_IN
+ ;
+ ; CHECK STROBE & READ
+ ;
+ LOAD sF,s3
+ SUB sF,WRITE_LBA_15_0
+ JUMP Z,store_lba_15_0
+ LOAD sF,s3
+ SUB sF,WRITE_LBA_27_16
+ JUMP Z,store_lba_27_16
+ LOAD sF,s3
+ SUB sF,STROBE_CF_READER_AND_RD
+ JUMP Z,put_data_in_wb_bus
+ ;
+ ; IF NOT READ REQUEST MAINTAIN SIGNAL
+ ;
+ LOAD sF,00
+ OUTPUT sF,CONTROL_OUT
+ OUTPUT sF,CONTROL_WB_OUT
+ JUMP main
+
+store_lba_15_0:
+ ; DATA_WB_IN_7_0 -> s7 LBA_7_0
+ INPUT s7,DATA_WB_IN_7_0
+ ; DATA_WB_IN_15_8 -> s8 LBA_15_8
+ INPUT s8,DATA_WB_IN_15_8
+ ; SECTOR AVAILABLE / COMMAND AVAILABLE -> 0
+ LOAD sF,00
+ AND s5,sF
+ JUMP wishbone_ack
+
+store_lba_27_16:
+ ; DATA_WB_IN_7_0 -> s9 LBA_23_16
+ INPUT s9,DATA_WB_IN_7_0
+ ; DATA_WB_IN_15_8 -> s10 LD_LBA_27_24
+ INPUT sA,DATA_WB_IN_15_8
+ ; SECTOR AVAILABLE -> 0
+ ; antes 020503 LOAD sF,FE
+ LOAD sF,00
+ AND s5,sF
+
+ JUMP wishbone_ack
+do_reset_and_retry:
+ CALL soft_reset
+ LOAD s5,00
+put_data_in_wb_bus:
+ CALL read_word_from_cf
+ ; check for error
+ LOAD sF,s5
+ AND sF,ERROR_MY_STATUS
+ JUMP NZ,do_reset_and_retry
+ OUTPUT sB,DATA_WB_OUT_7_0
+ OUTPUT sC,DATA_WB_OUT_15_8
+ ;
+ ; ENABLE WB ENABLE
+ ;
+ LOAD sF,WB_BUS_WRITE_ENABLE
+ OUTPUT sF,CONTROL_OUT
+wishbone_ack:
+ ;
+ ; WISHBONE ACK
+ ;
+ LOAD sF,ACK_CF_READER
+ OUTPUT sF,CONTROL_WB_OUT
+ ; null - wait state
+ ;
+ AND sF,sF
+ AND sF,sF
+ AND sF,sF
+ AND sF,sF
+ ; WISHBONE MASTER MUST CHECK ACK SIGNAL
+ ; IN THE RISING EDGE OF THE CLOCK AND DEASSERT
+ ; STROBE SIGNAL. SLAVE AUTOMATICALLY DEASSERT ACK
+ ;
+ LOAD sF,00
+ OUTPUT sF,CONTROL_WB_OUT
+ ;OUTPUT sF,CONTROL_OUT
+
+ JUMP main
+
+wait_loop:
+ ;
+ ; SOFTWARE DELAY LOOP
+ ; TAKES SLOW LOOP VALUE FROM sF
+ ;
+ ; TWO CYCLES PER INSTRUCTION
+ ;
+ ; SLOW LOOP 3 INSTRUCTIONS * sF
+ ; FAST LOOP 2 INSTRUCTIONS * DELAY1
+ ; 50 MHZ DELAY1=0A => T=20NS => fl=3*20*2= 120ns sF=1 => delay= 120ns
+ LOAD s1,sF
+ slow_loop:
+ LOAD s0,DELAY1
+ fast_loop:
+ SUB s0,01
+ JUMP NZ,fast_loop
+ SUB s1,01
+ JUMP NZ,slow_loop
+ RETURN
+
+write_ide_register:
+ ;
+ ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ;
+ OUTPUT sF,IDE_ADDRESS_OUT
+ ;
+ ; DATA OUT IDE
+ ;
+ OUTPUT sD,DATA_IDE_OUT_7_0
+ OUTPUT sE,DATA_IDE_OUT_15_8
+ ;
+ ; DATA OUT BUS ENABLE
+ ;
+ LOAD sF,IDE_BUS_WRITE_ENABLE
+ OUTPUT sF,CONTROL_OUT
+ ;
+ ; WAIT FOR 70 NS (MIN)
+ ; (120ns/50Mhz)
+ LOAD sF,01
+ CALL wait_loop
+ ;
+ ; WRITE STROBE ON
+ ;
+ LOAD sF,NIOWR
+ OUTPUT sF,IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 165NS (MIN)
+ ; (240ns/50Mhz)
+ ; 020503
+ LOAD sF,02
+ CALL wait_loop
+ ;
+ ; WRITE STROBE OFF
+ ;
+ LOAD sF,FF
+ OUTPUT sF,IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ; (410ns/50Mhz)
+ ; 020503
+ ;LOAD sF,01
+ ;CALL wait_loop
+ ;
+ ; CE AND ADRESSES OFF
+ ;
+ LOAD sF,CF_OFF
+ OUTPUT sF,IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 30NS (MIN) (if delay of the two previos inst>30ns this is not necessary)
+ ; (put again 020503)
+ LOAD sF,01
+ CALL wait_loop
+ ;
+ ; DATA OUT BUS DISABLE
+ ;
+ LOAD sF,00
+ OUTPUT sF,CONTROL_OUT
+ ;
+ ; (put again 020503)
+ LOAD sF,02
+ CALL wait_loop
+ RETURN
+
+read_ide_register:
+ ;
+ ; TAKE ADDRESS FROM SF REGISTER AND IT'S PUT INTO THE PORT
+ ;
+ OUTPUT sF,IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 70 NS (MIN)
+ ;
+ LOAD sF,01
+ CALL wait_loop
+ ;
+ ; READ STROBE ON
+ ; reset control_out (140503)
+ LOAD sF,00
+ OUTPUT sF,CONTROL_OUT
+ LOAD sF,NIORD
+ OUTPUT sF,IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 165NS (MIN)
+ ;
+ LOAD sF,02
+ CALL wait_loop
+ ;
+ ; TAKE DE DATA FROM IDE BUS
+ ;
+ INPUT sB,DATA_IDE_IN_7_0
+ INPUT sC,DATA_IDE_IN_15_8
+ ;
+ ; READ STROBE OFF
+ ;
+ LOAD sF,FF
+ OUTPUT sF,IDE_CONTROL_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ;
+ ;LOAD sF,01
+ ;CALL wait_loop
+ ;
+ ; CE AND ADRESSES OFF
+ ;
+ LOAD sF,CF_OFF
+ OUTPUT sF,IDE_ADDRESS_OUT
+ ;
+ ; WAIT FOR 20NS (MIN)
+ ; (120ns/50mhz)
+ ;LOAD sF,01
+ ;CALL wait_loop
+ RETURN
+
+
+read_sector:
+ ;
+ ; WRITE ATA COMMANDS TO THE CF
+ ;
+ ;
+ ; IDE FEATURE REGISTER
+ ;
+ LOAD sD,WRITE_SEC_FEATURE
+ LOAD sF,FEATURE
+ CALL write_ide_register
+ ;
+ ; IDE SECTOR COUNT REGISTER
+ ;
+ LOAD sD,01
+ LOAD sF,SECTOR_COUNT
+ CALL write_ide_register
+ ;
+ ; IDE LBA_7_0
+ ;
+ LOAD sD,s7
+ LOAD sF,LBA_7_0
+ CALL write_ide_register
+ ;
+ ; IDE LBA_15_8
+ ;
+ LOAD sD,s8
+ LOAD sF,LBA_15_8
+ CALL write_ide_register
+ ;
+ ; IDE LBA_23_16
+ ;
+ LOAD sD,s9
+ LOAD sF,LBA_23_16
+ CALL write_ide_register
+
+ ;
+ ; IDE LD_LBA_27_24
+ ;
+ ; LBA_27_42 OR WITH 1110
+ ; BIT7 : 1
+ ; BIT6 : LBA=1
+ ; BIT5 : 1
+ ; BIT4 : DRV=0
+ ;
+ ;
+ LOAD sF,sA
+ OR sF,E0
+ LOAD sD,sF
+ LOAD sF,LD_LBA_27_24
+ CALL write_ide_register
+ ;
+ ; IDE READ SECTOR COMMAND
+ ;
+ LOAD sD,READ_SECTOR_COMMAND
+ LOAD sF,COMMAND
+ CALL write_ide_register
+ ;
+ ; PUT SECTOR ALLOWED FLAG INTO MY_STATUS
+ ;
+ ; 290103 Added data available check
+ retry_status_check:
+ CALL cf_status_check
+ LOAD sF,s5
+ AND sF,ERROR_MY_STATUS
+ RETURN NZ
+ LOAD sF,DATA_TRANSFER_ALLOWED
+ AND sF,s5
+ ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ JUMP Z,retry_status_check
+ LOAD sF,SECTOR_AVAILABLE
+ OR s5,sF
+ ;
+ ; RESET WORDS READ REGISTER
+ ;
+ LOAD s6,FF
+ RETURN
+
+read_word_from_cf:
+ ;
+ ; CHECK IF THE SECTOR IS AVAILABLE
+ ;
+ LOAD sF,SECTOR_AVAILABLE
+ AND sF,s5
+ ;
+ ; IF SECTOR_AVAILABLE=0 JUMP TO READ_NEW_SECTOR
+ ;
+ CALL Z,read_new_sector
+ ; check for error
+ LOAD sF,s5
+ AND sF,ERROR_MY_STATUS
+ RETURN NZ
+ ;retry_status_check:
+ ;CALL cf_status_check
+ ;
+ ; CHECK IF DATA IS AVAILABLE
+ ;
+ ; 120103 - changed . When there is sector
+ ; available in the cf ram buffer it is not
+ ; necessary to check neither bsy or drq
+ ; only read words with the correct timing paramenters
+ ;
+ ;LOAD sF,DATA_TRANSFER_ALLOWED
+ ;AND sF,s5
+ ; LOOPS UNTIL SECTOR DATA IS AVAILABLE
+ ;JUMP Z,retry_status_check
+ ; end 120103
+ ;
+ ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ;
+ CALL read_word
+ AND s6,s6
+ JUMP Z,reset_word_READ
+ ;
+ ; DECREMENT NUMBER OF WORDS READ
+ ;
+ SUB s6,01
+ RETURN
+
+reset_word_READ:
+ ;
+ ; IF 256 WORD READ -> SECTOR AVAILABLE=0
+ ;
+ ;ADD s7,01
+ LOAD s6,FF
+ LOAD sF,FE
+ AND s5,sF
+ RETURN
+
+
+read_word:
+ ;
+ ; READ WORDS FROM IDE DATA REGISTERS
+ ;
+ LOAD sF,DATA
+ CALL read_ide_register
+ ;
+ ; DATA ARE IN sB , sC
+ ;
+ ; DATA AVAILABLE SIGNAL IS STORED
+ LOAD sF,TAG0_WORD_AVAILABLE
+ OUTPUT sF,CONTROL_WB_OUT
+ RETURN
+dummy_word_read:
+ CALL read_word
+ SUB s6,01
+read_new_sector:
+ CALL cf_status_check
+ LOAD sF,s5
+ AND sF,DATA_TRANSFER_ALLOWED
+ ;loops until previous non READ words are READ
+ JUMP NZ,dummy_word_read
+ LOAD sF,s5
+ AND sF,ERROR_MY_STATUS
+ RETURN NZ
+ LOAD sF,s5
+ AND sF,COMMAND_ALLOWED
+ ; loops until commands are allowed
+ LOAD s6,FF
+ JUMP Z,read_new_sector
+ JUMP read_sector
+
+cf_status_check:
+ ;
+ ; CF STATUS REGISTER READ
+ ;
+ LOAD sF,STATUS
+ CALL read_ide_register
+ ;
+ ; ERROR
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 0 0 0 0 0 0 0 1
+ ; ERR-ST X X X X X X X 1
+ ; AND 0 0 0 0 0 0 0 1
+ LOAD sF,01
+ AND sF,sB
+ JUMP NZ,put_error_code
+
+ ;
+ ; DATA REQUEST MASK (READY=1 : BUSY=0 : DRQ=1)
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 1 1 0 0 1 0 0 1
+ ; DRQ-ST 0 1 X X 1 X X 0
+ ; AND 0 1 0 0 1 0 0 0
+ LOAD sF,C9
+ AND sF,sB
+ SUB sF,48
+ JUMP Z,put_data_request_allowed
+
+ ;
+ ; COMMAND ALLOWED MASK (READY=1 : BUSY=0)
+ ;
+ ; BSY/DRDY/DWF/DSC/DRQ/CORR/0/ERR
+ ; MASK 1 1 0 0 0 0 0 1
+ ; CMD-ST 0 1 X X 0 X X 0
+ ; AND 0 1 0 0 0 0 0 0
+ LOAD sF,C1
+ AND sF,sB
+ SUB sF,40
+ JUMP Z,put_command_allowed
+
+ ;
+ ; ELSE DATA_TRANSFER_ALLOWED & COMMAND_ALLOWED => 0
+ ;
+ ;JUMP put_error_code
+ ; REVISAR ???
+ ;AND s5,01
+ RETURN
+
+
+put_error_code:
+ ;
+ ; ERROR SIGNAL
+ ;
+ ; PUT ERROR CODE
+ ;
+ LOAD sF,04
+ OUTPUT sF,CONTROL_OUT
+ CALL soft_reset
+ LOAD s5,ERROR_MY_STATUS
+ RETURN
+ ;JUMP initialization (STACK OVERFLOW???)
+
+soft_reset:
+ LOAD sD,SOFT_RESET
+ LOAD sF,CONTROL
+ CALL write_ide_register
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sF,FF
+ CALL wait_loop
+ LOAD sD,00
+ LOAD sF,CONTROL
+ CALL write_ide_register
+ RETURN
+
+put_data_request_allowed:
+ ;
+ ; DRQ ALLOW -> MY STATUS REGISTER
+ ;
+ AND s5,FD
+ LOAD sF,DATA_TRANSFER_ALLOWED
+ OR s5,sF
+ RETURN
+
+put_command_allowed:
+ ;
+ ; DRQ ALLOW -> MY STATUS REGISTER
+ ;
+ AND s5,FB
+ LOAD sF,COMMAND_ALLOWED
+ OR s5,sF
+ RETURN
+
+ ADDRESS FF
+
+interrupt:
+ RETURNI ENABLE