OpenCores
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;=1OEI16: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?::k5>i5?3:1<75`4683>5<5;n;:>5<722wi;<4;:182>5<7sA8=7)m=:6g8 7d=;j1/n;478:m: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'f350;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:30(o85899l==<72900q~7m:083>7}Y1k16:44>8:&1f?d53ty<<7?50;0xZ26<5?31>6*=b;cb?xu3i3;1<7o46f: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:>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

powered by: WebSVN 2.1.0

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