📄 printer.med
字号:
999 +1 set (F_FDREQ>>4).a
1001 +1 ld wa,F_FEED
1002 +1 test (F_FEED>>4).a ;bit -reverse-> jump status
1003 +1 j f,key_f100 ;if jump status is 0 -> branch
1004 ld (STEP_CT),0
1006 +1 ld wa,F_FEED
1007 +1 set (F_FEED>>4).a
1009 +1 ld wa,F_RVREQ
1010 +1 clr (F_RVREQ>>4).a
1012 +1 ld wa,F_RUSH
1013 +1 test (F_RUSH>>4).a ;bit -reverse-> jump status
1014 +1 j t,key_f011 ;if jump status is 1 -> branch
1016 +1 ld wa,F_RUSH
1017 +1 clr (F_RUSH>>4).a
1018 j key_f100
1019 key_f011:
1020 call start_up ;MT driver enable, motor start, dbr clear BL off
1021 key_f100:
1023 +1 ld wa,F_FDREQ
1024 +1 test (F_FDREQ>>4).a ;bit -reverse-> jump status
1025 +1 j f,key_f100 ;if jump status is 0 -> branch
1026 ret
1027 start_up:
1029 +1 and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
1030 +1 or (P4DR),0y00000100 ;P42 set'1'(VPR)
1031 +1 set (F_PCONT+2).6 ;IO_MT equ (F_PCONT+2<<4)+6
1032 +1
1034 +1 and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
1035 +1 or (P4DR),0y00011000 ;P44P43 set '1'(ENA1,ENA2)
1037 +1 ld wa,P_MOVE
1038 +1 set (P_MOVE>>4).a
1039 di
1041 +1 ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
1042 +1 clr (EIRH).EF13 ;clear TC2 enable (EIRH:bit4)
1043 ei
1045 +1 ld wa,SW_LTP
1046 +1 test (SW_LTP>>4).a ;bit -reverse-> jump status
1047 +1 j f,start_up1 ;if jump status is 0 -> branch
1049 +1 ldw (TC2DRL),STP_RUSH ;set TC2DR
1050 j start_up2
1051 start_up1:
1053 +1 ldw (TC2DRL),STP_WKUP_LTP ;set TC2DR
1055 +1 ld wa,F_ACC
1056 +1 set (F_ACC>>4).a
1057 start_up2:
1058 di
1060 +1 ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
1061 +1 clr (ILH).IL13 ;clear TC6 request (ILH:bit4)
1062 +1 set (EIRH).EF13 ;set TC6 enable (EIRH:bit4)
1063 +1 ld (TC2CR),0y00101110 ;TC2CK(011)=fc/2^3 0.5us TC2S(1):start TC2M(0):timer mode
1064 ei
1065 ; call dbr_disp_clear ;DBR clear(real display data)
1066 ; call bl_off
1067 call vft_disable
1068 ret
1069 ;V4.14============================================================
1070 print_int_check:
1072 +1 ld wa,F_INIREQ
1073 +1 test (F_INIREQ>>4).a ;bit -reverse-> jump status
1074 +1 j t,print_need_int ;if jump status is 1 -> branch
1076 +1 ld wa,F_INIREQ
1077 +1 clr (F_INIREQ>>4).a
1078 call prn_init ;V4.14
1079 print_need_int: ;V4.14
1080 ret ;V4.14
1081 ;---------------------------------------------------------------------------------
1082 ; Space Print / 1-Line Print
1083 print:
1084 call print_int_check ;V4.14
1085 ;V4.14 @BBC (F_INIREQ,print_need_int) ;V4.08
1086 ;V4.14 @CLB (F_INIREQ) ;V4.10
1087 ;V4.14 call prn_init ;V4.08
1088 ;V4.14print_need_int: ;V4.08
1090 +1 ld wa,F_REDBAK
1091 +1 clr (F_REDBAK>>4).a
1092
1094 +1 ld wa,P_RED
1095 +1 test (P_RED>>4).a ;bit -reverse-> jump status
1096 +1 j t,prnl_top0 ;if jump status is 1 -> branch
1098 +1 ld wa,F_REDBAK
1099 +1 set (F_REDBAK>>4).a
1101 +1 ld wa,P_RED
1102 +1 clr (P_RED>>4).a
1103 prnl_top0:
1105 +1 ld wa,F_FEED
1106 +1 test (F_FEED>>4).a ;bit -reverse-> jump status
1107 +1 j f,prnl_top0 ;if jump status is 0 -> branch
1109 +1 ld wa,SW_LTP
1110 +1 test (SW_LTP>>4).a ;bit -reverse-> jump status
1111 +1 j f,prnl_top1 ;if jump status is 0 -> branch
1112
1113 di
1115 +1 ld wa,F_EXFED
1116 +1 test (F_EXFED>>4).a ;bit -reverse-> jump status
1117 +1 j t,prnl_top1 ;if jump status is 1 -> branch
1118 ei
1119 prnl_top01:
1121 +1 ld wa,F_EXFED
1122 +1 test (F_EXFED>>4).a ;bit -reverse-> jump status
1123 +1 j f,prnl_top01 ;if jump status is 0 -> branch
1124 prnl_top02:
1126 +1 ld wa,F_RUSH
1127 +1 test (F_RUSH>>4).a ;bit -reverse-> jump status
1128 +1 j t,prnl_top02 ;if jump status is 1 -> branch
1130 +1 ld wa,F_PRINT
1131 +1 set (F_PRINT>>4).a
1133 +1 ld wa,F_PRREQ
1134 +1 set (F_PRREQ>>4).a
1135 j prnl_top10
1136 prnl_top1:
1137 di
1139 +1 ld wa,F_PRREQ
1140 +1 set (F_PRREQ>>4).a
1142 +1 ld wa,F_PRINT
1143 +1 test (F_PRINT>>4).a ;bit -reverse-> jump status
1144 +1 j f,prnl_x1 ;if jump status is 0 -> branch
1145 ld (STEP_CT),0 ;MT step count clear (0~52)
1147 +1 ld wa,F_PRINT
1148 +1 set (F_PRINT>>4).a
1150 +1 ld wa,F_RUSH
1151 +1 test (F_RUSH>>4).a ;bit -reverse-> jump status
1152 +1 j t,prnl_x0 ;if jump status is 1 -> branch
1153 prnl_top10:
1155 +1 ld wa,F_RUSH
1156 +1 clr (F_RUSH>>4).a
1157 di ;
1159 +1 ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
1160 +1 clr (EIRH).EF13 ;clear TC2 enable (EIRH:bit4)
1162 +1 ldw (TC2DRL),STP_NORM ;set TC2DR
1164 +1 ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
1165 +1 clr (ILH).IL13 ;clear TC6 request (ILH:bit4)
1166 +1 set (EIRH).EF13 ;set TC6 enable (EIRH:bit4)
1167 +1 ld (TC2CR),0y00101110 ;TC2CK(011)=fc/2^3 0.5us TC2S(1):start TC2M(0):timer mode
1168 ei ;
1169 j prnl_x1
1170
1171 prnl_x0:
1172 ei
1173 call start_up ;MT driver enable, motor start, dbr clear BL off
1174 prnl_x1:
1175 di ;V4.07
1177 +1 ld wa,F_LARGP
1178 +1 clr (F_LARGP>>4).a
1180 +1 ld wa,F_ENLARG
1181 +1 test (F_ENLARG>>4).a ;bit -reverse-> jump status
1182 +1 j t,prnl_x1x ;if jump status is 1 -> branch
1184 +1 ld wa,F_LARGP
1185 +1 set (F_LARGP>>4).a
1187 +1 ld wa,F_ENLARG
1188 +1 clr (F_ENLARG>>4).a
1189 prnl_x1x: ;V4.07
1190 ei
1192 +1 and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
1193 +1 ld (ADCCR1),0y00100000 ;AD conv. stop s/w start AIN enable select AIN0(P40)
1194 +1 ld (ADCCR2),0y00011000 ;Rudder connect when AD convert only, ACK=312/fc (19.5us convert time 16MHz)
1195 +1 set (ADCCR1).7 ;AD convert start
1197 +1 ld wa,SW_LTP
1198 +1 test (SW_LTP>>4).a ;bit -reverse-> jump status
1199 +1 j f,prnl_x2 ;if jump status is 0 -> branch
1201 +1 ld wa,F_RVREQ
1202 +1 test (F_RVREQ>>4).a ;bit -reverse-> jump status
1203 +1 j t,prnl_x2 ;if jump status is 1 -> branch
1205 +1 ld wa,F_RVREQ
1206 +1 clr (F_RVREQ>>4).a
1208 +1 ld wa,F_RVSE
1209 +1 set (F_RVSE>>4).a
1210 dec (PHASE_CT)
1211 prnl_x2:
1212 ld (LINE_PTR),0 ;the line location of font(0~19)
1213 ld (LINE_PTR_BK),0 ;V4.03
1215 +1 loop02d:
1216 +1 ld cf,(ADCDR2).5 ;EOCF=1?
1217 +1 j cc,loop02d
1218 +1 ld a,(ADCDR1) ;get AD convert value
1219 cmp a,224
1220 j lt,prnl_01
1221 ld a,223
1222 prnl_01:
1223 sub a,77
1224 j cc,prnl_02
1225 ld a,0
1226 prnl_02:
1227 ld w,0 ;V4.05
1228 shrc a
1230 +1 test (FLG_MODE).0
1231 +1 j t,prnl_02x
1232 ld c,a
1233 ld hl,temp_table
1234 ld a,(hl+c)
1235 ld (HD_TEMP),a ;keep head temparature
1236 jp prnl_02y ;V4.16
1237 prnl_02x:
1238 shlc a ;V4.04
1239 add wa,lg_temp_table ;V4.05
1240 ld de,wa ;V4.05
1241 ld wa,(de) ;V4.05
1242 ld (HD_TEMP),wa
1243 prnl_02y:
1245 +1 ld wa,F_BHLD
1246 +1 clr (F_BHLD>>4).a
1247 ;--------------------------------------------------------------
1248 prnl_00:
1249 call prnbuf_to_dot ;PRN_BUF(1line data)--> DOT_LINE
1250 prnl_11:
1252 +1 ld wa,F_BHLD
1253 +1 test (F_BHLD>>4).a ;bit -reverse-> jump status
1254 +1 j f,prnl_11 ;if jump status is 0 -> branch
1256 +1 ld wa,F_BHLD
1257 +1 set (F_BHLD>>4).a
1258 call font_tx ; 1 dotline(288dots)---> shift registor of printer
1259 inc (LINE_PTR_BK) ;V4.03
1261 +1 ld wa,F_LARGP
1262 +1 test (F_LARGP>>4).a ;bit -reverse-> jump status
1263 +1 j t,prn1_11_y ;if jump status is 1 -> branch
1264 cmp (LINE_PTR_BK),3 ;V4.03
1265 j eq,prn1_11_x ;V4.03
1266 cmp (LINE_PTR_BK),7 ;V4.03
1267 j eq,prn1_11_x ;V4.03
1268 cmp (LINE_PTR_BK),11 ;V4.03
1269 j eq,prn1_11_x ;V4.03
1270 cmp (LINE_PTR_BK),15 ;V4.03
1271 j eq,prn1_11_x ;V4.03
1272 cmp (LINE_PTR_BK),19 ;V4.03
1273 j eq,prn1_11_x ;V4.03
1274 cmp (LINE_PTR_BK),23 ;V4.03
1275 j eq,prn1_11_x ;V4.03
1276 prn1_11_y: ;V4.03
1277 inc (LINE_PTR) ;
1278 prn1_11_x: ;V4.03
1279 cmp (LINE_PTR),20 ; last line?
1280 j lt,prnl_00 ;no
1281 ;--------------------------------------------------------------
1282 prnl_90:
1284 +1 ld wa,F_PRREQ
1285 +1 test (F_PRREQ>>4).a ;bit -reverse-> jump status
1286 +1 j f,prnl_90 ;if jump status is 0 -> branch
1287 ret
1288
1289 ;
1290 ;1line dot(288dots) transmit.....................................................
1291 font_tx:
1292
1294 +1 and (P1DR),0y10111111
1295 +1 nop
1296 +1 or (P1DR),0y11000000 ;P17(CK: Hi-z), P16(EEIN: Hi-z)
1297 +1 ld (SIOCR1),0y01001100 ;SIOS=0, SIOINH=1 to abort and initial "SIOSR", SIOM=00(8bit Tx),SIODIR=1 LSB, SCK=fc/2^4
1298 +1 ld (SIOCR2),0y00000000
1299 +1
1300 ld (DOT_CT),0 ;total dot q'ty of 1line
1301 ld hl,DOT_LINE ;
1302 ld c,0
1303 ld e,(hl+c) ;5
1304 ld (SIOBUF),e ;5
1306 +1 ld (SIOCR1),0y10001100 ;SIOS=1 SIOINH=0 SIOM=00(8bit Tx) SIODIR=1 SCK=fc/2^4
1307 +1
1308 j font_tx_12
1309 font_tx_1:
1310 ld cf,(SIOSR).6 ;check shift end flag
1311 j cs,font_tx_1
1312 ; or (P1DR),0y11000000 ;P17(CK: Hi-z), P16(EEIN: Hi-z)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -