📄 sio.asm
字号:
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(739)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 742
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_send_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
MOV.W @(+14,ER6),R1
CMP.W R0,R1
BHI ?00044:8
MOV.W @(+14,ER6),R0
OR.W R0,R0
BNE ?00043:8
?00044:
??BEGINBLOCK(743)
??CLINE 744
XOR.W R0,R0
JMP @_rs_putn_end
??ENDBLOCK(745)
?00043:
??CLINE 747
XOR.W R0,R0
MOV.W R0,@(-2,ER6)
BRA ?00046:8
?00045:
MOV.W @(-2,ER6),R0
INC.W #H'0001,R0
MOV.W R0,@(-2,ER6)
?00046:
MOV.W @(-2,ER6),R0
MOV.W @(+14,ER6),R1
CMP.W R1,R0
BCC ?00047
??BEGINBLOCK(748)
??CLINE 749
MOV.W @(+8,ER6),R0
EXTS.L ER0
MOV.L ER0,ER1
SHLL.L ER1
MOV.L #_rs_send_wp,ER2
ADD.L ER1,ER2
MOV.W @ER2,R1
EXTU.L ER1
MOV.L #H'00000400,ER2
PUSH.L ER0
PUSH.L ER2
JSR @__l_mul
ADDS.L #H'00000004,ER7
POP.L ER0
MOV.L #_rs_send_buf,ER3
ADD.L ER0,ER3
ADD.L ER1,ER3
MOV.L @(+10,ER6),ER0
MOV.B @ER0,R1L
MOV.B R1L,@ER3
??CLINE 750
MOV.L @(+10,ER6),ER0
INC.L #H'00000001,ER0
MOV.L ER0,@(+10,ER6)
??CLINE 751
MOV.W @(+8,ER6),R1
EXTS.L ER1
SHLL.L ER1
MOV.L #_rs_send_wp,ER3
ADD.L ER1,ER3
MOV.W @ER3,R1
INC.W #H'0001,R1
MOV.W R1,@ER3
??CLINE 752
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_send_wp,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
AND.W #H'03FF,R0
MOV.W R0,@ER1
??CLINE 753
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_send_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
DEC.W #H'0001,R0
MOV.W R0,@ER1
??ENDBLOCK(754)
JMP @?00045
?00047:
??CLINE 756
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_txcont_job
ADDS.L #H'00000002,ER7
??CLINE 758
MOV.W #H'0001,R0
??ENDBLOCK(759)
??CLINE 759
_rs_putn_end:
MOV.L ER6,ER7
POP.L ER6
RTS
segment TEXT ATR_CODE
public _IntRXI0
_IntRXI0:
STM.L ER0-ER3,@-SP
STM.L ER4-ER6,@-SP
??FUNCDEF(???IntRXI0) ??VOID
??FUNCEND
??BEGINBLOCK(775)
??CLINE 776
XOR.W R0,R0
PUSH.W R0
JSR @_rx_job
ADDS.L #H'00000002,ER7
??ENDBLOCK(777)
??CLINE 777
_IntRXI0_end:
LDM.L @SP+,ER4-ER6
LDM.L @SP+,ER0-ER3
RTE
segment TEXT ATR_CODE
public _IntRXI1
_IntRXI1:
STM.L ER0-ER3,@-SP
STM.L ER4-ER6,@-SP
??FUNCDEF(???IntRXI1) ??VOID
??FUNCEND
??BEGINBLOCK(789)
??CLINE 790
MOV.W #H'0001,R0
PUSH.W R0
JSR @_rx_job
ADDS.L #H'00000002,ER7
??ENDBLOCK(791)
??CLINE 791
_IntRXI1_end:
LDM.L @SP+,ER4-ER6
LDM.L @SP+,ER0-ER3
RTE
segment TEXT ATR_CODE
public _IntRXI2
_IntRXI2:
STM.L ER0-ER3,@-SP
STM.L ER4-ER6,@-SP
??FUNCDEF(???IntRXI2) ??VOID
??FUNCEND
??BEGINBLOCK(803)
??CLINE 804
MOV.W #H'0002,R0
PUSH.W R0
JSR @_rx_job
ADDS.L #H'00000002,ER7
??ENDBLOCK(805)
??CLINE 805
_IntRXI2_end:
LDM.L @SP+,ER4-ER6
LDM.L @SP+,ER0-ER3
RTE
segment TEXT ATR_CODE
public _rx_job
_rx_job:
PUSH.L ER6
MOV.L ER7,ER6
??FUNCDEF(???rx_job) ??VOID
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(817)
??CLINE 818
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L #H'00000002,ER0
MOV.L #_ssr,ER1
ADD.L ER0,ER1
MOV.L @ER1,ER0
MOV.B @ER0,R0L
EXTU.W R0
AND.W #H'0040,R0
OR.W R0,R0
BEQ ?00048
??BEGINBLOCK(819)
??CLINE 820
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L #H'00000002,ER0
MOV.L #_ssr,ER1
ADD.L ER0,ER1
MOV.L @ER1,ER0
MOV.B @ER0,R1L
AND.B #H'BF,R1L
MOV.B R1L,@ER0
??CLINE 821
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
OR.W R0,R0
BEQ ?00049
??BEGINBLOCK(822)
??CLINE 823
MOV.W @(+8,ER6),R0
EXTS.L ER0
MOV.L ER0,ER1
SHLL.L ER1
MOV.L #_rs_recv_wp,ER2
ADD.L ER1,ER2
MOV.W @ER2,R1
EXTU.L ER1
MOV.L ER0,ER2
MOV.L #H'00000200,ER3
PUSH.L ER2
PUSH.L ER3
JSR @__l_mul
ADDS.L #H'00000004,ER7
POP.L ER2
MOV.L #_rs_recv_buf,ER4
ADD.L ER2,ER4
ADD.L ER1,ER4
SHLL.L #H'00000002,ER0
MOV.L #_rdr,ER1
ADD.L ER0,ER1
MOV.L @ER1,ER0
MOV.B @ER0,R0L
MOV.B R0L,@ER4
??CLINE 825
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_wp,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
INC.W #H'0001,R0
MOV.W R0,@ER1
??CLINE 826
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_wp,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
AND.W #H'01FF,R0
MOV.W R0,@ER1
??CLINE 827
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
DEC.W #H'0001,R0
MOV.W R0,@ER1
??ENDBLOCK(828)
?00049:
??ENDBLOCK(829)
?00048:
??ENDBLOCK(830)
??CLINE 830
_rx_job_end:
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_intrx
_rs_intrx:
PUSH.L ER6
MOV.L ER7,ER6
??FUNCDEF(???rs_intrx) ??VOID
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??SINT ??SYMBOL(???on) ??OFFSET(10)
??FUNCEND
??BEGINBLOCK(842)
??CLINE 843
MOV.W @(+10,ER6),R0
CMP.W #H'0001,R0
BNE ?00050:8
??BEGINBLOCK(844)
??CLINE 845
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L #H'00000002,ER0
MOV.L #_scr,ER1
ADD.L ER0,ER1
MOV.L @ER1,ER0
MOV.B @ER0,R1L
OR.B #H'40,R1L
MOV.B R1L,@ER0
??ENDBLOCK(846)
BRA ?00051:8
?00050:
??BEGINBLOCK(848)
??CLINE 849
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L #H'00000002,ER0
MOV.L #_scr,ER1
ADD.L ER0,ER1
MOV.L @ER1,ER0
MOV.B @ER0,R1L
AND.B #H'BF,R1L
MOV.B R1L,@ER0
??ENDBLOCK(850)
?00051:
??ENDBLOCK(851)
??CLINE 851
_rs_intrx_end:
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_getcheck
_rs_getcheck:
PUSH.L ER6
MOV.L ER7,ER6
??FUNCDEF(???rs_getcheck) ??UINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(863)
??CLINE 864
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
MOV.W #H'0200,R1
SUB.W R0,R1
MOV.W R1,R0
??ENDBLOCK(865)
??CLINE 865
_rs_getcheck_end:
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_getc
_rs_getc:
PUSH.L ER6
MOV.L ER7,ER6
SUBS #2,ER7
??FUNCDEF(???rs_getc) ??UCHAR
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(877)
??VAR ??UCHAR ??SYMBOL(???data) ??OFFSET(-1)
??CLINE 880
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getcheck
ADDS.L #H'00000002,ER7
OR.W R0,R0
BNE ?00052:8
??BEGINBLOCK(881)
??CLINE 882
XOR.B R0L,R0L
JMP @_rs_getc_end
??ENDBLOCK(883)
?00052:
??CLINE 885
MOV.W @(+8,ER6),R0
EXTS.L ER0
MOV.L ER0,ER1
SHLL.L ER1
MOV.L #_rs_recv_rp,ER2
ADD.L ER1,ER2
MOV.W @ER2,R1
EXTU.L ER1
MOV.L #H'00000200,ER3
PUSH.L ER0
PUSH.L ER3
JSR @__l_mul
ADDS.L #H'00000004,ER7
POP.L ER0
MOV.L #_rs_recv_buf,ER4
ADD.L ER0,ER4
ADD.L ER1,ER4
MOV.B @ER4,R0L
MOV.B R0L,@(-1,ER6)
??CLINE 886
MOV.W @ER2,R1
INC.W #H'0001,R1
MOV.W R1,@ER2
??CLINE 887
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_rp,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
AND.W #H'01FF,R0
MOV.W R0,@ER1
??CLINE 889
XOR.W R0,R0
PUSH.W R0
MOV.W @(+8,ER6),R1
PUSH.W R1
JSR @_rs_intrx
ADDS.L #H'00000004,ER7
??CLINE 890
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
INC.W #H'0001,R0
MOV.W R0,@ER1
??CLINE 891
MOV.W #H'0001,R0
PUSH.W R0
MOV.W @(+8,ER6),R1
PUSH.W R1
JSR @_rs_intrx
ADDS.L #H'00000004,ER7
??CLINE 893
MOV.B @(-1,ER6),R0L
??ENDBLOCK(894)
??CLINE 894
_rs_getc_end:
MOV.L ER6,ER7
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_getch
_rs_getch:
PUSH.L ER6
MOV.L ER7,ER6
SUBS #2,ER7
??FUNCDEF(???rs_getch) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(906)
??VAR ??SINT ??SYMBOL(???data) ??OFFSET(-2)
??CLINE 909
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getcheck
ADDS.L #H'00000002,ER7
OR.W R0,R0
BNE ?00053:8
??BEGINBLOCK(910)
??CLINE 911
MOV.W #H'FFFF,R0
JMP @_rs_getch_end
??ENDBLOCK(912)
?00053:
??CLINE 914
MOV.W @(+8,ER6),R0
EXTS.L ER0
MOV.L ER0,ER1
SHLL.L ER1
MOV.L #_rs_recv_rp,ER2
ADD.L ER1,ER2
MOV.W @ER2,R1
EXTU.L ER1
MOV.L #H'00000200,ER3
PUSH.L ER0
PUSH.L ER3
JSR @__l_mul
ADDS.L #H'00000004,ER7
POP.L ER0
MOV.L #_rs_recv_buf,ER4
ADD.L ER0,ER4
ADD.L ER1,ER4
MOV.B @ER4,R0L
EXTU.W R0
MOV.W R0,@(-2,ER6)
??CLINE 915
MOV.W @ER2,R1
INC.W #H'0001,R1
MOV.W R1,@ER2
??CLINE 916
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_rp,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
AND.W #H'01FF,R0
MOV.W R0,@ER1
??CLINE 918
XOR.W R0,R0
PUSH.W R0
MOV.W @(+8,ER6),R1
PUSH.W R1
JSR @_rs_intrx
ADDS.L #H'00000004,ER7
??CLINE 919
MOV.W @(+8,ER6),R0
EXTS.L ER0
SHLL.L ER0
MOV.L #_rs_recv_c,ER1
ADD.L ER0,ER1
MOV.W @ER1,R0
INC.W #H'0001,R0
MOV.W R0,@ER1
??CLINE 920
MOV.W #H'0001,R0
PUSH.W R0
MOV.W @(+8,ER6),R1
PUSH.W R1
JSR @_rs_intrx
ADDS.L #H'00000004,ER7
??CLINE 922
MOV.W @(-2,ER6),R0
??ENDBLOCK(923)
??CLINE 923
_rs_getch_end:
MOV.L ER6,ER7
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_gets
_rs_gets:
PUSH.L ER6
MOV.L ER7,ER6
SUBS #2,ER7
??FUNCDEF(???rs_gets) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(937)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 940
XOR.W R0,R0
MOV.W R0,@(-2,ER6)
BRA ?00055:8
?00054:
MOV.W @(-2,ER6),R0
INC.W #H'0001,R0
MOV.W R0,@(-2,ER6)
?00055:
MOV.W @(-2,ER6),R0
MOV.W @(+14,ER6),R1
CMP.W R1,R0
BCC ?00056:8
??BEGINBLOCK(941)
?00057:
??CLINE 942
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getcheck
ADDS.L #H'00000002,ER7
OR.W R0,R0
BNE ?00058:8
BRA ?00057:8
?00058:
??CLINE 943
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getc
ADDS.L #H'00000002,ER7
MOV.L @(+10,ER6),ER1
MOV.B R0L,@ER1
??CLINE 944
MOV.L @(+10,ER6),ER0
MOV.B @ER0,R1L
EXTU.W R1
CMP.W #H'000A,R1
BNE ?00059:8
??BEGINBLOCK(945)
??CLINE 946
MOV.L @(+10,ER6),ER0
XOR.B R1L,R1L
MOV.B R1L,@ER0
??CLINE 947
MOV.W #H'0001,R0
BRA _rs_gets_end:8
??ENDBLOCK(948)
?00059:
??CLINE 949
MOV.L @(+10,ER6),ER0
INC.L #H'00000001,ER0
MOV.L ER0,@(+10,ER6)
??ENDBLOCK(950)
JMP @?00054
?00056:
??CLINE 952
XOR.W R0,R0
??ENDBLOCK(953)
??CLINE 953
_rs_gets_end:
MOV.L ER6,ER7
POP.L ER6
RTS
segment TEXT ATR_CODE
public _rs_getn
_rs_getn:
PUSH.L ER6
MOV.L ER7,ER6
SUBS #2,ER7
??FUNCDEF(???rs_getn) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(966)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 969
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getcheck
ADDS.L #H'00000002,ER7
MOV.W @(+14,ER6),R1
CMP.W R1,R0
BCS ?00061:8
MOV.W @(+14,ER6),R0
OR.W R0,R0
BNE ?00060:8
?00061:
??BEGINBLOCK(970)
??CLINE 971
XOR.W R0,R0
BRA _rs_getn_end:8
??ENDBLOCK(972)
?00060:
??CLINE 974
XOR.W R0,R0
MOV.W R0,@(-2,ER6)
BRA ?00063:8
?00062:
MOV.W @(-2,ER6),R0
INC.W #H'0001,R0
MOV.W R0,@(-2,ER6)
?00063:
MOV.W @(-2,ER6),R0
MOV.W @(+14,ER6),R1
CMP.W R1,R0
BCC ?00064:8
??BEGINBLOCK(975)
??CLINE 976
MOV.W @(+8,ER6),R0
PUSH.W R0
JSR @_rs_getc
ADDS.L #H'00000002,ER7
MOV.L @(+10,ER6),ER1
MOV.B R0L,@ER1
??CLINE 977
MOV.L @(+10,ER6),ER0
INC.L #H'00000001,ER0
MOV.L ER0,@(+10,ER6)
??ENDBLOCK(978)
BRA ?00062:8
?00064:
??CLINE 980
MOV.W #H'0001,R0
??ENDBLOCK(981)
??CLINE 981
_rs_getn_end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -