📄 sim710.scr
字号:
/* * sim710.scr - Copyright (C) 1999 Richard Hirst *//* Offsets from DSA, allow 128 elements of scatter/gather */ABSOLUTE dsa_select = 0ABSOLUTE dsa_msgout = 8ABSOLUTE dsa_cmnd = 16ABSOLUTE dsa_status = 24ABSOLUTE dsa_msgin = 32ABSOLUTE dsa_datain = 40 /* 8 * 128 = 1024 bytes */ABSOLUTE dsa_dataout = 1064 /* 8 * 128 = 1024 bytes */ABSOLUTE dsa_size = 2088ABSOLUTE reselected_identify = 0ABSOLUTE msgin_buf = 0/* Interrupt values passed back to driver */ABSOLUTE int_bad_extmsg1a = 0xab930000ABSOLUTE int_bad_extmsg1b = 0xab930001ABSOLUTE int_bad_extmsg2a = 0xab930002ABSOLUTE int_bad_extmsg2b = 0xab930003ABSOLUTE int_bad_extmsg3a = 0xab930004ABSOLUTE int_bad_extmsg3b = 0xab930005ABSOLUTE int_bad_msg1 = 0xab930006ABSOLUTE int_bad_msg2 = 0xab930007ABSOLUTE int_bad_msg3 = 0xab930008ABSOLUTE int_cmd_bad_phase = 0xab930009ABSOLUTE int_cmd_complete = 0xab93000aABSOLUTE int_data_bad_phase = 0xab93000bABSOLUTE int_msg_sdtr1 = 0xab93000cABSOLUTE int_msg_sdtr2 = 0xab93000dABSOLUTE int_msg_sdtr3 = 0xab93000eABSOLUTE int_no_msgout1 = 0xab93000fABSOLUTE int_no_msgout2 = 0xab930010ABSOLUTE int_no_msgout3 = 0xab930011ABSOLUTE int_not_cmd_complete = 0xab930012ABSOLUTE int_sel_no_ident = 0xab930013ABSOLUTE int_sel_not_cmd = 0xab930014ABSOLUTE int_status_not_msgin = 0xab930015ABSOLUTE int_resel_not_msgin = 0xab930016ABSOLUTE int_reselected = 0xab930017ABSOLUTE int_selected = 0xab930018ABSOLUTE int_disc1 = 0xab930019ABSOLUTE int_disc2 = 0xab93001aABSOLUTE int_disc3 = 0xab93001bABSOLUTE int_not_rej = 0xab93001c/* Bit field settings used to record status in SCRATCH */ABSOLUTE had_select = 0x01ABSOLUTE had_msgout = 0x02ABSOLUTE had_cmdout = 0x04ABSOLUTE had_datain = 0x08ABSOLUTE had_dataout = 0x10ABSOLUTE had_status = 0x20ABSOLUTE had_msgin = 0x40ABSOLUTE had_extmsg = 0x80/* These scripts are heavily based on the examples in the NCR 53C710 * Programmer's Guide (Preliminary). */ENTRY do_selectdo_select: CLEAR TARGET MOVE SCRATCH0 & 0 TO SCRATCH0 ; Enable selection timer MOVE CTEST7 & 0xef TO CTEST7 SELECT ATN FROM dsa_select, reselect JUMP get_status, WHEN STATUS ; Disable selection timer MOVE CTEST7 | 0x10 TO CTEST7 MOVE SCRATCH0 | had_select TO SCRATCH0 INT int_sel_no_ident, IF NOT MSG_OUT MOVE SCRATCH0 | had_msgout TO SCRATCH0 MOVE FROM dsa_msgout, when MSG_OUTENTRY done_identdone_ident: JUMP get_status, IF STATUSredo_msgin1: JUMP get_msgin1, WHEN MSG_IN INT int_sel_not_cmd, IF NOT CMDENTRY resume_cmdresume_cmd: MOVE SCRATCH0 | had_cmdout TO SCRATCH0 MOVE FROM dsa_cmnd, WHEN CMDENTRY resume_pmmresume_pmm:redo_msgin2: JUMP get_msgin2, WHEN MSG_IN JUMP get_status, IF STATUS JUMP input_data, IF DATA_IN JUMP output_data, IF DATA_OUT INT int_cmd_bad_phaseget_status: ; Disable selection timer MOVE CTEST7 | 0x10 TO CTEST7 MOVE FROM dsa_status, WHEN STATUS INT int_status_not_msgin, WHEN NOT MSG_IN MOVE FROM dsa_msgin, WHEN MSG_IN INT int_not_cmd_complete, IF NOT 0x00 CLEAR ACKENTRY wait_disc_completewait_disc_complete: WAIT DISCONNECT INT int_cmd_completeinput_data: MOVE SCRATCH0 | had_datain TO SCRATCH0ENTRY patch_input_datapatch_input_data: JUMP 0 MOVE FROM dsa_datain+0x0000, WHEN DATA_IN MOVE FROM dsa_datain+0x0008, WHEN DATA_IN MOVE FROM dsa_datain+0x0010, WHEN DATA_IN MOVE FROM dsa_datain+0x0018, WHEN DATA_IN MOVE FROM dsa_datain+0x0020, WHEN DATA_IN MOVE FROM dsa_datain+0x0028, WHEN DATA_IN MOVE FROM dsa_datain+0x0030, WHEN DATA_IN MOVE FROM dsa_datain+0x0038, WHEN DATA_IN MOVE FROM dsa_datain+0x0040, WHEN DATA_IN MOVE FROM dsa_datain+0x0048, WHEN DATA_IN MOVE FROM dsa_datain+0x0050, WHEN DATA_IN MOVE FROM dsa_datain+0x0058, WHEN DATA_IN MOVE FROM dsa_datain+0x0060, WHEN DATA_IN MOVE FROM dsa_datain+0x0068, WHEN DATA_IN MOVE FROM dsa_datain+0x0070, WHEN DATA_IN MOVE FROM dsa_datain+0x0078, WHEN DATA_IN MOVE FROM dsa_datain+0x0080, WHEN DATA_IN MOVE FROM dsa_datain+0x0088, WHEN DATA_IN MOVE FROM dsa_datain+0x0090, WHEN DATA_IN MOVE FROM dsa_datain+0x0098, WHEN DATA_IN MOVE FROM dsa_datain+0x00a0, WHEN DATA_IN MOVE FROM dsa_datain+0x00a8, WHEN DATA_IN MOVE FROM dsa_datain+0x00b0, WHEN DATA_IN MOVE FROM dsa_datain+0x00b8, WHEN DATA_IN MOVE FROM dsa_datain+0x00c0, WHEN DATA_IN MOVE FROM dsa_datain+0x00c8, WHEN DATA_IN MOVE FROM dsa_datain+0x00d0, WHEN DATA_IN MOVE FROM dsa_datain+0x00d8, WHEN DATA_IN MOVE FROM dsa_datain+0x00e0, WHEN DATA_IN MOVE FROM dsa_datain+0x00e8, WHEN DATA_IN MOVE FROM dsa_datain+0x00f0, WHEN DATA_IN MOVE FROM dsa_datain+0x00f8, WHEN DATA_IN MOVE FROM dsa_datain+0x0100, WHEN DATA_IN MOVE FROM dsa_datain+0x0108, WHEN DATA_IN MOVE FROM dsa_datain+0x0110, WHEN DATA_IN MOVE FROM dsa_datain+0x0118, WHEN DATA_IN MOVE FROM dsa_datain+0x0120, WHEN DATA_IN MOVE FROM dsa_datain+0x0128, WHEN DATA_IN MOVE FROM dsa_datain+0x0130, WHEN DATA_IN MOVE FROM dsa_datain+0x0138, WHEN DATA_IN MOVE FROM dsa_datain+0x0140, WHEN DATA_IN MOVE FROM dsa_datain+0x0148, WHEN DATA_IN MOVE FROM dsa_datain+0x0150, WHEN DATA_IN MOVE FROM dsa_datain+0x0158, WHEN DATA_IN MOVE FROM dsa_datain+0x0160, WHEN DATA_IN MOVE FROM dsa_datain+0x0168, WHEN DATA_IN MOVE FROM dsa_datain+0x0170, WHEN DATA_IN MOVE FROM dsa_datain+0x0178, WHEN DATA_IN MOVE FROM dsa_datain+0x0180, WHEN DATA_IN MOVE FROM dsa_datain+0x0188, WHEN DATA_IN MOVE FROM dsa_datain+0x0190, WHEN DATA_IN MOVE FROM dsa_datain+0x0198, WHEN DATA_IN MOVE FROM dsa_datain+0x01a0, WHEN DATA_IN MOVE FROM dsa_datain+0x01a8, WHEN DATA_IN MOVE FROM dsa_datain+0x01b0, WHEN DATA_IN MOVE FROM dsa_datain+0x01b8, WHEN DATA_IN MOVE FROM dsa_datain+0x01c0, WHEN DATA_IN MOVE FROM dsa_datain+0x01c8, WHEN DATA_IN MOVE FROM dsa_datain+0x01d0, WHEN DATA_IN MOVE FROM dsa_datain+0x01d8, WHEN DATA_IN MOVE FROM dsa_datain+0x01e0, WHEN DATA_IN MOVE FROM dsa_datain+0x01e8, WHEN DATA_IN MOVE FROM dsa_datain+0x01f0, WHEN DATA_IN MOVE FROM dsa_datain+0x01f8, WHEN DATA_IN MOVE FROM dsa_datain+0x0200, WHEN DATA_IN MOVE FROM dsa_datain+0x0208, WHEN DATA_IN MOVE FROM dsa_datain+0x0210, WHEN DATA_IN MOVE FROM dsa_datain+0x0218, WHEN DATA_IN MOVE FROM dsa_datain+0x0220, WHEN DATA_IN MOVE FROM dsa_datain+0x0228, WHEN DATA_IN MOVE FROM dsa_datain+0x0230, WHEN DATA_IN MOVE FROM dsa_datain+0x0238, WHEN DATA_IN MOVE FROM dsa_datain+0x0240, WHEN DATA_IN MOVE FROM dsa_datain+0x0248, WHEN DATA_IN MOVE FROM dsa_datain+0x0250, WHEN DATA_IN MOVE FROM dsa_datain+0x0258, WHEN DATA_IN MOVE FROM dsa_datain+0x0260, WHEN DATA_IN MOVE FROM dsa_datain+0x0268, WHEN DATA_IN MOVE FROM dsa_datain+0x0270, WHEN DATA_IN MOVE FROM dsa_datain+0x0278, WHEN DATA_IN MOVE FROM dsa_datain+0x0280, WHEN DATA_IN MOVE FROM dsa_datain+0x0288, WHEN DATA_IN MOVE FROM dsa_datain+0x0290, WHEN DATA_IN MOVE FROM dsa_datain+0x0298, WHEN DATA_IN MOVE FROM dsa_datain+0x02a0, WHEN DATA_IN MOVE FROM dsa_datain+0x02a8, WHEN DATA_IN MOVE FROM dsa_datain+0x02b0, WHEN DATA_IN MOVE FROM dsa_datain+0x02b8, WHEN DATA_IN MOVE FROM dsa_datain+0x02c0, WHEN DATA_IN MOVE FROM dsa_datain+0x02c8, WHEN DATA_IN MOVE FROM dsa_datain+0x02d0, WHEN DATA_IN MOVE FROM dsa_datain+0x02d8, WHEN DATA_IN MOVE FROM dsa_datain+0x02e0, WHEN DATA_IN MOVE FROM dsa_datain+0x02e8, WHEN DATA_IN MOVE FROM dsa_datain+0x02f0, WHEN DATA_IN MOVE FROM dsa_datain+0x02f8, WHEN DATA_IN MOVE FROM dsa_datain+0x0300, WHEN DATA_IN MOVE FROM dsa_datain+0x0308, WHEN DATA_IN MOVE FROM dsa_datain+0x0310, WHEN DATA_IN MOVE FROM dsa_datain+0x0318, WHEN DATA_IN MOVE FROM dsa_datain+0x0320, WHEN DATA_IN MOVE FROM dsa_datain+0x0328, WHEN DATA_IN MOVE FROM dsa_datain+0x0330, WHEN DATA_IN MOVE FROM dsa_datain+0x0338, WHEN DATA_IN MOVE FROM dsa_datain+0x0340, WHEN DATA_IN MOVE FROM dsa_datain+0x0348, WHEN DATA_IN MOVE FROM dsa_datain+0x0350, WHEN DATA_IN MOVE FROM dsa_datain+0x0358, WHEN DATA_IN MOVE FROM dsa_datain+0x0360, WHEN DATA_IN MOVE FROM dsa_datain+0x0368, WHEN DATA_IN MOVE FROM dsa_datain+0x0370, WHEN DATA_IN MOVE FROM dsa_datain+0x0378, WHEN DATA_IN MOVE FROM dsa_datain+0x0380, WHEN DATA_IN MOVE FROM dsa_datain+0x0388, WHEN DATA_IN MOVE FROM dsa_datain+0x0390, WHEN DATA_IN MOVE FROM dsa_datain+0x0398, WHEN DATA_IN MOVE FROM dsa_datain+0x03a0, WHEN DATA_IN MOVE FROM dsa_datain+0x03a8, WHEN DATA_IN MOVE FROM dsa_datain+0x03b0, WHEN DATA_IN MOVE FROM dsa_datain+0x03b8, WHEN DATA_IN MOVE FROM dsa_datain+0x03c0, WHEN DATA_IN MOVE FROM dsa_datain+0x03c8, WHEN DATA_IN MOVE FROM dsa_datain+0x03d0, WHEN DATA_IN MOVE FROM dsa_datain+0x03d8, WHEN DATA_IN MOVE FROM dsa_datain+0x03e0, WHEN DATA_IN MOVE FROM dsa_datain+0x03e8, WHEN DATA_IN MOVE FROM dsa_datain+0x03f0, WHEN DATA_IN MOVE FROM dsa_datain+0x03f8, WHEN DATA_IN JUMP end_data_transoutput_data: MOVE SCRATCH0 | had_dataout TO SCRATCH0ENTRY patch_output_datapatch_output_data: JUMP 0 MOVE FROM dsa_dataout+0x0000, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0008, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0010, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0018, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0020, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0028, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0030, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0038, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0040, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0048, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0050, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0058, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0060, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0068, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0070, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0078, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0080, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0088, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0090, WHEN DATA_OUT MOVE FROM dsa_dataout+0x0098, WHEN DATA_OUT MOVE FROM dsa_dataout+0x00a0, WHEN DATA_OUT MOVE FROM dsa_dataout+0x00a8, WHEN DATA_OUT MOVE FROM dsa_dataout+0x00b0, WHEN DATA_OUT MOVE FROM dsa_dataout+0x00b8, WHEN DATA_OUT MOVE FROM dsa_dataout+0x00c0, WHEN DATA_OUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -