mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-16 21:15:15 +00:00
Merge branch 'development' of github.com:Galleondragon/qb64 into development
This commit is contained in:
commit
23915bf296
|
@ -6792,6 +6792,12 @@ void sub__keyclear(int32 buf, int32 passed) {
|
||||||
//INP(&H60) buffer
|
//INP(&H60) buffer
|
||||||
port60h_events = 0;
|
port60h_events = 0;
|
||||||
}
|
}
|
||||||
|
#ifdef QB64_WINDOWS
|
||||||
|
//Windows Console Buffer
|
||||||
|
FlushConsoleInputBuffer(GetStdHandle (STD_INPUT_HANDLE));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//STR() functions
|
//STR() functions
|
||||||
|
@ -11522,63 +11528,84 @@ void qbg_sub_locate(int32 row,int32 column,int32 cursor,int32 start,int32 stop,i
|
||||||
|
|
||||||
//input helper functions:
|
//input helper functions:
|
||||||
uint64 hexoct2uint64_value;
|
uint64 hexoct2uint64_value;
|
||||||
int32 hexoct2uint64(qbs* h){
|
int32 hexoct2uint64(qbs *h) {
|
||||||
//returns 0=failed
|
// returns 0 = failed
|
||||||
// 1=HEX value (default if unspecified)
|
// 1 = HEX value (default if unspecified)
|
||||||
// 2=OCT value
|
// 2 = OCT value
|
||||||
static int32 i,i2;
|
// 3 = BIN value
|
||||||
static uint64 result;
|
static int32 i, i2;
|
||||||
result=0;
|
static uint64 result;
|
||||||
static int32 type;
|
result = 0;
|
||||||
type=0;
|
static int32 type;
|
||||||
hexoct2uint64_value=0;
|
type = 0;
|
||||||
if (!h->len) return 1;
|
hexoct2uint64_value = 0;
|
||||||
if (h->chr[0]!=38) return 0;//not "&"
|
if (!h->len) return 1;
|
||||||
if (h->len==1) return 1;//& received, but awaiting further input
|
if (h->chr[0] != 38) return 0; // not "&"
|
||||||
i=h->chr[1];
|
if (h->len == 1) return 1; // "&" received, but awaiting further input
|
||||||
if ((i==72)||(i==104)) type=1;//"H"or"h"
|
i = h->chr[1];
|
||||||
if ((i==79)||(i==111)) type=2;//"O"or"o"
|
if ((i == 72) || (i == 104)) type = 1; // "H" or "h"
|
||||||
if (!type) return 0;
|
if ((i == 79) || (i == 111)) type = 2; // "O" or "o"
|
||||||
if (h->len==2) return type;
|
if ((i == 66) || (i == 98)) type = 3; // "B" or "b"
|
||||||
|
if (!type) return 0;
|
||||||
|
if (h->len == 2) return type;
|
||||||
|
|
||||||
if (type==1){
|
// unsigned _int64 max = 18446744073709551615 (decimal, 20 chars)
|
||||||
if (h->len>18) return 0;//larger than int64
|
// = 1111111 etc., max. 64x (binary, 64 chars)
|
||||||
for (i=2;i<h->len;i++){
|
// = 1777777777777777777777 (octal, 22 chars)
|
||||||
result<<=4;
|
// = FFFFFFFFFFFFFFFF (hex, 16 chars)
|
||||||
i2=h->chr[i];
|
|
||||||
// 0 - 9 A - F a - f
|
|
||||||
if ( ((i2>=48)&&(i2<=57)) || ((i2>=65)&&(i2<=70)) || ((i2>=97)&&(i2<=102)) ){
|
|
||||||
if (i2>=97) i2-=32;
|
|
||||||
if (i2>=65) i2-=7;
|
|
||||||
i2-=48;
|
|
||||||
//i2 is now a values between 0 and 15
|
|
||||||
result+=i2;
|
|
||||||
}else return 0;//invalid character
|
|
||||||
}//i
|
|
||||||
hexoct2uint64_value=result;
|
|
||||||
return 1;
|
|
||||||
}//type==1
|
|
||||||
|
|
||||||
if (type==2){
|
if (type == 1) {
|
||||||
//unsigned _int64 max=18446744073709551615 (decimal, 20 chars)
|
if (h->len > 18) return 0; // larger than int64
|
||||||
// =1777777777777777777777 (octal, 22 chars)
|
for (i = 2; i < h->len; i++) {
|
||||||
// =FFFFFFFFFFFFFFFF (hex, 16 chars)
|
result <<= 4;
|
||||||
if (h->len>24) return 0;//larger than int64
|
i2 = h->chr[i];
|
||||||
if (h->len==24){
|
// 0 - 9 / A - F / a - f
|
||||||
if ((h->chr[2]!=48)&&(h->chr[2]!=49)) return 0;//larger than int64
|
if (((i2 >= 48) && (i2 <= 57)) || ((i2 >= 65) && (i2 <= 70)) || ((i2 >= 97) && (i2 <= 102))) {
|
||||||
}
|
if (i2 >= 97) i2 -= 32;
|
||||||
for (i=2;i<h->len;i++){
|
if (i2 >= 65) i2 -= 7;
|
||||||
result<<=3;
|
i2 -= 48;
|
||||||
i2=h->chr[i];
|
// i2 is now a values between 0 and 15
|
||||||
if ((i2>=48)&&(i2<=55)){//0-7
|
result += i2;
|
||||||
i2-=48;
|
} else
|
||||||
result+=i2;
|
return 0; // invalid character
|
||||||
}else return 0;//invalid character
|
} // i
|
||||||
}//i
|
hexoct2uint64_value = result;
|
||||||
hexoct2uint64_value=result;
|
return 1;
|
||||||
return 2;
|
} // type == 1
|
||||||
}//type==2
|
|
||||||
|
|
||||||
|
if (type == 2) {
|
||||||
|
if (h->len > 24) return 0; // larger than int64
|
||||||
|
if (h->len == 24) {
|
||||||
|
if ((h->chr[2] != 48) && (h->chr[2] != 49))
|
||||||
|
return 0; // larger than int64
|
||||||
|
}
|
||||||
|
for (i = 2; i < h->len; i++) {
|
||||||
|
result <<= 3;
|
||||||
|
i2 = h->chr[i];
|
||||||
|
if ((i2 >= 48) && (i2 <= 55)) { // 0-7
|
||||||
|
i2 -= 48;
|
||||||
|
result += i2;
|
||||||
|
} else
|
||||||
|
return 0; // invalid character
|
||||||
|
} // i
|
||||||
|
hexoct2uint64_value = result;
|
||||||
|
return 2;
|
||||||
|
} // type == 2
|
||||||
|
|
||||||
|
if (type == 3) {
|
||||||
|
if (h->len > 66) return 0; // larger than int64
|
||||||
|
for (i = 2; i < h->len; i++) {
|
||||||
|
result <<= 1;
|
||||||
|
i2 = h->chr[i];
|
||||||
|
if ((i2 >= 48) && (i2 <= 49)) { // 0-1
|
||||||
|
i2 -= 48;
|
||||||
|
result += i2;
|
||||||
|
} else
|
||||||
|
return 0; // invalid character
|
||||||
|
} // i
|
||||||
|
hexoct2uint64_value = result;
|
||||||
|
return 3;
|
||||||
|
} // type == 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -11749,7 +11776,7 @@ void qbs_input(int32 numvariables,uint8 newline){
|
||||||
max<<=i4;
|
max<<=i4;
|
||||||
max--;
|
max--;
|
||||||
|
|
||||||
//check for hex/oct
|
//check for hex/oct/bin
|
||||||
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
||||||
hexvalue=hexoct2uint64_value;
|
hexvalue=hexoct2uint64_value;
|
||||||
if (hexvalue>max){valid=0; goto typechecked;}
|
if (hexvalue>max){valid=0; goto typechecked;}
|
||||||
|
@ -11774,7 +11801,18 @@ void qbs_input(int32 numvariables,uint8 newline){
|
||||||
value>>=3;
|
value>>=3;
|
||||||
}
|
}
|
||||||
if (l>(2+i)){valid=0; goto typechecked;}
|
if (l>(2+i)){valid=0; goto typechecked;}
|
||||||
if (l==1) completewith=111;//"O"
|
if (l==1) completewith=79;//"O"
|
||||||
|
if (l==2) completewith=48;//"0"
|
||||||
|
}
|
||||||
|
if (i3==3){
|
||||||
|
value=max;
|
||||||
|
i=0;
|
||||||
|
for (i2=1;i2<=64;i2++){
|
||||||
|
if (value&0x1) i=i2;
|
||||||
|
value>>=1;
|
||||||
|
}
|
||||||
|
if (l>(2+i)){valid=0; goto typechecked;}
|
||||||
|
if (l==1) completewith=66;//"B"
|
||||||
if (l==2) completewith=48;//"0"
|
if (l==2) completewith=48;//"0"
|
||||||
}
|
}
|
||||||
finalvalue=hexvalue;
|
finalvalue=hexvalue;
|
||||||
|
@ -11846,13 +11884,14 @@ void qbs_input(int32 numvariables,uint8 newline){
|
||||||
if ((qbs_input_variabletypes[argn]&511)==64){
|
if ((qbs_input_variabletypes[argn]&511)==64){
|
||||||
if (l==0){completewith=48; *(int64*)qbs_input_variableoffsets[argn]=0; goto typechecked;}
|
if (l==0){completewith=48; *(int64*)qbs_input_variableoffsets[argn]=0; goto typechecked;}
|
||||||
|
|
||||||
//check for hex/oct
|
//check for hex/oct/bin
|
||||||
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
||||||
hexvalue=hexoct2uint64_value;
|
hexvalue=hexoct2uint64_value;
|
||||||
if (hexvalue>max){valid=0; goto typechecked;}
|
if (hexvalue>max){valid=0; goto typechecked;}
|
||||||
//set completewith value (if necessary)
|
//set completewith value (if necessary)
|
||||||
if (i3==1) if (l==1) completewith=72;//"H"
|
if (i3==1) if (l==1) completewith=72;//"H"
|
||||||
if (i3==2) if (l==1) completewith=111;//"O"
|
if (i3==2) if (l==1) completewith=79;//"O"
|
||||||
|
if (i3==3) if (l==1) completewith=66;//"B"
|
||||||
if (l==2) completewith=48;//"0"
|
if (l==2) completewith=48;//"0"
|
||||||
*(uint64*)qbs_input_variableoffsets[argn]=hexvalue;
|
*(uint64*)qbs_input_variableoffsets[argn]=hexvalue;
|
||||||
goto typechecked;
|
goto typechecked;
|
||||||
|
@ -11936,12 +11975,13 @@ void qbs_input(int32 numvariables,uint8 newline){
|
||||||
//begin with a generic assessment, regardless of whether it is single, double or float
|
//begin with a generic assessment, regardless of whether it is single, double or float
|
||||||
if (l==0){completewith=48; goto typechecked;}
|
if (l==0){completewith=48; goto typechecked;}
|
||||||
|
|
||||||
//check for hex/oct
|
//check for hex/oct/bin
|
||||||
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
if (i3=hexoct2uint64(qbs_input_arguements[argn])){
|
||||||
hexvalue=hexoct2uint64_value;
|
hexvalue=hexoct2uint64_value;
|
||||||
//set completewith value (if necessary)
|
//set completewith value (if necessary)
|
||||||
if (i3==1) if (l==1) completewith=72;//"H"
|
if (i3==1) if (l==1) completewith=72;//"H"
|
||||||
if (i3==2) if (l==1) completewith=111;//"O"
|
if (i3==2) if (l==1) completewith=79;//"O"
|
||||||
|
if (i3==3) if (l==1) completewith=66;//"B"
|
||||||
if (l==2) completewith=48;//"0"
|
if (l==2) completewith=48;//"0"
|
||||||
//nb. because VC6 didn't support...
|
//nb. because VC6 didn't support...
|
||||||
//error C2520: conversion from uint64 to double not implemented, use signed int64
|
//error C2520: conversion from uint64 to double not implemented, use signed int64
|
||||||
|
@ -13271,8 +13311,9 @@ uint8 n_digit[256];
|
||||||
int64 n_exp;//if 0, there is one digit in front of the decimal place
|
int64 n_exp;//if 0, there is one digit in front of the decimal place
|
||||||
uint8 n_neg;//if 1, the number is negative
|
uint8 n_neg;//if 1, the number is negative
|
||||||
uint8 n_hex;//if 1, the digits are in hexidecimal and n_exp should be ignored
|
uint8 n_hex;//if 1, the digits are in hexidecimal and n_exp should be ignored
|
||||||
//if 2, the digits are in octal and n_exp should be ignored
|
//if 2, the digits are in octal and n_exp should be ignored
|
||||||
//(consider revising variable name n_hex)
|
//if 3, the digits are in binary and n_exp should be ignored
|
||||||
|
//(consider revising variable name n_hex)
|
||||||
|
|
||||||
int32 n_roundincrement(){
|
int32 n_roundincrement(){
|
||||||
static int32 i,i2,i3;
|
static int32 i,i2,i3;
|
||||||
|
@ -13323,6 +13364,17 @@ int32 n_float(){
|
||||||
n_float_value=value;
|
n_float_value=value;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
//bin?
|
||||||
|
if (n_hex==3){
|
||||||
|
if (n_digits>64) return 0;
|
||||||
|
for (i=0;i<n_digits;i++){
|
||||||
|
i2=n_digit[i]-48;
|
||||||
|
value<<=1;
|
||||||
|
value|=i2;
|
||||||
|
}
|
||||||
|
n_float_value=value;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//max range check (+-1.7976931348623157E308)
|
//max range check (+-1.7976931348623157E308)
|
||||||
if (n_exp>308)return 0;//overflow
|
if (n_exp>308)return 0;//overflow
|
||||||
|
@ -13393,7 +13445,6 @@ int32 n_int64(){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
//oct
|
//oct
|
||||||
|
|
||||||
if (n_hex==2){
|
if (n_hex==2){
|
||||||
if (n_digits>=22){
|
if (n_digits>=22){
|
||||||
|
|
||||||
|
@ -13407,6 +13458,17 @@ int32 n_int64(){
|
||||||
n_int64_value=value;
|
n_int64_value=value;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
//bin
|
||||||
|
if (n_hex==3){
|
||||||
|
if (n_digits>64) return 0;
|
||||||
|
for (i=0;i<n_digits;i++){
|
||||||
|
i2=n_digit[i]-48;
|
||||||
|
value<<=1;
|
||||||
|
value|=i2;
|
||||||
|
}
|
||||||
|
n_int64_value=value;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//range check: int64 (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
|
//range check: int64 (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
|
||||||
if (n_exp>18)return 0;//overflow
|
if (n_exp>18)return 0;//overflow
|
||||||
|
@ -13487,6 +13549,17 @@ int32 n_uint64(){
|
||||||
n_uint64_value=uvalue;
|
n_uint64_value=uvalue;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
//bin
|
||||||
|
if (n_hex==3){
|
||||||
|
if (n_digits>64) return 0;
|
||||||
|
for (i=0;i<n_digits;i++){
|
||||||
|
i2=n_digit[i]-48;
|
||||||
|
uvalue<<=1;
|
||||||
|
uvalue|=i2;
|
||||||
|
}
|
||||||
|
n_uint64_value=uvalue;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//negative?
|
//negative?
|
||||||
if (n_neg){
|
if (n_neg){
|
||||||
|
@ -13555,41 +13628,72 @@ int32 n_inputnumberfromdata(uint8 *data,ptrszint *data_offset,ptrszint data_size
|
||||||
//read character
|
//read character
|
||||||
c=data[*data_offset];
|
c=data[*data_offset];
|
||||||
|
|
||||||
//hex/oct
|
// hex/oct/bin
|
||||||
if (c==38){//&
|
if (c == 38) { // "&"
|
||||||
(*data_offset)++; if (*data_offset>=data_size) goto gotnumber;
|
(*data_offset)++;
|
||||||
c=data[*data_offset];
|
if (*data_offset >= data_size) goto gotnumber;
|
||||||
if (c==44){(*data_offset)++; goto gotnumber;}
|
c = data[*data_offset];
|
||||||
if ((c==72)||(c==104)){//"H"or"h"
|
if (c == 44) {
|
||||||
nexthexchr:
|
(*data_offset)++;
|
||||||
(*data_offset)++; if (*data_offset>=data_size) goto gotnumber;
|
goto gotnumber;
|
||||||
c=data[*data_offset];
|
}
|
||||||
if (c==44){(*data_offset)++; goto gotnumber;}
|
if ((c == 72) || (c == 104)) { // "H" or "h"
|
||||||
if ( ((c>=48)&&(c<=57)) || ((c>=65)&&(c<=70)) || ((c>=97)&&(c<=102)) ){//0-9 or A-F or a-f
|
nexthexchr:
|
||||||
if (n_digits==256) return 1;//Overflow
|
(*data_offset)++;
|
||||||
n_digit[n_digits]=c;
|
if (*data_offset >= data_size) goto gotnumber;
|
||||||
n_digits++;
|
c = data[*data_offset];
|
||||||
n_hex=1;
|
if (c == 44) {
|
||||||
goto nexthexchr;
|
(*data_offset)++;
|
||||||
}
|
goto gotnumber;
|
||||||
return 3;//Syntax error
|
|
||||||
}
|
}
|
||||||
if ((c==79)||(c==111)){//"O"or"o"
|
if (((c >= 48) && (c <= 57)) || ((c >= 65) && (c <= 70)) ||
|
||||||
nexthexchr2:
|
((c >= 97) && (c <= 102))) { // 0-9 or A-F or a-f
|
||||||
(*data_offset)++; if (*data_offset>=data_size) goto gotnumber;
|
if (n_digits == 256) return 1; // Overflow
|
||||||
c=data[*data_offset];
|
n_digit[n_digits] = c;
|
||||||
if (c==44){(*data_offset)++; goto gotnumber;}
|
n_digits++;
|
||||||
if ((c>=48)&&(c<=55)){//0-7
|
n_hex = 1;
|
||||||
if (n_digits==256) return 1;//Overflow
|
goto nexthexchr;
|
||||||
n_digit[n_digits]=c;
|
|
||||||
n_digits++;
|
|
||||||
n_hex=2;
|
|
||||||
goto nexthexchr2;
|
|
||||||
}
|
|
||||||
return 3;//Syntax error
|
|
||||||
}
|
}
|
||||||
return 3;//Syntax error
|
return 3; // Syntax error
|
||||||
}//&
|
}
|
||||||
|
if ((c == 79) || (c == 111)) { // "O" or "o"
|
||||||
|
nexthexchr2:
|
||||||
|
(*data_offset)++;
|
||||||
|
if (*data_offset >= data_size) goto gotnumber;
|
||||||
|
c = data[*data_offset];
|
||||||
|
if (c == 44) {
|
||||||
|
(*data_offset)++;
|
||||||
|
goto gotnumber;
|
||||||
|
}
|
||||||
|
if ((c >= 48) && (c <= 55)) { // 0-7
|
||||||
|
if (n_digits == 256) return 1; // Overflow
|
||||||
|
n_digit[n_digits] = c;
|
||||||
|
n_digits++;
|
||||||
|
n_hex = 2;
|
||||||
|
goto nexthexchr2;
|
||||||
|
}
|
||||||
|
return 3; // Syntax error
|
||||||
|
}
|
||||||
|
if ((c == 66) || (c == 98)) { // "B" or "b"
|
||||||
|
nexthexchr3:
|
||||||
|
(*data_offset)++;
|
||||||
|
if (*data_offset >= data_size) goto gotnumber;
|
||||||
|
c = data[*data_offset];
|
||||||
|
if (c == 44) {
|
||||||
|
(*data_offset)++;
|
||||||
|
goto gotnumber;
|
||||||
|
}
|
||||||
|
if ((c >= 48) && (c <= 49)) { // 0-1
|
||||||
|
if (n_digits == 256) return 1; // Overflow
|
||||||
|
n_digit[n_digits] = c;
|
||||||
|
n_digits++;
|
||||||
|
n_hex = 3;
|
||||||
|
goto nexthexchr3;
|
||||||
|
}
|
||||||
|
return 3; // Syntax error
|
||||||
|
}
|
||||||
|
return 3; // Syntax error
|
||||||
|
} // "&"
|
||||||
|
|
||||||
readnextchr:
|
readnextchr:
|
||||||
if (c==44){(*data_offset)++; goto gotnumber;}
|
if (c==44){(*data_offset)++; goto gotnumber;}
|
||||||
|
@ -13731,36 +13835,53 @@ int32 n_inputnumberfromfile(int32 fileno){
|
||||||
if (c==-1){return_value=2; goto error;}//input past end of file
|
if (c==-1){return_value=2; goto error;}//input past end of file
|
||||||
}while(c==32);
|
}while(c==32);
|
||||||
|
|
||||||
//hex/oct
|
// hex/oct/bin
|
||||||
if (c==38){//&
|
if (c == 38) { // "&"
|
||||||
c=file_input_chr(fileno); if (c==-2) return 3;
|
c = file_input_chr(fileno);
|
||||||
if (c==-1) goto gotnumber;
|
if (c == -2) return 3;
|
||||||
if ((c==72)||(c==104)){//"H"or"h"
|
if (c == -1) goto gotnumber;
|
||||||
nexthexchr:
|
if ((c == 72) || (c == 104)) { // "H" or "h"
|
||||||
c=file_input_chr(fileno); if (c==-2) return 3;
|
nexthexchr:
|
||||||
if ( ((c>=48)&&(c<=57)) || ((c>=65)&&(c<=70)) || ((c>=97)&&(c<=102)) ){//0-9 or A-F or a-f
|
c = file_input_chr(fileno);
|
||||||
if (n_digits==256) goto error;//overflow
|
if (c == -2) return 3;
|
||||||
n_digit[n_digits]=c;
|
if (((c >= 48) && (c <= 57)) || ((c >= 65) && (c <= 70)) ||
|
||||||
n_digits++;
|
((c >= 97) && (c <= 102))) { // 0-9 or A-F or a-f
|
||||||
n_hex=1;
|
if (n_digits == 256) goto error; // overflow
|
||||||
goto nexthexchr;
|
n_digit[n_digits] = c;
|
||||||
}
|
n_digits++;
|
||||||
goto gotnumber;
|
n_hex = 1;
|
||||||
}
|
goto nexthexchr;
|
||||||
if ((c==79)||(c==111)){//"O"or"o"
|
|
||||||
nexthexchr2:
|
|
||||||
c=file_input_chr(fileno); if (c==-2) return 3;
|
|
||||||
if ((c>=48)&&(c<=55)){//0-7
|
|
||||||
if (n_digits==256) goto error;//overflow
|
|
||||||
n_digit[n_digits]=c;
|
|
||||||
n_digits++;
|
|
||||||
n_hex=2;
|
|
||||||
goto nexthexchr2;
|
|
||||||
}
|
|
||||||
goto gotnumber;
|
|
||||||
}
|
}
|
||||||
goto gotnumber;
|
goto gotnumber;
|
||||||
}//&
|
}
|
||||||
|
if ((c == 79) || (c == 111)) { // "O" or "o"
|
||||||
|
nexthexchr2:
|
||||||
|
c = file_input_chr(fileno);
|
||||||
|
if (c == -2) return 3;
|
||||||
|
if ((c >= 48) && (c <= 55)) { // 0-7
|
||||||
|
if (n_digits == 256) goto error; // overflow
|
||||||
|
n_digit[n_digits] = c;
|
||||||
|
n_digits++;
|
||||||
|
n_hex = 2;
|
||||||
|
goto nexthexchr2;
|
||||||
|
}
|
||||||
|
goto gotnumber;
|
||||||
|
}
|
||||||
|
if ((c == 66) || (c == 98)) { // "B" or "b"
|
||||||
|
nexthexchr3:
|
||||||
|
c = file_input_chr(fileno);
|
||||||
|
if (c == -2) return 3;
|
||||||
|
if ((c >= 48) && (c <= 49)) { // 0-1
|
||||||
|
if (n_digits == 256) goto error; // overflow
|
||||||
|
n_digit[n_digits] = c;
|
||||||
|
n_digits++;
|
||||||
|
n_hex = 3;
|
||||||
|
goto nexthexchr3;
|
||||||
|
}
|
||||||
|
goto gotnumber;
|
||||||
|
}
|
||||||
|
goto gotnumber;
|
||||||
|
} // "&"
|
||||||
|
|
||||||
readnextchr:
|
readnextchr:
|
||||||
if (c==-1) goto gotnumber;
|
if (c==-1) goto gotnumber;
|
||||||
|
@ -14046,7 +14167,7 @@ long double func_read_float(uint8 *data,ptrszint *data_offset,ptrszint data_size
|
||||||
}
|
}
|
||||||
if ((value>maxval)||(value<minval)) goto overflow;
|
if ((value>maxval)||(value<minval)) goto overflow;
|
||||||
|
|
||||||
if (((typ&ISUNSIGNED)==0)&&n_hex){//signed hex/oct/...
|
if (((typ&ISUNSIGNED)==0)&&n_hex){//signed hex/oct/bin/...
|
||||||
if ( ( ((int64)1) << ((typ&511)-1) ) &value){//if top bit is set, set all bits above it to form a negative value
|
if ( ( ((int64)1) << ((typ&511)-1) ) &value){//if top bit is set, set all bits above it to form a negative value
|
||||||
value=(maxval^((int64)-1))+value;
|
value=(maxval^((int64)-1))+value;
|
||||||
}
|
}
|
||||||
|
@ -14151,7 +14272,7 @@ long double func_file_input_float(int32 fileno,int32 typ){
|
||||||
}
|
}
|
||||||
if ((value>maxval)||(value<minval)){error(6); return 0;}
|
if ((value>maxval)||(value<minval)){error(6); return 0;}
|
||||||
|
|
||||||
if (((typ&ISUNSIGNED)==0)&&n_hex){//signed hex/oct/...
|
if (((typ&ISUNSIGNED)==0)&&n_hex){//signed hex/oct/bin/...
|
||||||
if ( ( ((int64)1) << ((typ&511)-1) ) &value){//if top bit is set, set all bits above it to form a negative value
|
if ( ( ((int64)1) << ((typ&511)-1) ) &value){//if top bit is set, set all bits above it to form a negative value
|
||||||
value=(maxval^((int64)-1))+value;
|
value=(maxval^((int64)-1))+value;
|
||||||
}
|
}
|
||||||
|
@ -15291,26 +15412,50 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
void sub_sleep(int32 seconds,int32 passed){
|
void sub_sleep(int32 seconds,int32 passed){
|
||||||
if (new_error) return;
|
if (new_error) return;
|
||||||
|
|
||||||
|
sleep_break=0;
|
||||||
|
double prev,ms,now,elapsed;//cannot be static
|
||||||
|
prev=GetTicks();
|
||||||
|
ms=1000.0*(double)seconds;
|
||||||
|
|
||||||
#ifdef QB64_WINDOWS
|
#ifdef QB64_WINDOWS
|
||||||
|
|
||||||
if (read_page->console){
|
if (read_page->console){
|
||||||
int32 junk=0,junk2=0;
|
int32 junk=0,junk2=0;
|
||||||
|
DWORD dwRet;
|
||||||
|
HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE);
|
||||||
|
FlushConsoleInputBuffer(hStdin);
|
||||||
|
if (passed){
|
||||||
|
do{
|
||||||
|
now=GetTicks();
|
||||||
|
if (now<prev)return;//value looped?
|
||||||
|
elapsed=now-prev;//elapsed time since prev
|
||||||
|
ms = ms-elapsed;
|
||||||
|
prev=now;
|
||||||
|
dwRet = WaitForSingleObject(hStdin,ms); //this should provide our pause
|
||||||
|
if (dwRet==WAIT_TIMEOUT)return; //and if we timeout without any input, we exit early.
|
||||||
|
if (dwRet==WAIT_OBJECT_0){//this says the console had input
|
||||||
|
junk=func__getconsoleinput();
|
||||||
|
if(junk==1){//this is a valid keyboard event. Let's exit SLEEP in the console.
|
||||||
|
Sleep(100);//Give the user time to remove their finger from the key, before clearing the buffer.
|
||||||
|
FlushConsoleInputBuffer(hStdin);//flush the keyboard buffer after, so we don't leave stray events to be processed (such as key up events).
|
||||||
|
return;
|
||||||
|
}else{//we had an input event such as the mouse. Ignore it and clear the buffer so we don't keep responding to mouse inputs
|
||||||
|
FlushConsoleInputBuffer(hStdin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}while(ms>0);//as long as our timer hasn't expired, we continue to run the loop and countdown the time remaining
|
||||||
|
return; //if we get here, something odd happened. We should expire automatically with the WAIT_TIMEOUT event before this occurs.
|
||||||
|
}
|
||||||
do{ //ignore all console input unless it's a keydown event
|
do{ //ignore all console input unless it's a keydown event
|
||||||
do{ //ignore all console input uless it's a keyboard event
|
|
||||||
junk=func__getconsoleinput();
|
|
||||||
junk2=consolekey;
|
|
||||||
}while(junk!=1); //only when junk = 1 do we have a keyboard event
|
|
||||||
}while(junk2<=0); //only when junk2 > 0 do we have a key down event. (values less than 0 are key up events; 0 is a non event)
|
|
||||||
do{ //now continue to get the console input
|
|
||||||
junk=func__getconsoleinput();
|
junk=func__getconsoleinput();
|
||||||
}while(consolekey!=-junk2); //until that key is released. We don't need to leave the key up sequence in the buffer to screw things up with future reads.
|
}while(junk!=1); //only when junk = 1 do we have a keyboard event
|
||||||
|
Sleep(100); //Give the user time to remove their finger from the key, before clearing the buffer.
|
||||||
|
FlushConsoleInputBuffer(hStdin); //and flush the keyboard buffer after, so we don't leave stray events to be processed.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sleep_break=0;
|
|
||||||
double prev,ms,now,elapsed;//cannot be static
|
|
||||||
if (passed) prev=GetTicks();
|
|
||||||
ms=1000.0*(double)seconds;
|
|
||||||
recalculate:
|
recalculate:
|
||||||
wait:
|
wait:
|
||||||
evnt(0);//handle general events
|
evnt(0);//handle general events
|
||||||
|
@ -18373,7 +18518,10 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
i2=newimg();
|
i2=newimg();
|
||||||
d=&img[i2];
|
d=&img[i2];
|
||||||
memcpy(d,s,sizeof(img_struct));
|
memcpy(d,s,sizeof(img_struct));
|
||||||
img[i2].lock_id=NULL; img[i2].lock_offset=NULL; // force _MEMIMGAGE to get a new lock for the copy
|
//don't duplicate the memory lock (if any),
|
||||||
|
//_MEMIMAGE needs to obtain a new lock for the copy
|
||||||
|
img[i2].lock_id=NULL;
|
||||||
|
img[i2].lock_offset=NULL;
|
||||||
//duplicate pixel data
|
//duplicate pixel data
|
||||||
bytes=d->width*d->height*d->bytes_per_pixel;
|
bytes=d->width*d->height*d->bytes_per_pixel;
|
||||||
d->offset=(uint8*)malloc(bytes);
|
d->offset=(uint8*)malloc(bytes);
|
||||||
|
@ -19746,6 +19894,7 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
||||||
#ifdef QB64_WINDOWS
|
#ifdef QB64_WINDOWS
|
||||||
cout<<"\nPress any key to continue";
|
cout<<"\nPress any key to continue";
|
||||||
int32 junk;
|
int32 junk;
|
||||||
|
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); //clear any stray buffer events before we run END.
|
||||||
do{ //ignore all console input
|
do{ //ignore all console input
|
||||||
junk=func__getconsoleinput();
|
junk=func__getconsoleinput();
|
||||||
}while(junk!=1); //until we have a key down event
|
}while(junk!=1); //until we have a key down event
|
||||||
|
@ -29631,19 +29780,16 @@ void reinit_glut_callbacks(){
|
||||||
int32 func__getconsoleinput(){
|
int32 func__getconsoleinput(){
|
||||||
HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE);
|
HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE);
|
||||||
INPUT_RECORD irInputRecord;
|
INPUT_RECORD irInputRecord;
|
||||||
DWORD dwEventsRead, fdwMode;
|
DWORD dwEventsRead, fdwMode, dwMode;
|
||||||
CONSOLE_SCREEN_BUFFER_INFO cl_bufinfo;
|
CONSOLE_SCREEN_BUFFER_INFO cl_bufinfo;
|
||||||
SECURITY_ATTRIBUTES SecAttribs = {sizeof(SECURITY_ATTRIBUTES), 0, 1};
|
|
||||||
HANDLE cl_conout = CreateFileA("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, & SecAttribs, OPEN_EXISTING, 0, 0);
|
|
||||||
HANDLE cl_conin = CreateFileA("CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, & SecAttribs, OPEN_EXISTING, 0, 0);
|
|
||||||
GetConsoleScreenBufferInfo(cl_conout, &cl_bufinfo);
|
|
||||||
|
|
||||||
|
GetConsoleMode(hStdin, (LPDWORD)&dwMode);
|
||||||
fdwMode = ENABLE_EXTENDED_FLAGS;
|
fdwMode = ENABLE_EXTENDED_FLAGS;
|
||||||
SetConsoleMode(cl_conin, fdwMode);
|
SetConsoleMode(hStdin, fdwMode);
|
||||||
fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
|
fdwMode = dwMode | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
|
||||||
SetConsoleMode(cl_conin, fdwMode);
|
SetConsoleMode(hStdin, fdwMode);
|
||||||
|
|
||||||
ReadConsoleInputA (cl_conin, &irInputRecord, 1, &dwEventsRead);
|
ReadConsoleInputA (hStdin, &irInputRecord, 1, &dwEventsRead);
|
||||||
switch(irInputRecord.EventType){
|
switch(irInputRecord.EventType){
|
||||||
case KEY_EVENT: //keyboard input
|
case KEY_EVENT: //keyboard input
|
||||||
consolekey = irInputRecord.Event.KeyEvent.wVirtualScanCode;
|
consolekey = irInputRecord.Event.KeyEvent.wVirtualScanCode;
|
||||||
|
@ -29653,6 +29799,7 @@ void reinit_glut_callbacks(){
|
||||||
consolemousex = irInputRecord.Event.MouseEvent.dwMousePosition.X + 1;
|
consolemousex = irInputRecord.Event.MouseEvent.dwMousePosition.X + 1;
|
||||||
consolemousey = irInputRecord.Event.MouseEvent.dwMousePosition.Y - cl_bufinfo.srWindow.Top + 1;
|
consolemousey = irInputRecord.Event.MouseEvent.dwMousePosition.Y - cl_bufinfo.srWindow.Top + 1;
|
||||||
consolebutton = irInputRecord.Event.MouseEvent.dwButtonState; //button state for all buttons
|
consolebutton = irInputRecord.Event.MouseEvent.dwButtonState; //button state for all buttons
|
||||||
|
//SetConsoleMode(hStdin, dwMode);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
return 0; //in case it's some other odd input
|
return 0; //in case it's some other odd input
|
||||||
|
|
|
@ -641,12 +641,12 @@ extern float string2s(qbs*str);
|
||||||
extern double string2d(qbs*str);
|
extern double string2d(qbs*str);
|
||||||
extern long double string2f(qbs*str);
|
extern long double string2f(qbs*str);
|
||||||
//Cobalt(aka Dave) added the next 2 lines
|
//Cobalt(aka Dave) added the next 2 lines
|
||||||
int64 func__shr(int64 a1, int b1);
|
uint64 func__shr(uint64 a1, int b1);
|
||||||
int64 func__shl(int64 a1, int b1);
|
uint64 func__shl(uint64 a1, int b1);
|
||||||
int64 func__readbit(int64 a1, int b1);
|
int64 func__readbit(uint64 a1, int b1);
|
||||||
int64 func__setbit(int64 a1, int b1);
|
uint64 func__setbit(uint64 a1, int b1);
|
||||||
int64 func__resetbit(int64 a1, int b1);
|
uint64 func__resetbit(uint64 a1, int b1);
|
||||||
int64 func__togglebit(int64 a1, int b1);
|
uint64 func__togglebit(uint64 a1, int b1);
|
||||||
#ifndef QB64_WINDOWS
|
#ifndef QB64_WINDOWS
|
||||||
extern void Sleep(uint32 milliseconds);
|
extern void Sleep(uint32 milliseconds);
|
||||||
extern void ZeroMemory(void *ptr,int64 bytes);
|
extern void ZeroMemory(void *ptr,int64 bytes);
|
||||||
|
@ -975,22 +975,22 @@ inline int32 func_sgn(long double v){
|
||||||
}
|
}
|
||||||
|
|
||||||
//bit-shifting
|
//bit-shifting
|
||||||
inline int64 func__shl(int64 a1,int b1)
|
inline uint64 func__shl(uint64 a1,int b1)
|
||||||
{return a1<<b1;}
|
{return a1<<b1;}
|
||||||
|
|
||||||
inline int64 func__shr(int64 a1,int b1)
|
inline uint64 func__shr(uint64 a1,int b1)
|
||||||
{return a1>>b1;}
|
{return a1>>b1;}
|
||||||
|
|
||||||
inline int64 func__readbit(int64 a1, int b1)
|
inline int64 func__readbit(uint64 a1, int b1)
|
||||||
{if (a1 & 1ull<<b1) return -1; else return 0;}
|
{if (a1 & 1ull<<b1) return -1; else return 0;}
|
||||||
|
|
||||||
inline int64 func__setbit(int64 a1, int b1)
|
inline uint64 func__setbit(uint64 a1, int b1)
|
||||||
{return a1 | 1ull<<b1;}
|
{return a1 | 1ull<<b1;}
|
||||||
|
|
||||||
inline int64 func__resetbit(int64 a1, int b1)
|
inline uint64 func__resetbit(uint64 a1, int b1)
|
||||||
{return a1 & ~(1ull<<b1);}
|
{return a1 & ~(1ull<<b1);}
|
||||||
|
|
||||||
inline int64 func__togglebit(int64 a1, int b1)
|
inline uint64 func__togglebit(uint64 a1, int b1)
|
||||||
{return a1 ^ 1ull<<b1;}
|
{return a1 ^ 1ull<<b1;}
|
||||||
|
|
||||||
//Working with 32bit colors:
|
//Working with 32bit colors:
|
||||||
|
|
|
@ -201,7 +201,7 @@ DIM SHARED menusize(1 TO 10)
|
||||||
DIM SHARED menus AS INTEGER, idecontextualmenuID AS INTEGER
|
DIM SHARED menus AS INTEGER, idecontextualmenuID AS INTEGER
|
||||||
DIM SHARED ideeditmenuID AS INTEGER, SearchMenuID AS INTEGER
|
DIM SHARED ideeditmenuID AS INTEGER, SearchMenuID AS INTEGER
|
||||||
DIM SHARED OptionsMenuID AS INTEGER, OptionsMenuSwapMouse AS INTEGER, OptionsMenuPasteCursor AS INTEGER
|
DIM SHARED OptionsMenuID AS INTEGER, OptionsMenuSwapMouse AS INTEGER, OptionsMenuPasteCursor AS INTEGER
|
||||||
DIM SHARED OptionsMenuShowErrorsImmediately AS INTEGER
|
DIM SHARED OptionsMenuShowErrorsImmediately AS INTEGER, OptionsMenuIgnoreWarnings AS INTEGER
|
||||||
DIM SHARED ViewMenuID AS INTEGER, ViewMenuShowLineNumbersSubMenuID AS INTEGER
|
DIM SHARED ViewMenuID AS INTEGER, ViewMenuShowLineNumbersSubMenuID AS INTEGER
|
||||||
DIM SHARED ViewMenuShowSeparatorID AS INTEGER, ViewMenuShowBGID AS INTEGER
|
DIM SHARED ViewMenuShowSeparatorID AS INTEGER, ViewMenuShowBGID AS INTEGER
|
||||||
DIM SHARED ViewMenuCompilerWarnings AS INTEGER
|
DIM SHARED ViewMenuCompilerWarnings AS INTEGER
|
||||||
|
|
|
@ -333,8 +333,8 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
OptionsMenuIgnoreWarnings = i
|
OptionsMenuIgnoreWarnings = i
|
||||||
menu$(m, 11) = "Ignore Warnings": i = 12
|
menu$(m, i) = "Ignore #Warnings": i = i + 1
|
||||||
IF IgnoreWarnings THEN menu$(OptionsMenuID, 11) = CHR$(7) + "Ignore Warnings"
|
IF IgnoreWarnings THEN menu$(OptionsMenuID, OptionsMenuIgnoreWarnings) = CHR$(7) + "Ignore #Warnings"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4127,8 +4127,20 @@ FUNCTION ide2 (ignore)
|
||||||
s = 0
|
s = 0
|
||||||
parentMenu = 0
|
parentMenu = 0
|
||||||
parentMenuSetup%% = 0
|
parentMenuSetup%% = 0
|
||||||
IF idecontextualmenu = 1 THEN idectxmenuX = mX: idectxmenuY = mY: m = idecontextualmenuID
|
SELECT CASE idecontextualmenu
|
||||||
IF idecontextualmenu = 2 THEN idectxmenuX = xx + w + 3: idectxmenuY = yy + r: parentMenu = m: m = ViewMenuShowLineNumbersSubMenuID
|
CASE 1
|
||||||
|
'right-click on text area
|
||||||
|
idectxmenuX = mX
|
||||||
|
idectxmenuY = mY
|
||||||
|
m = idecontextualmenuID
|
||||||
|
CASE 2
|
||||||
|
'line numbers menu item in View menu
|
||||||
|
idectxmenuX = xx + w + 3
|
||||||
|
idectxmenuY = yy + r
|
||||||
|
parentMenu = m
|
||||||
|
m = ViewMenuShowLineNumbersSubMenuID
|
||||||
|
END SELECT
|
||||||
|
|
||||||
IdeMakeEditMenu
|
IdeMakeEditMenu
|
||||||
|
|
||||||
IF totalWarnings = 0 THEN
|
IF totalWarnings = 0 THEN
|
||||||
|
@ -4298,6 +4310,7 @@ FUNCTION ide2 (ignore)
|
||||||
m = parentMenu
|
m = parentMenu
|
||||||
r = parentMenuR
|
r = parentMenuR
|
||||||
parentMenu = 0
|
parentMenu = 0
|
||||||
|
parentMenuR = 0
|
||||||
idecontextualmenu = 0
|
idecontextualmenu = 0
|
||||||
PCOPY 3, 2
|
PCOPY 3, 2
|
||||||
_CONTINUE
|
_CONTINUE
|
||||||
|
@ -4308,6 +4321,7 @@ FUNCTION ide2 (ignore)
|
||||||
GOTO ideloop
|
GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF NOT mouseup AND NOT mousedown THEN 'Check if we're hovering on menu options
|
IF NOT mouseup AND NOT mousedown THEN 'Check if we're hovering on menu options
|
||||||
IF parentMenu > 0 AND oldmy <> mY AND oldmx <> mX AND _
|
IF parentMenu > 0 AND oldmy <> mY AND oldmx <> mX AND _
|
||||||
mX >= backToParent.x1 AND mX =< backToParent.x2 AND _
|
mX >= backToParent.x1 AND mX =< backToParent.x2 AND _
|
||||||
|
@ -4315,6 +4329,7 @@ FUNCTION ide2 (ignore)
|
||||||
m = parentMenu
|
m = parentMenu
|
||||||
r = parentMenuR
|
r = parentMenuR
|
||||||
parentMenu = 0
|
parentMenu = 0
|
||||||
|
parentMenuR = 0
|
||||||
idecontextualmenu = 0
|
idecontextualmenu = 0
|
||||||
PCOPY 3, 2
|
PCOPY 3, 2
|
||||||
_CONTINUE
|
_CONTINUE
|
||||||
|
@ -4342,6 +4357,8 @@ FUNCTION ide2 (ignore)
|
||||||
IF mX >= x AND mX < x2 THEN
|
IF mX >= x AND mX < x2 THEN
|
||||||
m = i
|
m = i
|
||||||
r = 1
|
r = 1
|
||||||
|
parentMenuR = 0
|
||||||
|
parentMenu = 0
|
||||||
IF idecontextualmenu > 1 THEN idecontextualmenu = 0: PCOPY 3, 2
|
IF idecontextualmenu > 1 THEN idecontextualmenu = 0: PCOPY 3, 2
|
||||||
EXIT FOR
|
EXIT FOR
|
||||||
END IF
|
END IF
|
||||||
|
@ -4664,16 +4681,16 @@ FUNCTION ide2 (ignore)
|
||||||
GOTO ideloop
|
GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF RIGHT$(menu$(m, s), 15) = "Ignore Warnings" THEN
|
IF RIGHT$(menu$(m, s), 16) = "Ignore #Warnings" THEN
|
||||||
PCOPY 2, 0
|
PCOPY 2, 0
|
||||||
IF Ignorewarnings = 0 THEN
|
IF Ignorewarnings = 0 THEN
|
||||||
Ignorewarnings = -1
|
Ignorewarnings = -1
|
||||||
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "TRUE"
|
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "TRUE"
|
||||||
menu$(OptionsMenuID, 11) = CHR$(7) + "Ignore Warnings"
|
menu$(OptionsMenuID, OptionsMenuIgnoreWarnings) = CHR$(7) + "Ignore #Warnings"
|
||||||
ELSE
|
ELSE
|
||||||
Ignorewarnings = 0
|
Ignorewarnings = 0
|
||||||
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "FALSE"
|
WriteConfigSetting "'[GENERAL SETTINGS]", "IgnoreWarnings", "FALSE"
|
||||||
menu$(OptionsMenuID, 11) = "Ignore Warnings"
|
menu$(OptionsMenuID, OptionsMenuIgnoreWarnings) = "Ignore #Warnings"
|
||||||
END IF
|
END IF
|
||||||
idechangemade = 1
|
idechangemade = 1
|
||||||
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt
|
PCOPY 3, 0: SCREEN , , 3, 0: idewait4mous: idewait4alt
|
||||||
|
|
|
@ -3268,8 +3268,8 @@ id.n = "_SHR"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__shr"
|
id.callname = "func__shr"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -3277,8 +3277,8 @@ id.n = "_SHL"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__shl"
|
id.callname = "func__shl"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -3413,7 +3413,7 @@ id.n = "_READBIT"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__readbit"
|
id.callname = "func__readbit"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = INTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
||||||
|
@ -3422,8 +3422,8 @@ id.n = "_SETBIT"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__setbit"
|
id.callname = "func__setbit"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -3431,8 +3431,8 @@ id.n = "_RESETBIT"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__resetbit"
|
id.callname = "func__resetbit"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -3440,6 +3440,6 @@ id.n = "_TOGGLEBIT"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__togglebit"
|
id.callname = "func__togglebit"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(INTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = INTEGER64TYPE - ISPOINTER
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
regid
|
regid
|
||||||
|
|
Loading…
Reference in a new issue