📄 js520a.psc
字号:
# 1 "D:\\temp\\\275\255\313\325\265\245\317\340\267\321\302\312\265\367\312\324\\\324\264\264\372\302\353\\js520a.c" # 1 "/FStudio/lib/gcc-lib/m68k-coff/2.95.2/../../../../m68k-coff/include/F3200.h" 1 3 typedef unsigned char BOOLEAN; typedef unsigned char UBYTE; typedef signed char BYTE; typedef unsigned short UWORD; typedef signed short WORD; typedef unsigned long ULONG; typedef signed long LONG; typedef unsigned long long ULLONG; typedef long long LLONG; typedef struct _calendar{ UWORD year; UBYTE month; UBYTE day; UBYTE week; UBYTE hour; UBYTE minute; UBYTE second; UWORD ms;}OS_CALENDAR; typedef struct _OS_WIN{ UBYTE flag; ULONG x; ULONG y; ULONG lx; ULONG ly; LONG outline; UBYTE HaveLab; UBYTE lab[32]; UBYTE data[4096];}OS_WIN; typedef struct _OS_DtClus{ ULONG Len; OS_CALENDAR UTime; ULONG Property; UBYTE Data[24]; }OS_DtClus;typedef struct _OS_FILE{ BYTE F_Update; BYTE Disk; LONG DirHandle; ULONG DirRec; UBYTE Name[24]; ULONG Clus; ULONG Len; OS_CALENDAR CTime; OS_CALENDAR UTime; ULONG Seek; UBYTE BF_Valid; UBYTE BF_Update; ULONG BF_Fat; OS_DtClus *p; }OS_FILE; typedef struct _OS_DBF{ LONG h; unsigned char Flag; unsigned char FileName[24]; unsigned long RecordNumMax; unsigned short RecordOffset; unsigned short RecordLength; unsigned long RecordValid; }OS_DBF;typedef struct _OS_FIELD{ unsigned char Name[11]; unsigned char Type; unsigned long Offset; unsigned char Len; unsigned char Dot; }OS_FIELD;typedef union _FIELD{ struct _N{ long long data; unsigned char dot; }N; struct _C{ unsigned char data[254]; }C; struct _D{ unsigned short year; unsigned char month; unsigned char day; unsigned char week; }D; struct _T{ unsigned short year; unsigned char month; unsigned char day; unsigned char week; unsigned char hour; unsigned char minute; unsigned char second; unsigned char ms; }T; struct _I{ long data; }I; struct _L{ char data; }L;}FIELD; void OSExit(void); ULONG OSGetKeyScan(void); UBYTE OSGetKeyCode(void); void OSKeyBufClr(void); UBYTE OSWaitKey(void); ULONG OSTMRGet(void); void OSDelay(UWORD ms); void OSGetCalendar(OS_CALENDAR *p); void OSSetCalendar(OS_CALENDAR *p); void OSCalendarToOffset(OS_CALENDAR *p, ULONG *day, ULONG *ms); void OSOffsetToCalendar(ULONG day, ULONG ms, OS_CALENDAR *p); void OSLCDDrawDot(UWORD x, UWORD y, LONG color, BYTE mode); void OSLCDDrawDotInWin(OS_WIN *w,UWORD x, UWORD y, LONG color, BYTE mode);void OSLCDDrawBlock(UWORD x, UWORD y, UWORD dx, UWORD dy, UBYTE *d, LONG color, BYTE mode); void OSLCDDrawBlockInWin(OS_WIN *w, UWORD x, UWORD y, UWORD dx, UWORD dy, UBYTE *d, LONG color, BYTE mode);void OSLCDFillBlock(UWORD x, UWORD y, UWORD dx, UWORD dy, LONG color, BYTE mode); void OSLCDFillBlockInWin(OS_WIN *w, UWORD x, UWORD y, UWORD dx, UWORD dy, LONG color, BYTE mode);void OSLCDReadPanel(UBYTE *d); void OSLCDWritePanel(UBYTE *d); void OSLCDClearPanel(BYTE mode); void DrawLine(ULONG x,ULONG y,ULONG x1,ULONG y1,LONG color, BYTE mode); void OSDrawLineInWin(OS_WIN *w,ULONG x,ULONG y,ULONG x1,ULONG y1,LONG color, BYTE mode);void DrawLineRadian(ULONG x,ULONG y,float radian,ULONG l,ULONG dot,LONG color, BYTE mode); void OSDrawLineRadianInWin(OS_WIN *w,ULONG x,ULONG y,float radian,ULONG l,ULONG dot,LONG color, BYTE mode);void DrawLineDot(ULONG x,ULONG y,ULONG x1,ULONG y1,LONG dot, LONG color,BYTE mode); void OSDrawLineDotInWin(OS_WIN *w,ULONG x,ULONG y,ULONG x1,ULONG y1,LONG dot, LONG color,BYTE mode); void DrawCircle(ULONG x,ULONG y,ULONG r,ULONG dot, LONG color, BYTE mode); void OSDrawCircleInWin(OS_WIN *w, ULONG x,ULONG y,ULONG r,ULONG dot, LONG color, BYTE mode);void DrawRectangle(ULONG x,ULONG y,ULONG lx,ULONG ly,ULONG dot,LONG color,BYTE mode); void OSDrawRectangleInWin(OS_WIN *w, ULONG x,ULONG y,ULONG lx,ULONG ly,ULONG dot,LONG color,BYTE mode); OS_WIN *CreatSubWindow(ULONG x, ULONG y, ULONG lx, ULONG ly, LONG outline);OS_WIN *OSCreatSubWindow(ULONG x, ULONG y, ULONG lx, ULONG ly, LONG outline, UBYTE HaveLab, UBYTE *lab); OS_WIN *OSCreatSubWindowInWin(OS_WIN *w,ULONG x, ULONG y, ULONG lx, ULONG ly, LONG outline, UBYTE HaveLab, UBYTE *lab);void CloseSubWindow(OS_WIN *hWin); void OSClearWindows(OS_WIN *hWin); void OSCursorClose(void); void OSCursor(ULONG x, ULONG y, ULONG w, ULONG h, BYTE mode); void OSCursorInWin(OS_WIN *hw, ULONG x, ULONG y, ULONG w, ULONG h, BYTE mode); void OSDrawSmallNum(ULONG x, ULONG y, UBYTE *d, LONG color, BYTE mode); void OSDrawAscii(ULONG x, ULONG y, UBYTE *d, LONG color, BYTE mode); void OSDrawAsciiInWin(OS_WIN *hWin,ULONG x, ULONG y, UBYTE *d, LONG color, BYTE mode); void OSDrawText(ULONG x, ULONG y, UBYTE *d, LONG color, BYTE mode); void OSDrawInWin(OS_WIN *hWin, ULONG x, ULONG y, UBYTE *d, LONG color, BYTE mode); void OSScrollBarCreat(ULONG x, ULONG y, ULONG l, UBYTE seek, UBYTE dir); void OSScrollBarCreatInWin(OS_WIN *hWin, ULONG x, ULONG y, ULONG l, UBYTE seek, UBYTE dir); void OSScrollBarSeek(ULONG x, ULONG y, ULONG l, UBYTE seek, UBYTE dir); void OSScrollBarSeekInWin(OS_WIN *hWin,ULONG x, ULONG y, ULONG l, UBYTE seek, UBYTE dir); void OSProgressBarCreat(ULONG x, ULONG y, ULONG l, UBYTE seek); void OSProgressBarCreatInWin(OS_WIN *hWin,ULONG x, ULONG y, ULONG l, UBYTE seek);void OSProgressBarSeek(ULONG x, ULONG y, ULONG l, UBYTE seek);void OSProgressBarSeekInWin(OS_WIN *hWin, ULONG x, ULONG y, ULONG l, UBYTE seek);UBYTE OSSureBox(UBYTE *lab, UBYTE *d); UBYTE OSMsgBox(UBYTE *d);UBYTE OSMessageBox(UBYTE *lab, UBYTE *d ,UBYTE *prompt); LONG OSMenu(ULONG x, ULONG y, ULONG l, ULONG DispNum, ULONG DefNum, ULONG NumMax, ULONG IsScroll, ...); UBYTE OSMenuInWin(OS_WIN *hWin, ULONG x, ULONG y, UBYTE CharNum, ULONG DispNum, ULONG *DefNum, ULONG NumMax, ULONG IsScroll, ...); UBYTE OSListInWin(OS_WIN *hWin, ULONG x, ULONG y, ULONG CntPerPannel, UBYTE RecordLen, UBYTE RecordOffset, ULONG DispLen, ULONG *DefRecord, ULONG RecordMax, ULONG IsScroll,UBYTE *data); UBYTE OSEntrySele(UBYTE entry); UBYTE OSEntryAscII(ULONG x, ULONG y, ULONG l, UBYTE *d, UBYTE entry, UBYTE IsPswd, UBYTE Font); UBYTE OSEntryInWin(OS_WIN *hWin,ULONG x, ULONG y, ULONG l, UBYTE *d, UBYTE entry, UBYTE IsPswd, UBYTE Font); LONG OSfGetC(LONG h); LONG OSfRead(LONG h, UBYTE *data, ULONG len); LONG OSfPutC(LONG h, UBYTE data); LONG OSfWrite(LONG h, UBYTE *data, ULONG len); LONG OSfSave(LONG h); LONG OSfSeek(LONG h, LONG offset, LONG origin); BYTE OSfList(UBYTE disk, LONG dirH, ULONG num, OS_FILE *p); LONG OSfOpen(UBYTE disk, LONG dirH, UBYTE *name); LONG OSfClose(LONG h); LONG OSfCreat(UBYTE disk, LONG dirH, UBYTE *name, ULONG type, OS_CALENDAR tt); LONG OSfDel(UBYTE disk, LONG dirH, UBYTE *name); OS_DBF *OSDBFOpen(UBYTE disk, LONG dirH, UBYTE *name); void OSDBFClose(OS_DBF *dbf); BYTE OSDBFRecordRead(OS_DBF *dbf, ULONG RecordNum, UBYTE *d); BYTE OSDBFRecordWrite(OS_DBF *dbf, ULONG RecordNum, UBYTE *d); BYTE OSDBFRecordAdd(OS_DBF *dbf); OS_FIELD *OSDBFFieldSearch(OS_DBF *dbf, UBYTE *FldName); void OSDBFFieldFree(OS_FIELD *fld); BYTE OSDBFFieldRead(OS_DBF *dbf, OS_FIELD *fld, ULONG RecordNum, FIELD *d); BYTE OSDBFFieldWrite(OS_DBF *dbf, OS_FIELD *fld, ULONG RecordNum, FIELD *d); BYTE OSDBFRecordIsValid(OS_DBF *dbf, ULONG RecordNum); BYTE OSDBFRecordDelete(OS_DBF *dbf, ULONG RecordNum); BYTE OSDBFRecordRecall(OS_DBF *dbf, ULONG RecordNum); BYTE OSComIni(BYTE ComNum, LONG Baud, BYTE Parity, BYTE Even, BYTE Stop, BYTE DLen); void OSCOMClose(BYTE ComNum); BYTE OSCOMSChar(BYTE c); BYTE OSCOMRChar(BYTE *c); BYTE OSCOMSCheck(void); void OSCOMSStr(BYTE *d); void BuzzPlay(unsigned char tone, unsigned char volume, unsigned char time);# 5 "D:\\temp\\\275\255\313\325\265\245\317\340\267\321\302\312\265\367\312\324\\\324\264\264\372\302\353\\js520a.c" 2 UBYTE Global_ComNum=1; UBYTE tr[12][3]; ULONG ClrPswd = 0x12345600, PgmPswd = 0x12345601;ULLONG devID = 0; void bcd2ascii(UBYTE *bcd,UBYTE *a,UBYTE l){ UBYTE i; for(i=0;i<l;i++){ a[i*2] = (bcd[i]>>4)+0x30; a[i*2+1] = (bcd[i]&0xF) + 0x30; } for(i=0;i<l*2;i++){ if(a[i]>0x39) a[i]+=7; }}void a2bcd(UBYTE *a,UBYTE *bcd){ UBYTE i,s[10]; ULONG ul; bcd[0]=0; for(i=0;i<9;i++){ if(a[i]=='.'){ if((i+1)<9) bcd[0] += (a[i+1]<<4); if((i+2)<9) bcd[0] += (a[i+2]&0xF); break; } } a[i]=0; ul = atol(a); bcd[1] = (ul%10) + (((ul/10)%10)<<4); bcd[2] = ((ul/100)%10) + (((ul/1000)%10)<<4); bcd[3] = ((ul/10000)%10) + (((ul/100000)%10)<<4);}UBYTE hex2bcd(UBYTE hex){ return (hex%10)+(((hex/10)%10) <<4);}void ID2bcd(ULLONG id,UBYTE *d) { d[0] = (UBYTE)id; d[1] = (UBYTE)(id>>8); d[2] = (UBYTE)(id>>16); d[3] = (UBYTE)(id>>24); d[4] = (UBYTE)(id>>32); d[5] = (UBYTE)(id>>40); d[6] = (UBYTE)(id>>48);} LONG DLT645(UBYTE Index,ULLONG DevID,UBYTE Cmd,UBYTE *s,UBYTE sl,UBYTE *r,UBYTE rl,UWORD Dly){ UBYTE i,l; UBYTE ChkSum=(0x68+0x68); ULONG DlyCnt,RcvPro; asm(" bset #7,0xFFFFF421") ; for(i=0;i<Index;i++) OSCOMSChar(0xFE); OSCOMSChar(0x68); for(i=0;i<6;i++){ OSCOMSChar((UBYTE)DevID); ChkSum += (UBYTE)DevID; DevID>>=8; } OSCOMSChar(0x68); OSCOMSChar(Cmd); ChkSum += Cmd; OSCOMSChar(sl); ChkSum += sl; for(i=0;i<sl;i++){ OSCOMSChar(s[i]+0x33); ChkSum += (s[i]+0x33); } OSCOMSChar(ChkSum); OSCOMSChar(0x16); while(OSCOMSCheck()!=0); asm(" bclr #7,0xFFFFF421") ; while(OSCOMRChar(r)==0); if(Dly == 0) return 0; DlyCnt = OSTMRGet(); RcvPro = 0; while(OSTMRGet()<(DlyCnt+Dly)){ if(OSCOMRChar(&i)==0){ ChkSum += i; switch(RcvPro){ case 0: if(i==0x68){ ChkSum = 0x68; RcvPro++; } break; case 1 ... 6: r[RcvPro-1] = i; RcvPro++; break; case 7: if(i==0x68) RcvPro++; else RcvPro = 0; break; case 8: if(i==(Cmd|0x80)) RcvPro++; else RcvPro = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -