;""FILE COMMENT""******************************************************** ; System Name : MSA0651 MONITOR SOFT WARE ; File Name ; mon_cmd.a30 ; Version ; 2.0 ; Contents : @ CMD_CNF :send POD information ; : @ CMD_REST :reset MCU ; : @ CMD_CLR :initialise break point or register ; : @ CMD_DWNH :down load program to memory ; : @ CMD_PB :set or clear a information of break points ; : @ CMD_PBCL :clear all data of the break point information table ; : @ CMD_GO :set a user's program going ; : @ CMD_GPB :processing the go command when break pass count is used ; : @ CMD_GB :processing the go command when break pass count is not used ; : @ CMD_PROG :judgemaent a running information of user's program ; : @ CMD_STOP :stopping process of user's program ; : @ CMD_STEP :preparing of the step processing ; : @ CMD_XREG :sending all regiser information ; : @ CMD_DUMP :reading datas from memory ,and sending these information ; : @ CMD_FILL :writing datas to RAM memory ; : @ CMD_MOVE :reading and writing datas of RAM memory ; : @ CMD_FM :mode change (free mode and sampling mode) ; Model ; ; Order : ; CPU : M16C ; Assembler : AS30 ; Linker : LN30 ; Programmer : O.MINAMIMOTO (original) CRAETE: 1996.2.1 ; : H.SHIRAHAMA (modify) CRAETE: 1999.1.20 ; Note ;option "PDB" 0 : match KDB30 ; 1 : match PDB30 ; "DBG" 0 : normal ; 1 : for debugging ;************************************************************************ ; Copyright,1998-1999 MITSUBISHI ELECTRIC CORPORATION ; AND MITSUBISHI ELECTRIC SEMICONDUCTOR SYSTEMS CORPORATION ; All Rights Reserved. ;************************************************************************ ; History : ; : ; : ; : ; : ;""FILE COMMENT END#""*************************************************** ; ; ; ; ; ;======================================================== ; command processing (match KDB30,PDB30) ;======================================================== ;""SUBR COMMENT""**************************************** ; ID : @ CMD_CNF ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; CMD_CONF: MOV.B bstage_no,A0 ; loading a processing number distinguished by command SHL.W #2,A0 ; calculating address (X4) JMPI.A T_CMD_CONF[A0] ; jump to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_CONF_RCVEND: ; [END] receive ; loading a decided data in recived ones CMP.B #C_CMD_END,bnow_code ; [END] command ? JEQ L_CONF_NEXT ; --> YES ; ----- checking trigger err ----- MOV.B #C_CMD_ERR8,brtn_sts ; setting the status quo L_CONF_NEXT: ;------------------ ; STAGE1 ;------------------ CMD_CONF_SNDDAT: ; sending data & [END] ; ----- sending [START] ----- JSR.A S_START_SND ; ----- sending the status quo ------ MOV.B brtn_sts,bsnd_buf ; loading the status quo L_CONF_SND10: FSET I JSR.A S_TRS ;[transfer data] JC L_CONF_SND10 ; --> BUSY ; ----- sending a set up status ----- MOV.B #C_CMD_1,bsnd_buf ; sending a status that farm ware works normaly ; L_CONF_SND20: JSR.A S_TRS ;[transfer data] JC L_CONF_SND20 ; --> BUSY ; ----- sending POD Number ----- MOV.W #0,A0 ; counter clear L_CONF_SND25: LDE.B T_PODNO[A0],bsnd_buf ; setting a POD number to a sending data buffer L_CONF_SND30: JSR.A S_TRS ;[transfer data] JC L_CONF_SND30 ; --> BUSY ADD.W #1,A0 ; CMP.W #35,A0 ;if sending datas sum reaches 35,send [END]. JNZ L_CONF_SND25 ; JMP EVGA EVGA: ; ----- sending [END] ----- JSR.A S_END_SND ; ----- ending a series of command processing ----- JSR.A S_CMDEXIT ; ----- END ----- L_CONF_END: JMP.A L_CMD_EXIT ; --> moj_cmd ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_REST ;--------------------------------------- CMD_REST: MOV.B bstage_no,A0 ; loading a processing number distinguished by command SHL.W #2,A0 ; calculating address (X4) JMPI.A T_CMD_REST[A0] ; jump to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_REST_RCVEND: ; [END]recieve ; loading a decided data in recived ones CMP.B #C_CMD_END,bnow_code ; [END] command ? JEQ L_REST_RUNCHK ; --> YES ; ; ----- checking trigger err ----- ; MOV.B #C_CMD_ERR8,brtn_sts ; ERR_8; setting the status quo JMP.B L_REST_NEXT ; --> ALL L_REST_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is the user module on working ? JEQ L_REST_SYQ ; --> NO ; ----- checking a status que is on working or not ----- MOV.B #C_CMD_ERR4,brtn_sts ;setting the status quo JMP.B L_REST_NEXT ; --> ALL L_REST_SYQ: ; ----- ready to return after REST ----- MOV.W #0,R0 ; BSET F_MOJ_CMD,R0 ; do again after RESET BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req ; ADD.B #1,bstage_no ; stage number +1 MOV.W #C_RSTINF_UREST,wrst_inf; setting reset information= USER MOV.B #0,bmon_bk ; RUN LED BKUP = 0 ; ----- MCU reset ----- BSET:G PRC1 ; BSET:G PM03 ; S/W reset BCLR:G PRC1 ; L_REST_NEXT: ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;------------------ ; STAGE1 ;------------------ CMD_REST_SNDDAT: ; return data& sending [END] ; ----- sending [START] ----- JSR.A S_START_SND ; ; ----- sending the status quo ----- MOV.B brtn_sts,bsnd_buf ; loading the status quo L_REST_SND10: JSR.A S_TRS ; [tranfer] JC L_REST_SND10 ; --> BUSY ; ----- sendig [END] ----- JSR.A S_END_SND ; ----- ending a series of command processing ----- JSR.A S_CMDEXIT ; ----- end ----- L_REST_END: JMP.A L_CMD_EXIT ; --> moj_cmd ;--------------------------------------- ; @ CMD_CLR ;--------------------------------------- CMD_CLR: MOV.B bstage_no,A0 ; loading a processing number distinguished by command SHL.W #2,A0 ; calculating address (X4) JMPI.A T_CMD_CLR[A0] ; ;------------------ ; STAGE0 ;------------------ CMD_CLR_RCVEND: ; [END] recieve ; loading a decided data in recived ones CMP.B #C_CMD_END,bnow_code ; [END] command ? JEQ L_CLR_RUNCHK ; --> YES ; ; ----- checking trigger err ----- ; MOV.B #C_CMD_ERR8,brtn_sts ; ERR_8; setting the status quo JMP.B L_CLR_NEXT ; --> ALL L_CLR_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module on working ? JEQ L_CLR_SYQ ; --> NO ; ; ----- checking a status que is on working or not ----- ; MOV.B #C_CMD_ERR4,brtn_sts ; ERR_4;setting the status quo JMP.B L_CLR_NEXT ; --> ALL L_CLR_SYQ: ; ----- initialising a information of break command ----- ; cancel all break points MOV.B #0,bpb_cntl ; PB control information = 0 ; ----- initialising register ----- JSR.A S_REG_INIT L_CLR_NEXT: ;------------------ ; STAGE1 ;------------------ CMD_CLR_SNDDAT: ; return data& sending [END] ; ----- sending [START] ----- JSR.A S_START_SND ; ----- sending the status quo----- MOV.B brtn_sts,bsnd_buf ;loading the status quo L_CLR_SND10: JSR.A S_TRS ;[sending data] JC L_CLR_SND10 ; --> BUSY L_CLR_ENDSND: ; ; ----- sending [END] ----- ; JSR.A S_END_SND ; ; ----- ending a series of command processing ----- ; JSR.A S_CMDEXIT ; ; ----- END ----- ; L_CLR_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : ; CONTENS : @ CMD_DWNH ;-------------------------------------------------------- ; FUNCTION :Downloading user's program to flash memory ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : First ,it jumps to the program written in ; :flash memory after reciving a information ; :of address and length. ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; CMD_DWNH: MOV.B bstage_no,A0 ; loading a processing number distinguished by command SHL.W #2,A0 ; calculating address (X4) JMPI.A T_CMD_DWNH[A0] ; jump to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_DWNH_CHKTYPE: ; receiving [END] & judgement MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; command is [END] ? JNE L_DWNH_RCVADR1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_EXE1,R0H ; command type = MOV.B R0H,bcmd_type ; ; MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module on working ? JEQ L_DWNH_JMP ; --> NO ; ----- checking the status quo ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo L_DWNH_JMP: JMP Flash_Main ; transfar the download program to RAM area L_DWNH_JMP_RETURN: JMP.W L_DWNH_NEXT ; --> ALL ; ----- command ----- L_DWNH_RCVADR1: MOV.B #C_CTYPE_EXE2,R0H ; command type= MOV.B R0H,bcmd_type ; > ; ; reciveing start address(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) ; JMP.W L_DWNH_STGUP ; --> ALL ; ;------------------ ; ; STAGE1 ; ;------------------ ; CMD_DWNH_RCVADR2: ; recieving start address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) ; JMP.W L_DWNH_STGUP ; --> ALL ; ;------------------ ; ; STAGE2 ; ;------------------ ; CMD_DWNH_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_DWNH_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_DWNH_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_DWNH_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th); MOV.W badr_awk+2,R1 ; (4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_DWNH_001 ; match $M16C-02-9607 L_DWNH_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bdwnh_adr ; DUMP address MOV.W R1,bdwnh_adr+2 ; JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_DWNH_RCVLEN1: ; recive length(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk ; length (5th) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_DWNH_RCVLEN2: ; receiveing length(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+1 ; > length(3rd) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_DWNH_RCVLEN3: ; receiving length(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; >length(2nd) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE9 ;------------------ CMD_DWNH_RCVLEN4: ; receiving length(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; > length(1st) ; ----- change length(ASCII->hex )----- MOV.W #0,R0 ; 6,5th = 0 MOV.W R0,bdat_ascbuf ; MOV.W blen_awk,R0 ; loading length(4,3rd) MOV.W blen_awk+2,R1 ; (2,1st) MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_DWNH_002 ; match $M16C-02-9607 L_DWNH_002: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W R0,wdwnh_len ; ; ----- preperation receiving a binary data----- MOV.W wrcv_cntl,R0 ; load an information of controling to receive BSET F_RCVMD_ASCII,R0 ; ASCII/binary = binary MOV.W R0,wrcv_cntl ; > MOV.B #0,R0L ; the checksum total = 0 MOV.B R0L,bchksum_buf ; JMP Flash_Main2 ; execute the download program in RAM area ;------------------ ; STAGE10 ;------------------ CMD_DWNH_RCVBIN: ; receiving objectdata ; ----- 1 Byte data PUT ----- MOV.W bdwnh_adr+2,A1 ; address(H) AND.W #000FH,A1 ; mask 8,7,6th MOV.W bdwnh_adr,A0 ; address(M,L) do_ham: MOV.B bnow_code,R0L ; loading a decided data in recived ones STE.B R0L,[A1A0] ; setting data ; ; ----- calicurating checksum data ----- ;; JSR.A S_CHKSUM_R ; calicurating checksum data ; ----- renewaling address & caliculation length ------ ; L_ADD_ADRESS: MOV.W bdwnh_adr,R0 ; loading DWNH start address MOV.W bdwnh_adr+2,R1 ADD.W #1,R0 ; +1 ADC.W #0,R1 MOV.W R0,bdwnh_adr ; preserve data MOV.W R1,bdwnh_adr+2 ; ; MOV.W wdwnh_len,R0 ; load DWNH length SUB.W #1,R0 ; -1 CMP.W #0,R0 ; end ? JNE L_DWNH_CONTINUE ; --> NO ; ; ----- end receiving object data ----- ; ; L_DWNH_END_JMP: MOV.W wrcv_cntl,R0 ; load an information of controling to receive BCLR F_RCVMD_ASCII,R0 ; ASCII/binary = ASCII MOV.W R0,wrcv_cntl ; > JMP.W L_DWNH_STGUP ; --> ALL ; ; ----- continue receiving object data ----- ; L_DWNH_CONTINUE: MOV.W R0,wdwnh_len ; > renewal DWNH length JMP.W L_DWNH_END ; --> ALL ;------------------ ; STAGE11 ;------------------ CMD_DWNH_RCVSUM1: ; receiving checksum data(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bsum_awk ; checksum data(H)(ASCII) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE12 ;------------------ CMD_DWNH_RCVSUM2: ; receiving checksum data(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bsum_awk+1 ; > checksumd ata(L)(ASCII) JMP.W L_DWNH_STGUP ; --> ALL ;------------------ ; STAGE13 ;------------------ CMD_DWNH_RCVRCVE: ; judgment receiving [RCVE] & continuining ; ----- compare checksum by the unit of packet ----- MOV.B bchksum,R0L ; loading checksum data caliculated SHL.B #-4,R0L ; (H) AND.B #0FH,R0L ; mask JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,R1H ; > MOV.B bchksum,R0L ; loading a checksum data calculated AND.B #0FH,R0L ; mask(L) JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,R1L ; > ; ----- comparing checksum----- MOV.B bsum_awk,R0H ; load a checksum data(H) received MOV.B bsum_awk+1,R0L ; (L) CMP.W R0,R1 ; equal ? JEQ L_DWNH_RCVECHK ; --> YES ; ----- detect checksum ERR ----- MOV.B #C_CMD_ERR2,R0L ; ERR_2 MOV.B R0L,brtn_sts ; setting the status quo ; ----- judgment a received data ----- L_DWNH_RCVECHK: MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_RCVE,R0L ; [RCVE] command ? JEQ L_DWNH_STGUP ; --> YES ; ----- continue receiving packet ----- MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) MOV.B #1,R0L ; calculate stage number MOV.B R0L,bstage_no ; go to stage <1> JMP.W L_DWNH_END ; --> ALL ;------------------ ; STAGE14 ;------------------ CMD_DWNH_RCVEND2: ; [END] receiving MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END] command ? JEQ L_DWNH_NEXT ; --> YES ; ----- detect the trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo L_DWNH_NEXT: JMP.B CMD_DWNH_SNDDAT ; --> ALL ; ---- STGUP ----- L_DWNH_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_DWNH_END ; --> ALL ;------------------ ; STAGE15 ;------------------ CMD_DWNH_SNDDAT: ; return data & semding [END] ; ----- sending [START] ----- JSR.A S_START_SND ; ----- sending the status quo ----- MOV.B brtn_sts,R0L ; loading the status quo MOV.B R0L,bsnd_buf L_DWNH_SND10: JSR.A S_TRS ;[receiving] JC L_DWNH_SND10 ; --> BUSY ; ----- receiving [END] ----- JSR.A S_END_SND ; ----- end processing a series of command ----- Flash_Return: JSR.A S_CMDEXIT ; ----- end ----- L_DWNH_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_PB ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :set or clear a information of break points ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_PB ;--------------------------------------- CMD_PB: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; address calculate(X4) JMPI.A T_CMD_PB[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_PB_RCVSW: ; receiving a switching information MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bpb_sw ; > PB set/cancel JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_PB_RCVADR1: ; receiving address(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; start address(5th) MOV.B #C_CMD_0,R0L ; 6th = '0' revise MOV.B R0L,badr_awk ; JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_PB_RCVADR2: ; receiving address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_PB_RCVADR3: ; receiving address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_PB_RCVADR4: ; receiving address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_PB_RCVADR5: ; receiving address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; (4,3rd) MOV.W R0,bdat_ascbuf MOV.W R1,bdat_ascbuf+2 MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 JMP.W L_PB_001 ; match $M16C-02-9607 L_PB_001: JSR.A S_6_ATOH ; ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bpb_adrbuf ; PBaddress->buff MOV.W R1,bpb_adrbuf+2 ; JMP.W L_PB_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_PB_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_PB_SWCHK ; --> YES ; ----- detect trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_PB_NEXT ; --> ALL L_PB_SWCHK: MOV.B bpb_sw,R0L ; PB SW load CMP.B #C_CMD_0,R0L ; setting ? JEQ L_PB_SETMD ; --> YES ; ----- (1) cancel mode ----- JSR.A S_PBTBL_SERCH ; search address match CMP.W #0H,R0 ; Is there no address match ? JNE L_PB_CLR ; --> NO ; ----- detect undefined data----- MOV.B #C_CMD_ERRH,R0L ; ERR_H MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_PB_NEXT ; --> ALL ; ----- cancel a matched PB_? ----- L_PB_CLR: CMP.W #1,R0 ; Is it PB0 ? JNE L_PB_PB1CLR ; --> NO ; ----- cancel PB0 ----- MOV.B bpb_cntl,R1L ; loading PB control information AND.B #11111110B,R1L ; cancel PB0 MOV.B R1L,bpb_cntl ; > JMP.B L_PB_NEXT ; --> ALL L_PB_PB1CLR: ; ----- cancel PB1 ----- MOV.B bpb_cntl,R1L ; loading PB control information AND.B #11111101B,R1L ; cancel PB1 MOV.B R1L,bpb_cntl ; JMP.W L_PB_NEXT ; --> ALL L_PB_SETMD: ; ----- checking status if break point can be set -------------- MOV.B bpb_cntl,R0L ; PB control information load AND.B #3,R0L ; b0,b1 effective CMP.B #C_PB_MAX,R0L ; Is it can be set ? JEQ L_PB_NEXT ; --> NO (no action) ; ----- setting data ----- JSR.A S_PBTBL_SET ; setting data L_PB_NEXT: JMP.B CMD_PB_SNDDAT ; --> ALL ; ---- STGUP ----- L_PB_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_PB_END ; --> ALL ;------------------ ; STAGE15 ;------------------ CMD_PB_SNDDAT: ;return data & receiving [END] ; ----- [Sreceiving TART]----- JSR.A S_START_SND ; ----- receiving the status quo ----- MOV.B brtn_sts,R0L ;loading the status quo MOV.B R0L,bsnd_buf ; L_PB_SND10: JSR.A S_TRS ;[receiving] JC L_PB_SND10 ; --> BUSY ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command ----- JSR.A S_CMDEXIT ; ----- end ----- L_PB_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_PBCL ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_PBCL ;--------------------------------------- CMD_PBCL: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_PBCL[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_PBCL_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_PBCL_SETCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_PBCL_NEXT ; --> ALL L_PBCL_SETCHK: MOV.B bpb_cntl,R0L ; PB control information load CMP.B #0,R0L ; no setting information ? JNE L_PBCL_BCLR ; --> NO ; ----- detect undefined data----- MOV.B #C_CMD_ERRH,R0L ; ERR_H MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_PBCL_NEXT ; --> ALL ; ----- cancel all break point ----- L_PBCL_BCLR: MOV.B #0,R0L ; cancel all break point MOV.B R0L,bpb_cntl ; > MOV.B R0L,bspot_sw ; >immediate break = OFF L_PBCL_NEXT: ;------------------ ; STAGE1 ;------------------ CMD_PBCL_SNDDAT: ; return data & receiving [END] ; ----- [Sreceiving TART]----- JSR.A S_START_SND ; ----- receiving the status quo ----- MOV.B brtn_sts,R0L ; loading the status quo MOV.B R0L,bsnd_buf L_PBCL_SND10: JSR.A S_TRS ;[receiving] JC L_PBCL_SND10 ; --> BUSY ; ----- receiving [END]----- L_PBCL_ENDSND: JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_PBCL_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_GO ;--------------------------------------- CMD_GO: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_GO[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_GO_CHKTYPE: ; receiving execute1/2 & [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_GO_ADRRCV1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_EXE2,R0H ; command type= MOV.B R0H,bcmd_type ; > JMP.W L_GO_NEXT ; --> ALL ; ----- command ----- L_GO_ADRRCV1: ; receiving start address(1) MOV.B #C_CTYPE_EXE1,R0H ; command type= MOV.B R0H,bcmd_type ; > MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_GO_RCVADR2: ; receiving start address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_GO_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_GO_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_GO_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_GO_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; (4,3rd) MOV.W R0,bdat_ascbuf MOV.W R1,bdat_ascbuf+2 MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_GO_001 ; match $M16C-02-9607 L_GO_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bgo_adr ; > GO address MOV.W R1,bgo_adr+2 ; > JMP.W L_GO_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_GO_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_GO_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_GO_NEXT ; --> ALL L_GO_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module working ? JEQ L_GO_SYQ ; --> NO ; ----- checking the status quo ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_GO_NEXT ; --> ALL L_GO_SYQ: ; ----- (1)modify break point ----- BCLR:G AIER0 ; address match0 = OFF BCLR:G AIER1 ; address match1 = OFF ; ----- (2)modify address----- MOV.B bcmd_type,R0L ; command type load CMP.B #C_CTYPE_EXE1,R0L ; = command type? JNE L_GO_USRON ; --> NO ; ----- set user's start address ----- MOV.B bgo_adr,R0L ; load a start address(L) of GO command MOV.B bgo_adr+1,R0H ; "(M) MOV.B R0L,busr_pcl ; store address(L) MOV.B R0H,busr_pcm ; "(M) MOV.B bgo_adr+2,R0H ; load a start address(H) of go command MOV.B busr_flgpch,R0L ; load flags/PC(H) AND.W #0FF0H,R0 ; mask OR.B R0H,R0L MOV.B R0L,busr_flgpch L_GO_USRON: MOV.W wmoj_req,R0 ; loading a module REQ BSET F_MOJ_USR,R0 ; user module = ON BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req L_GO_NEXT: JMP.B CMD_GO_SNDDAT ; --> ALL ; ----- STGUP ----- L_GO_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_GO_END ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_GO_SNDDAT: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; load the status quo MOV.B R0L,bsnd_buf ; L_GO_SND10: JSR.A S_TRS ;[receiving] JC L_GO_SND10 ; --> BUSY ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_GO_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_GPB ;--------------------------------------- CMD_GPB: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_GPB[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_GPB_CHKTYPE: ; execute1/2 & receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_SP,R0L ; SP' ' ? JNE L_GPB_ADRRCV1 ; --> NO ; ----- command ----- ; ' ' not use SP MOV.B #C_CTYPE_EXE2,R0H ; command type= MOV.B R0H,bcmd_type ; MOV.B bstage_no,R0H ; stage number load ADD.B #6,R0H ; +6(revise) MOV.B R0H,bstage_no ; JMP.W CMD_GPB_RCVSP ; --> ALL ; ----- command ----- L_GPB_ADRRCV1: ; receiving a start address(1) MOV.B #C_CTYPE_EXE1,R0H ; command type= MOV.B R0H,bcmd_type ; MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_GPB_RCVADR2: ; receiving start address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_GPB_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_GPB_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_GPB_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_GPB_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; " (4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_GPB_001 ; match $M16C-02-9607 L_GPB_001: JSR.A S_6_ATOH ; chang ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bgb_adr ; > GPB start address MOV.W R1,bgb_adr+2 ; > JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_GPB_RCVSP: ;receiving [SP]; ----- cast data ----- JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_GPB_RCVBRK1: ; receiving break address(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_GPB_RCVBRK2: ; receiving break address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE9 ;------------------ CMD_GPB_RCVBRK3: ; receiving break address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE10 ;------------------ CMD_GPB_RCVBRK4: ; receiving break address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE11 ;------------------ CMD_GPB_RCVBRK5: ; receiving break address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE12 ;------------------ CMD_GPB_RCVBRK6: ; receiving break address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; break address load (6,5th) MOV.W badr_awk+2,R1 ; " (4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_GPB_002 ; match $M16C-02-9607 L_GPB_002: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bpb_adrbuf ; > GPB break address MOV.W R1,bpb_adrbuf+2 ; > JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE13 ;------------------ CMD_GPB_RCVPAS1: ; receiving pass count (1) MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ CMD_GPB_RCVEND ; --> YES ; ----- pass count (1)receiving ----- MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; > pass count (2nd) JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE14 ;------------------ CMD_GPB_RCVPAS2: MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; > pass count (1st) ; ----- pass count change (ASCII->hex)----- MOV.W #0,R0 ; 6,5,4,3rd = 0 MOV.W blen_awk+2,R1 ; pass count load (2,1st) MOV.W R0,bdat_ascbuf ; MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_GPB_003 ; match $M16C-02-9607 L_GPB_003: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; > MOV.W #1,R0 ; pass count = 1(default) MOV.W R0,wpass_cnt ; > pass count JMP.W L_GPB_STGUP ; --> ALL ;------------------ ; STAGE15 ;------------------ CMD_GPB_RCVEND: MOV.B bnow_code,R0L ; loading a decided data of received ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_GPB_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- L_GPB_ERR8: MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_GPB_NEXT ; --> ALL(only sending) L_GPB_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module working ? JEQ L_GPB_SETCHK ; --> NO ; ----- checking the status quo ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_GPB_NEXT ; --> ALL(only sending) ; ----- setting a immidiate break point ----- L_GPB_SETCHK: MOV.W bpb_adrbuf,R0 ; break address 1,2,3,5th MOV.W bpb_adrbuf+2,R1 ; break address 5,6,7,8th MOV.W:G R0,RMAD0L ; > address match registr0(L) MOV.B:G R1L,RMAD0H ; > " (H) BSET:G AIER0 ; permit address0 match = ON BCLR:G AIER1 ; permit address1 match= OFF MOV.B #1,R0L ; immediate break = ON MOV.B R0L,bspot_sw ;> ; ----- (2)addressoperation ----- MOV.B bcmd_type,R0L ; command type load CMP.B #C_CTYPE_EXE1,R0L ; command type ? JNE L_GPB_USRON ; --> NO ; ----- user start addresscreation ----- MOV.B bgb_adr,R0L ; load GPB start address(L) MOV.B bgb_adr+1,R0H ; "(M) MOV.B R0L,busr_pcl ; store address(L) MOV.B R0H,busr_pcm ; "(M) MOV.B bgb_adr+2,R0H ; GOstart address(H) load MOV.B busr_flgpch,R0L ; flag/PC(H) load AND.W #0FF0H,R0 ; mask OR.B R0H,R0L MOV.B R0L,busr_flgpch ; L_GPB_USRON: MOV.W wmoj_req,R0 ; loading module REQ BSET F_MOJ_USR,R0 ; user module = ON BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req ; > L_GPB_NEXT: JMP.B CMD_GPB_SNDDAT ; --> ALL ; ----- STGUP ----- L_GPB_STGUP: MOV.B bstage_no,R0H ; stage number load ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_GPB_END ; --> ALL ;------------------ ; STAGE16 ;------------------ CMD_GPB_SNDDAT: ; return data & receiving [END] ; ----- [Sreceiving TART]----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_GPB_SND10: JSR.A S_TRS ;[receiving] JC L_GPB_SND10 ; --> BUSY ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_GPB_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_GB ;--------------------------------------- CMD_GB: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_GB[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_GB_CHKTYPE: ; execute1/2 & receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_GB_ADRRCV1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_EXE2,R0H ; command type= MOV.B R0H,bcmd_type ; > JMP.W L_GB_NEXT ; --> ALL ; ----- command ----- L_GB_ADRRCV1: ; receiving start address(1) MOV.B #C_CTYPE_EXE1,R0H ; command type= MOV.B R0H,bcmd_type ; > MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_GB_RCVADR2: ; receiving start address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_GB_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_GB_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_GB_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_GB_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; "(4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_GB_001 ; match $M16C-02-9607 L_GB_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bgb_adr ; > GBaddress MOV.W R1,bgb_adr+2 ; > JMP.W L_GB_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_GB_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_GB_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_GB_NEXT ; --> ALL(only sending) L_GB_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is the user module working ? JEQ L_GB_PBSET ; --> NO ; ----- checking the status quo ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_GB_NEXT ; --> ALL(only sending) L_GB_PBSET: ; ----- (1)address operation ----- MOV.B bcmd_type,R0L ; load command type CMP.B #C_CTYPE_EXE1,R0L ; command type= ? JNE L_GB_STEPRDY ; --> NO ; ----- user start addresscreation ----- MOV.B bgb_adr,R0L ; load GB start address(L) MOV.B bgb_adr+1,R0H ; "(M) MOV.B R0L,busr_pcl ; store address(L) MOV.B R0H,busr_pcm ; "(M) MOV.B bgb_adr+2,R0H ; load start address(H) of go command MOV.B busr_flgpch,R0L ; load flug/PC(H) AND.W #0FF0H,R0 ; mask OR.B R0H,R0L MOV.B R0L,busr_flgpch ; ----- prepare for step interrup ----- L_GB_STEPRDY: ; ----- checking an information related specialpage ----- MOV.B busr_pcl,R1L ; get an address which will be executed next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_JMPS,R0L ; Is opecode "JMPS" ? JEQ L_GB_SPCMD ; --> YES CMP.B #C_OPE_JSRS,R0L ; IS opecode "JSRS" ? JEQ L_GB_SPCMD ; --> YES JMP.B L_GB_NRMLMD ; --> ALL ; ----- match JMPS/JSRS ----- L_GB_SPCMD: MOV.B #C_STEP_SPC,R0L ; an operation REQ related special page = ON MOV.B R0L,bspc_stepmd ; > JMP L_GB_USRON1 ; --> ALL L_GB_NRMLMD: ; ----- prepare for normal STEP----- MOV.B busr_flgl,R0L ; load flag(L) load MOV.B busr_flgpch,R0H ; flag(H) OR.W #8002H,R0 ; setting D & bit15 ; BSET 6,R0 ; set I flag when return to user's program ;ham;ham MOV.B R0L,busr_flgl ; > MOV.B R0H,busr_flgpch ; > ; ----- check next command (REIT) ----- MOV.B busr_pcl,R1L ; get address which will execute next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_REIT,R0L ; Is ope_code "REIT" ? JNE L_GB_USRON1 ; --> NO ; ----- revise user's REIT point ----- ; This program achieve controling user's program by revising ;stack to change return point. STC ISP,R0 ; preserve ISP(moniter) MOV.W R0,wisp_bkup ;> MOV.W wusr_isp,R0 ; load user ISP LDC R0,ISP ; MOV.B 2[SP],R0L ; set D (flag(L)) OR.B #02H,R0L MOV.B R0L,2[SP] MOV.B 3[SP],R0H OR.B #80H,R0H ; set bit15 MOV.B R0H,3[SP] MOV.W wisp_bkup,R0 ; return ISP(moniter) LDC R0,ISP ;> ;********************************************************;ham L_GB_USRON1: ; execute user's program for STEP processing MOV.W wmoj_req,R0 ; loading module REQ BSET F_MOJ_USR,R0 ; user module = ON BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req ; > ; ----- STGUP ----- L_GB_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_GB_END ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_GB_STEPCNTL: ; STEP control MOV.W wrcv_cntl,R1 ; loading an information of the recive controling BTST F_RCVMD_STEP,R1 ; receive STEP interrupt command ? JEQ L_GB_END ; --> NO ; ----- accept STEP ----- BCLR F_RCVMD_STEP,R1 ; STEP interrupt = OFF MOV.W R1,wrcv_cntl ; > MOV.B bstage_no,R0H ; renewal stage number ADD.B #1,R0H ; (cancel STEP interrupt) MOV.B R0H,bstage_no ; > ; MOV.B busr_flgl,R0L ; flag(L) load MOV.B busr_flgpch,R0H ; flag(H) AND.W #7FFDH,R0 ; D & ビット15 リセット BSET 6,R0 ;setting I flag ,returning to the user's program;ham;ham MOV.B R0L,busr_flgl ; > MOV.B R0H,busr_flgpch ; > L_GB_USRON2: ; execute user's program for GB ; ----- (1)setting break point ----- JSR.A S_PB_ON ; use the address match interrupt ; MOV.W wmoj_req,R0 ; loading module REQ BSET F_MOJ_USR,R0 ; user module = ON BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req ; > L_GB_NEXT: JMP.B CMD_GB_SNDDAT ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_GB_SNDDAT: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; load the status quo MOV.B R0L,bsnd_buf ; > L_GB_SND10: JSR.A S_TRS ;[receiving] JC L_GB_SND10 ; --> BUSY ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_GB_END: JMP.A L_CMD_EXIT ; --> go to moj_cmd ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_PROG ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_PROG ;--------------------------------------- CMD_PROG: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; address calculate(X4) JMPI.A T_CMD_PROG[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_PROG_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_PROG_NEXT ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo L_PROG_NEXT: ;------------------ ; STAGE1 ;------------------ CMD_PROG_SNDDAT: ; return data & receiving [END] ; ----- [Sreceiving TART]----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_PROG_SND10: JSR.A S_TRS ;[receiving] JC L_PROG_SND10 ; --> BUSY ; ----- runnin inreceiving ----- MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user's program working ? JNE L_PROG_TGTRUN ; --> YES MOV.B #C_CMD_1,R0L ; set status that the user's program stop MOV.B R0L,bsnd_buf ; > JMP.B L_PROG_SND20 ; --> ALL L_PROG_TGTRUN: MOV.B #C_CMD_0,R0L ; set status that the user's program is working MOV.B R0L,bsnd_buf ; > L_PROG_SND20: JSR.A S_TRS ;[receiving] JC L_PROG_SND20 ; --> BUSY ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_PROG_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_STOP ;--------------------------------------- CMD_STOP: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; address calculate(X4) JMPI.A T_CMD_STOP[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_STOP_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_STOP_USRCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo L_STOP_USRCHK: ; ----- internal processing ----- MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is the user's program working ? JEQ L_STOP_NEXT ; --> NO ; ----- user's program is working ----- BCLR F_MOJ_USR,R0 ; stop user's programing BSET F_MOJ_LED,R0 ; LED control module = ON ;; BCLR F_MOJ_SPC,R0 ; stop returning to the special area MOV.W R0,wmoj_req ; > MOV.B #C_BRKINF_FE,R0L ; break facter = F/E MOV.B R0L,bbrk_inf ; > MOV.B #0,R0L ; immediate break = OFF MOV.B R0L,bspot_sw ; > L_STOP_NEXT: ;------------------ ; STAGE1 ;------------------ CMD_STOP_SNDDAT: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_STOP_SND10: JSR.A S_TRS ;[receiving] JC L_STOP_SND10 ; --> BUSY ; ----- break factor receiving ----- MOV.B bbrk_inf,R0L ; paramater JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_STOP_SND20: JSR.A S_TRS ;[receiving] JC L_STOP_SND20 ; --> BUSY ; ----- program counter receiving ----- MOV.B #C_CMD_0,R0L ; 6th = '0' MOV.B R0L,bsnd_buf ; > L_STOP_SND30: JSR.A S_TRS ;[receiving] JC L_STOP_SND30 ; --> BUSY ; ; 5th MOV.B busr_flgpch,R0L ; PC(H) load AND.B #0FH,R0L ; set flag information JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_STOP_SND31: JSR.A S_TRS ;[receiving] JC L_STOP_SND31 ; --> BUSY ; ; 5th MOV.B busr_pcm,R0L ; load PC(M) SHL.B #-4,R0L ; JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_STOP_SND32: JSR.A S_TRS ;[receiving] JC L_STOP_SND32 ; --> BUSY ; ; 3rd MOV.B busr_pcm,R0L ; load PC(M) load AND.B #0FH,R0L JSR.A S_HTOA ; hex -> ASCII゙ MOV.B R0L,bsnd_buf ; L_STOP_SND33: JSR.A S_TRS ;[receiving] JC L_STOP_SND33 ; --> BUSY ; ; 2nd MOV.B busr_pcl,R0L ; PC(L) load SHL.B #-4,R0L JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_STOP_SND34: JSR.A S_TRS ;[receiving] JC L_STOP_SND34 ; --> BUSY ; ; 1st MOV.B busr_pcl,R0L ; PC(L) load AND.B #0FH,R0L JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_STOP_SND35: JSR.A S_TRS ;[receiving] JC L_STOP_SND35 ; --> BUSY L_STOP_ENDSND: ; ----- receiving [END]----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_STOP_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_STEP ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_STEP ;--------------------------------------- CMD_STEP: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; address calculate(X4) JMPI.A T_CMD_STEP[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_STEP_CHKTYPE: ; execute1/2 & receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_STEP_RCVEXE1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_EXE2,R0H ; command type= MOV.B R0H,bcmd_type ; > MOV.W #1,R0 ; the number of STEP = 1 MOV.W R0,wstep_cnt ; > ; MOV.B #C_CMD_0,R0L ; setting the data for preserving the number of STEP MOV.B R0L,bstep_acnt ; > 5th MOV.B R0L,bstep_acnt+1 ; > 3rd MOV.B R0L,bstep_acnt+2 ; > 2nd MOV.B #C_CMD_1,R0L MOV.B R0L,bstep_acnt+3 ; > 1st ; ----- adjust stage number(jump to a processing of stage 4) ----- MOV.B bstage_no,R0H ; stage number load ADD.B #4,R0H ; +4 MOV.B R0H,bstage_no ; > JMP.W L_STEP_RDY ; --> ALL ; ----- command ----- L_STEP_RCVEXE1: ; receiving the number of STEP (1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk ; > the number of STEP (5th) MOV.B R0L,bstep_acnt ; > preserve the number of STEP JMP.W L_STEP_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_STEP_RCVSTEP2: ; receiving the number of STEP (2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+1 ; > the number of STEP (3rd) MOV.B R0L,bstep_acnt+1 ; > preserve the number of STEP JMP.W L_STEP_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_STEP_RCVSTEP3: ; receiving the number of STEP (3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; > the number of STEP (2nd) MOV.B R0L,bstep_acnt+2 ; > preserve the number of STEP JMP.W L_STEP_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_STEP_RCVSTEP4: ; receiving the number of STEP (4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; > the number of STEP (1st) MOV.B R0L,bstep_acnt+3 ; > preserve the number of STEP ; ----- the number of STEP change ascii to hex(ASCII->hex)----- MOV.W #0,R0 ; 6,5th = 0 MOV.W R0,bdat_ascbuf ; MOV.W blen_awk,R0 ; load the number of STEP (4,3rd) MOV.W blen_awk+2,R1 ; " (2,1st) MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_STEP_001 ; match $M16C-02-9607 L_STEP_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; > MOV.W R0,wstep_cnt ; > the number of STEP JMP.W L_STEP_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_STEP_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_STEP_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo L_STEP_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module working ? JEQ L_STEP_RDY ; --> NO ; ----- check if the proguram is working ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo ; ; (reply without executing STEP) MOV.B bstage_no,R0H ; stage number load ADD.B #2,R0H ; +2 MOV.B R0H,bstage_no ; > JMP.W CMD_STEP_SNDDAT ; --> ALL ; ----- prepare STEP interrupt ----- L_STEP_RDY: ; ----- checking an information related specialpage ----- MOV.B busr_pcl,R1L ; get address which will execute next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_JMPS,R0L ; ope_code="JMPS" ? JEQ L_STEP_SPCMD ; --> YES CMP.B #C_OPE_JSRS,R0L ; ope_code="JSRS" ? JEQ L_STEP_SPCMD ; --> YES JMP.B L_STEP_NRMLMD ; --> ALL ; ----- match JMPS/JSRS ----- L_STEP_SPCMD: MOV.B #C_STEP_SPC,R0L ; an operation REQ related special page = ON MOV.B R0L,bspc_stepmd ; > JMP.B L_STEP_USRON ; --> ALL L_STEP_NRMLMD: ; ----- prepare for normal STEP----- MOV.B busr_flgl,R0L ; flag(L) load MOV.B busr_flgpch,R0H ; flag(H) OR.W #8002H,R0 ; set D & bit 15 ;; BCLR 6,R0 ;setting I flag ,returning to the user's program;ham;ham BSET 6,R0 ;setting I flag ,returning to the user's program;ham;ham MOV.B R0L,busr_flgl ; > MOV.B R0H,busr_flgpch ; > ; ----- check next command (REIT) ----- MOV.B busr_pcl,R1L ; get address which will execute next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_REIT,R0L ; ope_code =゙"REIT" ? JNE L_STEP_USRON ; --> NO ; ----- revise the return point for user's "reit" ----- STC ISP,R0 ; preserve ISP(monitor) MOV.W R0,wisp_bkup ;> MOV.W wusr_isp,R0 ; load user's ISP LDC R0,ISP MOV.B 2[SP],R0L ; set D (flag(L)) OR.B #02H,R0L MOV.B R0L,2[SP] MOV.B 3[SP],R0H ; set bit15 OR.B #80H,R0H MOV.B R0H,3[SP] MOV.W wisp_bkup,R0 ; return ISP(monitor) LDC R0,ISP .IF DBG==ON ADD.W #1,dbg_reitrdy .ENDIF L_STEP_USRON: .IF DBG==ON ADD.W #1,dbg_allrdy ; .ENDIF MOV.W wmoj_req,R0 ; loading module REQ BSET F_MOJ_USR,R0 ; status of executing user's program = ON BSET F_MOJ_LED,R0 ; LED control module = ON MOV.W R0,wmoj_req ; ----- STGUP ----- L_STEP_STGUP: MOV.B bstage_no,R0H ; stage number load ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_STEP_END ; --> ALL ;------------------ ; STAGE5 ; R1:wrcv_cntl ;------------------ CMD_STEP_CNTL: MOV.W wrcv_cntl,R1 ; load an infromation of the receive controling BTST F_RCVMD_STEP,R1 ; receiving STEPinterrupt ? JEQ L_STEP_INITCHK ; --> NO ; ----- accept STEP ----- BCLR F_RCVMD_STEP,R1 ; STEPinterrup = OFF MOV.W R1,wrcv_cntl ; > MOV.W wstep_cnt,R0 ; STEP count load SUB.W #1,R0 ; -1 MOV.W R0,wstep_cnt ; > CMP.W #0,R0 ; end? JEQ L_STEP_STOP ; --> YES ; ----- continue STEP ----- ; ----- check an operation REQ related special page ----- MOV.B busr_pcl,R1L ; get address which will execute next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_JMPS,R0L ; ope_code ="JMPS" ? JEQ L_STEP_SPCMD2 ; --> YES CMP.B #C_OPE_JSRS,R0L ; ope_code-"JSRS" ? JEQ L_STEP_SPCMD2 ; --> YES JMP.B L_STEP_NRMLMD2 ; --> ALL ; ----- match JMPS/JSRS ----- L_STEP_SPCMD2: MOV.B #C_STEP_SPC,R0L ; an operation REQ related special page = ON MOV.B R0L,bspc_stepmd ; > JMP.W L_STEP_END ; --> ALL L_STEP_NRMLMD2: MOV.B busr_flgl,R0L ; load flag(L) MOV.B busr_flgpch,R0H ; flag(H) OR.W #8002H,R0 ; set D & bit15 BSET 6,R0 ; setting I flag ,returning to the user's program;ham;ham MOV.B R0L,busr_flgl ; > MOV.B R0H,busr_flgpch ; > ; ----- check next command (REIT) ----- MOV.B busr_pcl,R1L ; get address which will execute next MOV.B busr_pcm,R1H MOV.B busr_flgpch,R0L AND.W #000FH,R0 MOV.W R1,A0 MOV.W R0,A1 LDE.B [A1A0],R0L CMP.B #C_OPE_REIT,R0L ; ope_code=゙"REIT"? JNE L_STEP_END ; --> NO ; ----- revise user's REIT point ----- STC ISP,R0 ; preserve ISP(monitor) MOV.W R0,wisp_bkup ; MOV.W wusr_isp,R0 ; load ISP(user) LDC R0,ISP MOV.B 2[SP],R0L ; set D (flag(L)) OR.B #02H,R0L MOV.B R0L,2[SP] MOV.B 3[SP],R0H ; OR.B #80H,R0H ; set bit15 MOV.B R0H,3[SP] ; MOV.W wisp_bkup,R0 ; return ISP(monitor) LDC R0,ISP ;> JMP.W L_STEP_END ; --> ALL L_STEP_INITCHK: BTST F_RCVMD_INIT,R1 ; receiving INIT ? JEQ L_STEP_ERRL ; --> NO ; ----- receiving INIT----- BCLR F_RCVMD_INIT,R1 ; receiving INIT = OFF MOV.W R1,wrcv_cntl ; JMP.W L_STEP_STOP ; --> ALL L_STEP_ERRL: ; ----- check an exception processing ----- MOV.B brtn_sts,R0L ; MOV.B #C_CMD_ERRL,R0L ; ERR_L MOV.B R0L,brtn_sts ; setting the status quo ; ----- STEPend ----- L_STEP_STOP: MOV.W wmoj_req,R0 ; stop executing user's program ;ham for STEP BCLR F_MOJ_USR,R0 ; ;ham BSET F_MOJ_LED,R0 ; LED control module = ON ;ham MOV.W R0,wmoj_req ; > MOV.B bstage_no,R0H ; renewal stage number ADD.B #1,R0H ; (cancel STEPinterrupt) MOV.B R0H,bstage_no ; ; MOV.B busr_flgl,R0L ; loading flag(L) MOV.B busr_flgpch,R0H ; flag(H) AND.W #7FFDH,R0 ; reset D & bit15 MOV.B R0L,busr_flgl ; > MOV.B R0H,busr_flgpch ; > .IF DBG==ON ADD.W #1,dbg_reitend ; JMP.W CMD_STEP_SNDDAT ; .ENDIF L_STEP_NEXT: ;------------------ ; STAGE5 ;------------------ CMD_STEP_SNDDAT: ; ----- receiving [START] ----- JSR.A S_START_SND ; ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; load the status quo MOV.B R0L,bsnd_buf ; > L_STEP_SND10: JSR.A S_TRS ;[receiving] JC L_STEP_SND10 ; --> BUSY ; ----- or ----- MOV.W wstep_cnt,R0 ; CMP.W #0,R0 ; count0 or (normal) ? JNE L_STEP_ENDSND ; --> NO ; ----- ----- MOV.B bstep_acnt,R0L ; load the number of STEP (5th) MOV.B R0L,bsnd_buf ; > L_STEP_SND20: JSR.A S_TRS ;[receiving] JC L_STEP_SND20 ; --> BUSY MOV.B bstep_acnt+1,R0L ; load the number of STEP (3rd) MOV.B R0L,bsnd_buf ; > L_STEP_SND21: JSR.A S_TRS ;[receiving] JC L_STEP_SND21 ; --> BUSY MOV.B bstep_acnt+2,R0L ; the number of STEP (2nd) load MOV.B R0L,bsnd_buf ; > L_STEP_SND22: JSR.A S_TRS ;[receiving] JC L_STEP_SND22 ; --> BUSY MOV.B bstep_acnt+3,R0L ; the number of STEP (1st) load MOV.B R0L,bsnd_buf ; > L_STEP_SND23: JSR.A S_TRS ;[receiving] JC L_STEP_SND23 ; --> BUSY L_STEP_ENDSND: ; ----- receiving [END] ----- JSR.A S_END_SND ; ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ; ----- end ----- L_STEP_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_XREG ;--------------------------------------- CMD_XREG: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_XREG[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_XREG_CHKTYPE1: ; receiving refer1/refer2/refer creation & [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_XREG_REGRCV1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_VIEW2,R0H ; command type= MOV.B R0H,bcmd_type ; > JMP.W L_XREG_NEXT ; --> ALL ; ----- orcommand ----- L_XREG_REGRCV1: ; receiving register number1(上位) SHL.W #8,R0 ; (L)->(H) MOV.W R0,wreg_no ; set appointment register number(H) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_XREG_RCVREG2: ; receiving register number(2) MOV.W wreg_no,R0 ; load appointment register number(H) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.W R0,wreg_no ; store appointment register number JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_XREG_CHKTYPE2: ; receiving refer1/creationjudgment & [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_XREG_DATRCV ; --> NO ; ----- command ----- MOV.B #C_CTYPE_VIEW1,R0H ; command type= MOV.B R0H,bcmd_type ; > JMP.W L_XREG_NEXT ; --> ALL ; ----- ----- L_XREG_DATRCV: ; receiving renewal data(1) MOV.B #C_CTYPE_SET,R0H ; command type= MOV.B R0H,bcmd_type ; > ; ----- judgment 6 or 4 Byte type ----- MOV.W wreg_no,R0 ; load register number CMP.W #C_REG_PC,R0 ; PC ? JEQ L_XREG_6BYTE ; --> YES CMP.W #C_REG_INTB,R0 ; INTB ? JEQ L_XREG_6BYTE ; --> YES ; ----- 4 Byte type----- MOV.B bstage_no,R0H ; stage number load ADD.B #2,R0H ; +2 (revise stage number) MOV.B R0H,bstage_no ; > for changing 6 figure to 4 figure ; MOV.W #0,R0 MOV.W R0,bdat_ascbuf ; 6,5th = 0 JMP.B CMD_XREG_RCVDAT3 ; --> ALL receiving 5th ; ----- 6 Byte type----- L_XREG_6BYTE: ; receiving renewal data(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf ; preserve 6th(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_XREG_RCVDAT2: ; receiving renewal data(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf+1 ; preserve 5th(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_XREG_RCVDAT3: ; receiving renewaldata(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf+2 ; preserve 5th(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_XREG_RCVDAT4: ; receiving renewaldata(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf+3 ; preserve 3rd(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_XREG_RCVDAT5: ; receiving renewaldata(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf+4 ; preserve 2nd(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_XREG_RCVDAT6: ; receiving renewaldata(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdat_ascbuf+5 ; preserve 1st(ASCII) JMP.W L_XREG_STGUP ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_XREG_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_XREG_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_XREG_NEXT ; --> ALL L_XREG_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; Is user module working ? JEQ L_XREG_CHANGE ; --> NO ; ----- checking the status quo ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo JMP.B L_XREG_NEXT ; --> ALL(only sending) L_XREG_CHANGE: ; ----- renewal contens of registers ----- JSR.A S_REG_CHANGE ; L_XREG_NEXT: JMP.B CMD_XREG_SNDDAT ; --> ALL ; ----- STGUP ----- L_XREG_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_XREG_END ; --> ALL ;------------------ ; STAGE9 ;------------------ CMD_XREG_SNDDAT: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; load the status quo MOV.B R0L,bsnd_buf ; L_XREG_SND10: JSR.A S_TRS ;[receiving] JC L_XREG_SND10 ; --> BUSY ; ----- processing by command type ----- MOV.B bcmd_type,R0L ; load command type CMP.B #C_CTYPE_VIEW1,R0L ; JEQ L_XREG_VIEW1 ; --> YES CMP.B #C_CTYPE_VIEW2,R0L ; JEQ L_XREG_VIEW2 ; --> YES JMP.B L_XREG_ENDSND ; --> ALL ; ----- match command ----- L_XREG_VIEW1: JSR.A S_REG_SND ; receiving register(an appointted register) JMP.B L_XREG_ENDSND ; --> ALL ; ----- match command ----- L_XREG_VIEW2: MOV.W #0FFFFH,R0 ; select all register MOV.W R0,wreg_no JMP.W L_XREG_001 ; match $M16C-02-9607 L_XREG_001: JSR.A S_REG_SND ; receiving register (all) ; ---- match command ----- L_XREG_ENDSND: ; ----- receiving [END] ----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_XREG_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_DUMP ;--------------------------------------- CMD_DUMP: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_DUMP[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_DUMP_RCVADR1: ; start address(1)receiving | data sizereceiving MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bchk_wk ; immediatal preservatin to work memory for judgment ; data size or start address(6th) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_DUMP_RCVADR2: ; receiving start address(2) & judgment type3/2,1 MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_DUMP_ADRRCV2 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_TYPE3,R0H ; command type= MOV.B R0H,bcmd_type ; > MOV.B bchk_wk,R0L ; load immediatal preservatin to work memory for judgment MOV.B R0L,bdump_size ; > decided data size JMP.W CMD_DUMP_SNDADR1 ; --> ALL ; ----- orcommand ----- L_DUMP_ADRRCV2: MOV.B bchk_wk,R0L ; load immediatal preservatin to work memory for judgment MOV.B R0L,badr_awk ; > start address(6th) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_DUMP_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_DUMP_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_DUMP_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_DUMP_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_DUMP_RCVSIZE: ; receiving data size MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bdump_size ; > data size JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_DUMP_RCVLEN1: ; receiving data length(1) & type2/type1judgment MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JNE L_DUMP_LENRCV1 ; --> NO ; ----- command ----- MOV.B #C_CTYPE_TYPE2,R0H ; command type= MOV.B R0H,bcmd_type ; > JMP.W CMD_DUMP_SNDADR1 ; --> ALL ; ----- command ----- L_DUMP_LENRCV1: MOV.B #C_CTYPE_TYPE1,R0H ; command type= MOV.B R0H,bcmd_type ; > MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk ; > length(5th) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_DUMP_RCVLEN2: ; receiving datalength(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+1 ; > length(3rd) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE9 ;------------------ CMD_DUMP_RCVLEN3: ; receiving datalength(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; > length(2nd) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE10 ;------------------ CMD_DUMP_RCVLEN4: ; receiving datalength(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; > length(1st) JMP.W L_DUMP_STGUP ; --> ALL ;------------------ ; STAGE11 ;------------------ CMD_DUMP_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_DUMP_NEXT ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo L_DUMP_NEXT: JMP.B CMD_DUMP_SNDADR1 ; --> ALL ; ----- STGUP ----- L_DUMP_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_DUMP_END ; --> ALL ;------------------ ; STAGE12 ;------------------ CMD_DUMP_SNDADR1: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; load the status quo MOV.B R0L,bsnd_buf ; > L_DUMP_SND10: JSR.A S_TRS ;[receiving] JC L_DUMP_SND10 ; --> BUSY ; MOV.W wsnd_cntl,R0 ; load a receiving information BSET F_SNDMD_ASCII,R0 ; set ASCII mode MOV.W R0,wsnd_cntl ; > MOV.B #0,R0L ; a checksum tortal = 0 MOV.B R0L,bchksum_buf ; > ; ----- processing for each command type ----- MOV.B bcmd_type,R0L ; load command type CMP.B #C_CTYPE_TYPE1,R0L ; JEQ L_DUMP_TYPE1 ; --> YES CMP.B #C_CTYPE_TYPE2,R0L ; JEQ L_DUMP_TYPE2 ; --> YES ; ----- match command ----- L_DUMP_TYPE3: ; ----- renewal first address(the last time +1) ----- MOV.W bdump_adr,R0 ; loading start address MOV.W bdump_adr+2,R1 ADD.W #1,R0 ; +1 ADC.W #0,R1 MOV.W R0,bdump_adr ; > preserve data MOV.W R1,bdump_adr+2 ; > MOV.W R0,bstart_adr ; > work MOV.W R1,bstart_adr+2 ; > ; MOV.W #1,R0 ; length = 1 MOV.W R0,wdump_len ; > JMP.W L_DUMP_SNDLOOP ; --> ; ----- match command ----- L_DUMP_TYPE2: MOV.W #1,R0 ; length = 1 MOV.W R0,wdump_len ; > JMP.W L_DUMP_T1_CHGADR ; --> ALL ; ----- match command ----- L_DUMP_TYPE1: ; ----- lengthchange ascii to hex(ASCII->hex)----- MOV.W #0,R0 ; 6,5th = 0 MOV.W R0,bdat_ascbuf ; MOV.W blen_awk,R0 ; length load (4,3rd) MOV.W blen_awk+2,R1 ; " (2,1st) MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_DUMP_001 ; match $M16C-02-9607 L_DUMP_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; > MOV.W R0,wdump_len ; > ; ----- changing address(ascii -> hex)----- L_DUMP_T1_CHGADR: MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; " (4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_DUMP_002 ; match $M16C-02-9607 L_DUMP_002: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bdump_adr ; > DUMPaddress MOV.W R1,bdump_adr+2 ; > MOV.W R0,bstart_adr ; > a paramater for S_BYTE_BSND MOV.W R1,bstart_adr+2 ; > " L_DUMP_SNDLOOP: ; ----- check size ----- MOV.B bdump_size,R0L ; load DUMPdata size CMP.B #C_SIZE_WORD,R0L ; WORD size ? JNE L_DUMP_T1_BYTE ; --> NO(Byte size) ; ----- match word size ----- MOV.B bdump_adr,R0L ; load 1,2nd AND.B #0FEH,R0L ; revise an odd address (-1) MOV.B R0L,bdump_adr ; > MOV.B R0L,bstart_adr ; > paramater for S_BYTE_BSND ; ----- 1Byte receiving ----- JSR.A S_BYTE_BSND ; receiving 1Byte ; ----- renewal address ----- MOV.W bdump_adr,R0 ; loading start address MOV.W bdump_adr+2,R1 ADD.W #1,R0 ; +1 ADC.W #0,R1 MOV.W R0,bdump_adr ; > preserve data MOV.W R1,bdump_adr+2 ; > MOV.W R0,bstart_adr ; > paramater for S_BYTE_BSND MOV.W R1,bstart_adr+2 ; > " L_DUMP_T1_BYTE: ; ---- 1Byte receiving---- JMP.W L_DUMP_003 ; match $M16C-02-9607 L_DUMP_003: JSR.A S_BYTE_BSND ; receiving 1Byte ; MOV.W wdump_len,R0 ; SUB.W #1,R0 ; renewal length(-1) CMP.W #0,R0 ; --> end ? JEQ L_DUMP_CHKSND ; --> YES MOV.W R0,wdump_len ; ----- renewal address----- MOV.W bdump_adr,R0 ; loading start address MOV.W bdump_adr+2,R1 ADD.W #1,R0 ; +1 ADC.W #0,R1 MOV.W R0,bdump_adr ; > preserve data MOV.W R1,bdump_adr+2 ; > MOV.W R0,bstart_adr ; > work MOV.W R1,bstart_adr+2 ; > JMP.W L_DUMP_SNDLOOP ; --> ALL ; ----- receiving checksum & return ASCII mode ----- L_DUMP_CHKSND: MOV.W wsnd_cntl,R0 ; load an information of receive control BCLR F_SNDMD_ASCII,R0 MOV.W R0,wsnd_cntl ; MOV.B bchksum,R0L ; load checksum data SHL.B #-4,R0L ; (H) AND.B #0FH,R0L ; mask JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_DUMP_T3_CHKSND1: JSR.A S_TRS ;[receiving] JC L_DUMP_T3_CHKSND1 ; --> BUSY MOV.B bchksum,R0L ; load checksum data AND.B #0FH,R0L ; mask(L) JSR.A S_HTOA ; hex -> ASCII MOV.B R0L,bsnd_buf ; > L_DUMP_T3_CHKSND2: JSR.A S_TRS ;[receiving] JC L_DUMP_T3_CHKSND2 ; --> BUSY ; L_DUMP_ENDSND: ; ----- receiving [END] ----- JSR.A S_END_SND ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ----- end ----- L_DUMP_END: JMP.A L_CMD_EXIT ; --> moj_cmd ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_FILL ;--------------------------------------- CMD_FILL: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; address calculate(X4) JMPI.A T_CMD_FILL[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_FILL_RCVADR1: ; receiving start address(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk ; > start address(6th) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_FILL_RCVADR2: ; receiving start address(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+1 ; > start address(5th) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE2 ;------------------ CMD_FILL_RCVADR3: ; receiving start address(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+2 ; > start address(5th) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE3 ;------------------ CMD_FILL_RCVADR4: ; receiving start address(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+3 ; > start address(3rd) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE4 ;------------------ CMD_FILL_RCVADR5: ; receiving start address(5) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+4 ; > start address(2nd) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE5 ;------------------ CMD_FILL_RCVADR6: ; receiving start address(6) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,badr_awk+5 ; > start address(1st) ; ----- changing address(ascii -> hex)----- MOV.W badr_awk,R0 ; loading start address(6,5th) MOV.W badr_awk+2,R1 ; " (4,3rd) MOV.W R0,bdat_ascbuf ; MOV.W R1,bdat_ascbuf+2 ; MOV.W badr_awk+4,R0 ; (2,1st) MOV.W R0,bdat_ascbuf+4 ; JMP.W L_FILL_001 ; match $M16C-02-9607 L_FILL_001: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W bdat_16buf+2,R1 ; MOV.W R0,bfill_adr ; > FILLaddress MOV.W R1,bfill_adr+2 ; > JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE6 ;------------------ CMD_FILL_RCVCNT1: ; receiving a repeating time(1) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk ; > time (5th) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE7 ;------------------ CMD_FILL_RCVCNT2: ; receiving a repeating time(2) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+1 ; > time(3rd) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE8 ;------------------ CMD_FILL_RCVCNT3: ; receiving a repeating time(3) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; > time(2nd) JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE9 ;------------------ CMD_FILL_RCVCNT4: ; receiving a repeating time(4) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; > time(1st) ; ----- timechange ascii to hex(ASCII->hex)----- MOV.W #0,R0 ; 6,5th = 0 MOV.W R0,bdat_ascbuf ; MOV.W blen_awk,R0 ; load time (4,3rd) MOV.W blen_awk+2,R1 ; " (2,1st) MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_FILL_002 ; match $M16C-02-9607 L_FILL_002: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; MOV.W R0,wfill_cnt ; > JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE10 ;------------------ CMD_FILL_RCVSIZE: ; receiving data size MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bfill_size ; >data size JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE11 ;------------------ CMD_FILL_RCVDAT1: ;receiving FILLdata(5th) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk ; >data JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE12 ;------------------ CMD_FILL_RCVDAT2: ; receiving FILLdata(3rd) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+1 ; >data JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE13 ;------------------ CMD_FILL_RCVDAT3: ; receiving FILLdata(2nd) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+2 ; >data JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE14 ;------------------ CMD_FILL_RCVDAT4: ; receiving FILLdata(1st) MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,blen_awk+3 ; >data ; ----- FILLdatachange ascii to hex(ASCII->hex)----- MOV.W #0,R0 ; 6,5th = 0 MOV.W R0,bdat_ascbuf ; MOV.W blen_awk,R0 ; FILLdata load (4,3rd) MOV.W blen_awk+2,R1 ; " (2,1st) MOV.W R0,bdat_ascbuf+2 ; MOV.W R1,bdat_ascbuf+4 ; JMP.W L_FILL_003 ; match $M16C-02-9607 L_FILL_003: JSR.A S_6_ATOH ; change ascii to hex MOV.W bdat_16buf,R0 ; > MOV.W R0,wfill_dat ; FILLdata JMP.W L_FILL_STGUP ; --> ALL ;------------------ ; STAGE15 ;------------------ CMD_FILL_RCVEND: ; receiving [END] MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_FILL_ODDCHK ; --> YES ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_FILL_NEXT ; --> ALL L_FILL_ODDCHK: ; ----- detect ERR (WORD FILL to an odd address) ----- MOV.B bfill_size,R0L ; load FILLdata size CMP.B #C_SIZE_WORD,R0L ; WORD size ? JNE L_FILL_PUTDAT ; --> NO(OK) ; ----- check address ----- MOV.B bfill_adr,R0L ; load 1,2nd BTST 0,R0 ; an odd address ? JEQ L_FILL_PUTDAT ; --> NO(OK) ; ----- detect a trigger ERR ----- MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_FILL_NEXT ; --> ALL ; ----- modify FILL ----- L_FILL_PUTDAT: MOV.W bfill_adr+2,A1 ; address(H) AND.W #000FH,A1 ; mask 8,7,6th MOV.W bfill_adr,A0 ; address(M,L) CMP.W #0CH,A1 ; Is fist figure C ? ;ham_C; JC L_FILL_NEXT ; yes-> end ;ham ;CMP.W #0FH,A1 ; Is fist figure F? ;ham_C; ;JZ L_FILL_NEXT ;yes->end ;ham MOV.W wfill_dat,R0 ; load FILLdata STE.B R0L,[A1A0] ; locate data (L) ; ----- renewal address 1 ----- ADD.W #1,A0 ; +1 ADC.W #0,A1 ; ----- judgment size ----- MOV.B bfill_size,R0L ; load FILLdata size CMP.B #C_SIZE_WORD,R0L ; WORD size ? JNE L_FILL_STRDAT ; --> NO(BYTE) ; STE.B R0H,[A1A0] ; locate data(H) ; ----- renewal address2 ----- ADD.W #1,A0 ; +1 ADC.W #0,A1 L_FILL_STRDAT: MOV.W A0,bfill_adr ; > preserve data MOV.W A1,bfill_adr+2 ; > ; ----- renewal a recived repeating time ----- ; MOV.W wfill_cnt,R0 ; load time SUB.W #1,R0 ; -1 MOV.W R0,wfill_cnt ; > CMP.W #0,R0 ; end ? JNE L_FILL_PUTDAT ; --> NO(LOOP) L_FILL_NEXT: JMP.B CMD_FILL_SNDDAT ; --> ALL ; ----- STGUP ----- L_FILL_STGUP: MOV.B bstage_no,R0H ; load stage number ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_FILL_END ; --> ALL ;------------------ ; STAGE16 ;------------------ CMD_FILL_SNDDAT: ; return data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_FILL_SND10: JSR.A S_TRS ;[receiving] JC L_FILL_SND10 ; --> BUSY ; ----- receiving [END] ----- JSR.A S_END_SND ; ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ; ----- end ----- L_FILL_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; ; @ CMD_MOVE ; ;--------------------------------------- ; CMD_MOVE: ; MOV.B bstage_no,A0 ; loading a decided data in recived ones ; SHL.W #2,A0 ; addresscalculate(X4) ; JMPI.A T_CMD_MOVE[A0] ; -->go to each internal processing ; ;------------------ ; ; STAGE0 ; ;------------------ ; CMD_MOVE_RCVSRC1: ; Transfer cause address(1)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk ; > Transfer cause address(6th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE1 ; ;------------------ ; CMD_MOVE_RCVSRC2: ; Transfer cause address(2)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+1 ; > Transfer cause address(5th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE2 ; ;------------------ ; CMD_MOVE_RCVSRC3: ; Transfer cause address(3)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+2 ; > Transfer cause address(5th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE3 ; ;------------------ ; CMD_MOVE_RCVSRC4: ; Transfer cause address(4)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+3 ; > Transfer cause address(3rd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE4 ; ;------------------ ; CMD_MOVE_RCVSRC5: ; Transfer cause address(5)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+4 ; > Transfer cause address(2nd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE5 ; ;------------------ ; CMD_MOVE_RCVSRC6: ; Transfer cause address(6)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+5 ; > Transfer cause address(1st) ; ; ----- changing address(ascii -> hex)----- ; MOV.W badr_awk,R0 ; Transfer cause address load (6,5th;) MOV.W badr_awk+2,R1 ; " (4,3rd) ; MOV.W R0,bdat_ascbuf ; ; MOV.W R1,bdat_ascbuf+2 ; ; MOV.W badr_awk+4,R0 ; (2,1st) ; MOV.W R0,bdat_ascbuf+4 ; ; JMP.W L_MOVE_001 ; match $M16C-02-9607 ; L_MOVE_001: ; JSR.A S_6_ATOH ; change ascii to hex ; MOV.W bdat_16buf,R0 ; ; MOV.W bdat_16buf+2,R1 ; ; MOV.W R0,bmove_srcadr ; > address ; MOV.W R1,bmove_srcadr+2 ; > ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE6 ; ;------------------ ; CMD_MOVE_RCVDST1: ; destination address(1)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk ; > destinationaddress(6th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE7 ; ;------------------ ; CMD_MOVE_RCVDST2: ; destinationaddress(2)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+1 ; > destinationaddress(5th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE8 ; ;------------------ ; CMD_MOVE_RCVDST3: ; destinationaddress(3)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+2 ; > destinationaddress(5th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE9 ; ;------------------ ; CMD_MOVE_RCVDST4: ; destinationaddress(4)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+3 ; > destinationaddress(3rd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE10 ; ;------------------ ; CMD_MOVE_RCVDST5: ; destinationaddress(5)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+4 ; > destinationaddress(2nd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE11 ; ;------------------ ; CMD_MOVE_RCVDST6: ; destinationaddress(6)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,badr_awk+5 ; > destinationaddress(1st) ; ; ----- changing address(ascii -> hex)----- ; MOV.W badr_awk,R0 ; destinationaddress load (6,5th;) MOV.W badr_awk+2,R1 ; " (4,3rd) ; MOV.W R0,bdat_ascbuf ; ; MOV.W R1,bdat_ascbuf+2 ; ; MOV.W badr_awk+4,R0 ; (2,1st) ; MOV.W R0,bdat_ascbuf+4 ; ; JMP.W L_MOVE_002 ; match $M16C-02-9607 ; L_MOVE_002: ; JSR.A S_6_ATOH ; change ascii to hex ; MOV.W bdat_16buf,R0 ; ; MOV.W bdat_16buf+2,R1 ; ; MOV.W R0,bmove_dstadr ; > address ; MOV.W R1,bmove_dstadr+2 ; > ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE12 ; ;------------------ ; CMD_MOVE_RCVLEN1: ; datalength(1)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,blen_awk ; > length(5th) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE13 ; ;------------------ ; CMD_MOVE_RCVLEN2: ; datalength(2)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,blen_awk+1 ; > length(3rd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE14 ; ;------------------ ; CMD_MOVE_RCVLEN3: ; datalength(3)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,blen_awk+2 ; > length(2nd) ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE15 ; ;------------------ ; CMD_MOVE_RCVLEN4: ; datalength(4)receiving ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; MOV.B R0L,blen_awk+3 ; > length(1st) ; ; ----- lengthchange ascii to hex(ASCII->hex)----- ; MOV.W #0,R0 ; 6,5th = 0 ; MOV.W R0,bdat_ascbuf ; ; MOV.W blen_awk,R0 ; length load (4,3rd) ; MOV.W blen_awk+2,R1 ; " (2,1st) ; MOV.W R0,bdat_ascbuf+2 ; ; MOV.W R1,bdat_ascbuf+4 ; ; JMP.W L_MOVE_003 ; match $M16C-02-9607 ; L_MOVE_003: ; JSR.A S_6_ATOH ; change ascii to hex ; MOV.W bdat_16buf,R0 ; > ; MOV.W R0,wmove_len ; > ; JMP.W L_MOVE_STGUP ; --> ALL ; ;------------------ ; ; STAGE16 ; ;------------------ ; CMD_MOVE_RCVEND: ; receiving [END] ; MOV.B bnow_code,R0L ; loading a decided data in recived ones ; CMP.B #C_CMD_END,R0L ; [END]command ? ; JEQ L_MOVE_RUNCHK ; --> YES ; ; ----- detect a trigger ERR ----- ; MOV.B #C_CMD_ERR8,R0L ; ERR_8 ; MOV.B R0L,brtn_sts ; setting the status quo ; JMP.W L_MOVE_NEXT ; --> ALL ; L_MOVE_RUNCHK: ; MOV.W wmoj_req,R0 ; loading module REQ ; BTST F_MOJ_USR,R0 ; Is user module done ? ; JEQ L_MOVE_CHKOVER ; --> NO ; ; ----- check if the proguram is working ----- ; MOV.B #C_CMD_ERR4,R0L ; ERR_4 ; MOV.B R0L,brtn_sts ; setting the status quo ; JMP.W L_MOVE_NEXT ; --> ALL ; ; ; (reply with out executing MOVE ); L_MOVE_CHKOVER: ; over check ; ; ----- Transfer cause + length check ----- ; ----- destination + length check ----- L_MOVE_MOVE: ; ----- 転送operation ----- MOV.W bmove_srcadr+2,A1 ; Transfer cause address(H) AND.W #00FFH,A1 ;mask 8,7 of figure MOV.W bmove_srcadr,A0 ; Transfer cause address(M,L) LDE.B [A1A0],R1L ; data taking shelter ; MOV.W A0,R2 ; address taking shelter ; MOV.W A1,R3 ; " ; ; MOV.W bmove_dstadr+2,A1 ; destinationaddress(H) AND.W #0FH,A1 CMP.W #0CH,A1 ; Is destination smaller than C0000H ? JC L_MOVE_NEXT ;NO->end operation MOV.W bmove_srcadr+2,A1 ; Transfer cause address(H) MOV.W bmove_dstadr,A0 ; destinationaddress(M,L) STE.B R1L,[A1A0] ; > ; ----- endjudgment ----- MOV.W wmove_len,R0 ; length load SUB.W #1,R0 ; -1 MOV.W R0,wmove_len ; > CMP.W #0,R0 ; end? JEQ L_MOVE_NEXT ; --> YES ; ----- Renewal treatment ----- ADD.W #1,A0 ; destinationaddress ADC.W #0,A1 ; MOV.W A0,bmove_dstadr ; > destinationaddress(M,L) MOV.W A1,bmove_dstadr+2 ; > " (H) ; ; ADD.W #1,R2 ; Transfer cause address ; ADC.W #0,R3 ; " ; MOV.W R2,bmove_srcadr ; > Transfer cause address(M,L) ; MOV.W R3,bmove_srcadr+2 ; > " (H) ; JMP.B L_MOVE_MOVE ; --> ALL ; ; ----- STAGE UP ----- ; L_MOVE_STGUP: ; MOV.B bstage_no,R0H ; stage number load ; ADD.B #1,R0H ; +1 ; MOV.B R0H,bstage_no ; > ; JMP.W L_MOVE_END ; --> ALL ; L_MOVE_NEXT: ; ;------------------ ; ; STAGE17 ;------------------ CMD_MOVE_SNDDAT: ; reply data & receiving [END] ; ----- receiving [START] ----- JSR.A S_START_SND ; ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_MOVE_SND10: JSR.A S_TRS ;[receiving] JC L_MOVE_SND10 ; --> BUSY ; ----- receiving [END] ----- JSR.A S_END_SND ; ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ; ----- end ----- L_MOVE_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ; ;""SUBR COMMENT""**************************************** ; ID : @ CMD_REST ; CONTENS : ;-------------------------------------------------------- ; FUNCTION :sendig information about POD ; : ;-------------------------------------------------------- ; INPUT : ; ;-------------------------------------------------------- ; OUTPUT : ; ;-------------------------------------------------------- ; SUB ROUTINE : ; ;-------------------------------------------------------- ; COUTION : ; ;-------------------------------------------------------- ; HISTORY : ; ;""SUBR COMMENT END""************************************ ; ;--------------------------------------- ; @ CMD_FM ;--------------------------------------- CMD_FM: MOV.B bstage_no,A0 ; loading a decided data in recived ones SHL.W #2,A0 ; addresscalculate(X4) JMPI.A T_CMD_FM[A0] ; -->go to each internal processing ;------------------ ; STAGE0 ;------------------ CMD_FM_RCVMD: MOV.B bnow_code,R0L ; loading a decided data in recived ones MOV.B R0L,bfm_mod ; >FREE/SAMPLING mode load JMP.W L_FM_STGUP ; --> ALL ;------------------ ; STAGE1 ;------------------ CMD_FM_RCVEND: MOV.B bnow_code,R0L ; loading a decided data in recived ones CMP.B #C_CMD_END,R0L ; [END]command ? JEQ L_FM_RUNCHK ; --> YES ; ----- detect a trigger ERR ----- L_FM_ERR8: MOV.B #C_CMD_ERR8,R0L ; ERR_8 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_FM_NEXT ; --> ALL L_FM_RUNCHK: MOV.W wmoj_req,R0 ; loading module REQ BTST F_MOJ_USR,R0 ; During the user module practice ? JEQ L_FM_CHKMOD ; --> NO ; ----- check if the proguram is working ----- MOV.B #C_CMD_ERR4,R0L ; ERR_4 MOV.B R0L,brtn_sts ; setting the status quo JMP.W L_FM_NEXT ; --> ALL ; ----- modejudgment ----- L_FM_CHKMOD: MOV.B bfm_mod,R0L ; FREE/SAMPLING mode load CMP.B #C_FM_FREE,R0L ; FREE mode ? JNE L_FM_SAMPLE ; --> NO L_FM_FREE: ; ----- FREE mode ----- MOV.B #C_LED_ON,R0H ; permit LED output  = ON MOV.B R0H,bled_sw ; > JMP.W L_FM_NEXT ; --> ALL L_FM_SAMPLE: CMP.B #C_FM_SAMPLE,R0L ; SAMPLING mode ? JNE L_FM_ERR8 ; --> NO ; ----- SAMPLING mode ----- MOV.B #C_LED_OFF,R0H ; permit LED output = OFF MOV.B R0H,bled_sw ; > JMP.W L_FM_NEXT ; --> ALL ; ----- STAGE UP ----- L_FM_STGUP: ; MOV.B bstage_no,R0H ; stage number load ADD.B #1,R0H ; +1 MOV.B R0H,bstage_no ; > JMP.W L_FM_END ; --> ALL L_FM_NEXT: ;------------------ ; STAGE2 ;------------------ CMD_FM_SNDDAT: ; ----- receiving [START] ----- JSR.A S_START_SND ; ; ----- the status quo receiving ----- MOV.B brtn_sts,R0L ; the status quo load MOV.B R0L,bsnd_buf ; > L_FM_SND10: JSR.A S_TRS ;[receiving] JC L_FM_SND10 ; --> BUSY ; ----- receiving [END] ----- JSR.A S_END_SND ; ; ----- end matching a series of command----- JSR.A S_CMDEXIT ; ; ----- end ----- L_FM_END: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;--------------------------------------- ; not_cmd ;--------------------------------------- not_cmd: JMP.A L_CMD_EXIT ; --> moj_cmdへ ; ;******************************************************** ; * ; FILENAME: mon_cmd.a30 * ; * ; Copyright(c) 1995-1999 MITSUBISHI ELECTRIC Co. * ; and MITSUBISHI ELECTRIC SEMICONDUCTOR SYSTEM Co. * ; All Rights Reserved. * ; * ;********************************************************