@@ -101,9 +101,8 @@ distclean: clean | |||||
realclean: distclean | realclean: distclean | ||||
rm -f TAGS | rm -f TAGS | ||||
# Version number changed from 2.20 to 2.40 by PE | |||||
dist: $(DISTFILES) | dist: $(DISTFILES) | ||||
echo bwbasic-2.40 > .fname | |||||
echo bwbasic-2.50 > .fname | |||||
rm -rf `cat .fname` | rm -rf `cat .fname` | ||||
mkdir `cat .fname` | mkdir `cat .fname` | ||||
ln $(DISTFILES) `cat .fname` | ln $(DISTFILES) `cat .fname` | ||||
@@ -3,7 +3,7 @@ | |||||
README file for | README file for | ||||
Bywater BASIC Interpreter/Shell, version 2.40 | |||||
Bywater BASIC Interpreter/Shell, version 2.50 | |||||
--------------------------------------------- | --------------------------------------------- | ||||
Copyright (c) 1993, Ted A. Campbell | Copyright (c) 1993, Ted A. Campbell | ||||
@@ -24,6 +24,9 @@ | |||||
Version 2.40 modifications by Paul Edwards, | Version 2.40 modifications by Paul Edwards, | ||||
26 Jan 2009 | 26 Jan 2009 | ||||
Version 2.50 modifications by Paul Edwards, | |||||
4 June 2009 | |||||
@@ -197,6 +200,13 @@ CHANGE HISTORY | |||||
CHANGES FROM 2.40 to 2.50 | |||||
* Bug fixes | |||||
* New compilation procedure for MVS and CMS | |||||
CHANGES FROM 2.30 to 2.40 | CHANGES FROM 2.30 to 2.40 | ||||
* Bug fixes from Bill Chatfield | * Bug fixes from Bill Chatfield | ||||
@@ -2,7 +2,7 @@ del output.txt | |||||
call zipcms | call zipcms | ||||
rem for S/380 testing, use this | rem for S/380 testing, use this | ||||
call runcms allcms.exec output.txt all.zip | |||||
call runcms allcms.exec output.txt all.zip bwbasic-exe.vmarc | |||||
rem for S/390 testing, use this | rem for S/390 testing, use this | ||||
rem mvsendec encb all.zip all.dat | rem mvsendec encb all.zip all.dat | ||||
@@ -17,51 +17,12 @@ | |||||
-FINARGS | -FINARGS | ||||
EXEC GCCE BWBASIC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_INT C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_TBL C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_CMD C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_PRN C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_EXP C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_VAR C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_INP C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_FNC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_CND C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_OPS C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_DIO C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_STR C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_ELX C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_MTH C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_STC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWX_TTY C &SRC (PARM STDBWB | |||||
EXEC GCCE UNIXIO C &SRC (PARM STDBWB | |||||
FILEDEF INPUT TAP1 (LRECL 80 BLKSIZE 32720 RECFM FB | |||||
MVSUNZIP DD:INPUT &SRC | |||||
FILEDEF INPUT CLEAR | |||||
&STACK HT | |||||
LOAD BWBASIC (NOAUTO | |||||
INCLUDE BWB_INT (NOAUTO | |||||
INCLUDE BWB_TBL (NOAUTO | |||||
INCLUDE BWB_CMD (NOAUTO | |||||
INCLUDE BWB_PRN (NOAUTO | |||||
INCLUDE BWB_EXP (NOAUTO | |||||
INCLUDE BWB_VAR (NOAUTO | |||||
INCLUDE BWB_INP (NOAUTO | |||||
INCLUDE BWB_FNC (NOAUTO | |||||
INCLUDE BWB_CND (NOAUTO | |||||
INCLUDE BWB_OPS (NOAUTO | |||||
INCLUDE BWB_DIO (NOAUTO | |||||
INCLUDE BWB_STR (NOAUTO | |||||
INCLUDE BWB_ELX (NOAUTO | |||||
INCLUDE BWB_MTH (NOAUTO | |||||
INCLUDE BWB_STC (NOAUTO | |||||
INCLUDE BWX_TTY (NOAUTO | |||||
&STACK RT | |||||
INCLUDE UNIXIO (NOAUTO | |||||
EXEC COMPILE &SRC &EXE | |||||
GENMOD BWBASIC | |||||
COPY BWBASIC MODULE &SRC = = &EXE (REPLACE | |||||
COPY PROFILE BAS &SRC = = &EXE (REPLACE | |||||
* Quick test of bwbasic | |||||
BWBASIC "EXAMPLE BAS" | |||||
VMARC PACK * * &EXE (TAP2 BLOCK 80 |
@@ -1,11 +1,3 @@ | |||||
rem this is the name of the patch file | |||||
set bwbname=bwb1 | |||||
rem rm -fr bwbasic | |||||
rem md bwbasic | |||||
rem cd bwbasic | |||||
rem unzip ..\%bwbname% | |||||
rem chmod -R 666 * | |||||
call zipall | |||||
call bwbasic3 | |||||
del output.txt | |||||
call zipmvs | |||||
call subjobs | call subjobs |
@@ -754,7 +754,7 @@ exp_function( expression ) | |||||
sizeof( struct bwb_variable ), "exp_function" )) == NULL ) | sizeof( struct bwb_variable ), "exp_function" )) == NULL ) | ||||
{ | { | ||||
bwb_error( err_getmem ); | bwb_error( err_getmem ); | ||||
return NULL; | |||||
return OP_ERROR; | |||||
} | } | ||||
/* assign pointers to argument stack */ | /* assign pointers to argument stack */ | ||||
@@ -41,7 +41,7 @@ | |||||
/* Version number */ | /* Version number */ | ||||
#define VERSION "2.40" /* Current version number */ | |||||
#define VERSION "2.50" /* Current version number */ | |||||
/*************************************************************** | /*************************************************************** | ||||
@@ -160,6 +160,10 @@ | |||||
#define HAVE_SYSSTAT TRUE /* Compiler has <sys/stat.h> header */ | #define HAVE_SYSSTAT TRUE /* Compiler has <sys/stat.h> header */ | ||||
#endif | #endif | ||||
#ifndef HAVE_MATHERR | |||||
#define HAVE_MATHERR FALSE /* Compiler doesn't call matherr */ | |||||
#endif | |||||
/*************************************************************** | /*************************************************************** | ||||
bwbasic.h: Part I-C: Define Program Configuration | bwbasic.h: Part I-C: Define Program Configuration | ||||
@@ -3,32 +3,32 @@ | |||||
//CREATE PROC BWBPREF='BWBASIC' | //CREATE PROC BWBPREF='BWBASIC' | ||||
//DELETE EXEC PGM=IEFBR14 | //DELETE EXEC PGM=IEFBR14 | ||||
//DD1 DD DSN=&BWBPREF..SOURCE,DISP=(MOD,DELETE), | //DD1 DD DSN=&BWBPREF..SOURCE,DISP=(MOD,DELETE), | ||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//DD2 DD DSN=&BWBPREF..INCLUDE,DISP=(MOD,DELETE), | //DD2 DD DSN=&BWBPREF..INCLUDE,DISP=(MOD,DELETE), | ||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//DD3 DD DSN=&BWBPREF..NCALIB,DISP=(MOD,DELETE), | //DD3 DD DSN=&BWBPREF..NCALIB,DISP=(MOD,DELETE), | ||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//DD4 DD DSN=&BWBPREF..LINKLIB,DISP=(MOD,DELETE), | //DD4 DD DSN=&BWBPREF..LINKLIB,DISP=(MOD,DELETE), | ||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//DD5 DD DSN=&BWBPREF..JCL,DISP=(MOD,DELETE), | //DD5 DD DSN=&BWBPREF..JCL,DISP=(MOD,DELETE), | ||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//* | //* | ||||
//ALLOC EXEC PGM=IEFBR14 | //ALLOC EXEC PGM=IEFBR14 | ||||
//DD1 DD DSN=&BWBPREF..SOURCE,DISP=(,CATLG), | //DD1 DD DSN=&BWBPREF..SOURCE,DISP=(,CATLG), | ||||
// DCB=(RECFM=VB,LRECL=224,BLKSIZE=9024), | |||||
// SPACE=(CYL,(7,1,10)),UNIT=SYSDA | |||||
// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6144), | |||||
// SPACE=(6144,(160,160,44)),UNIT=SYSALLDA | |||||
//DD2 DD DSN=&BWBPREF..INCLUDE,DISP=(,CATLG), | //DD2 DD DSN=&BWBPREF..INCLUDE,DISP=(,CATLG), | ||||
// DCB=(RECFM=VB,LRECL=224,BLKSIZE=9024), | |||||
// SPACE=(CYL,(1,1,10)),UNIT=SYSDA | |||||
// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6144), | |||||
// SPACE=(6144,(22,22,44)),UNIT=SYSALLDA | |||||
//DD3 DD DSN=&BWBPREF..NCALIB,DISP=(,CATLG), | //DD3 DD DSN=&BWBPREF..NCALIB,DISP=(,CATLG), | ||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=3200), | |||||
// SPACE=(CYL,(1,1,10)),UNIT=SYSDA | |||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144), | |||||
// SPACE=(6144,(60,60,44)),UNIT=SYSALLDA | |||||
//DD4 DD DSN=&BWBPREF..LINKLIB,DISP=(,CATLG), | //DD4 DD DSN=&BWBPREF..LINKLIB,DISP=(,CATLG), | ||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=3200), | |||||
// SPACE=(CYL,(1,1,10)),UNIT=SYSDA | |||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144), | |||||
// SPACE=(6144,(70,70,44)),UNIT=SYSALLDA | |||||
//DD5 DD DSN=&BWBPREF..JCL,DISP=(,CATLG), | //DD5 DD DSN=&BWBPREF..JCL,DISP=(,CATLG), | ||||
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=9040), | |||||
// SPACE=(CYL,(1,1,20)),UNIT=SYSDA | |||||
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=6080), | |||||
// SPACE=(6080,(17,17,44)),UNIT=SYSALLDA | |||||
// PEND | // PEND | ||||
//* | //* | ||||
//S1 EXEC CREATE | //S1 EXEC CREATE | ||||
@@ -1,4 +0,0 @@ | |||||
del allzips.txt | |||||
mvsendec encb all.zip allzips.txt | |||||
m4 bwbasic3.m4 >bwbasic3.jcl | |||||
del allzips.txt |
@@ -0,0 +1,20 @@ | |||||
//BWBGEN JOB CLASS=C,REGION=0K | |||||
//* | |||||
//TRANSFER PROC BWBPREF='BWBASIC' | |||||
//DELETE EXEC PGM=IEFBR14 | |||||
//DD1 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//* | |||||
//COPY EXEC PGM=IEBGENER | |||||
//SYSUT1 DD DSN=HERC02.IN,DISP=OLD, | |||||
// UNIT=TAPE,VOL=SER=PCTOMF,LABEL=(1,NL), | |||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144) | |||||
//SYSUT2 DD DSN=&BWBPREF..ALLZIPS,DISP=(,CATLG), | |||||
// SPACE=(6144,(200,200),RLSE),UNIT=SYSALLDA, | |||||
// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144) | |||||
//SYSIN DD DUMMY | |||||
//SYSPRINT DD SYSOUT=* | |||||
// PEND | |||||
//* | |||||
//S1 EXEC TRANSFER | |||||
// |
@@ -1,22 +0,0 @@ | |||||
//BWBGEN JOB CLASS=C,REGION=0K | |||||
//* | |||||
//TRANSFER PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB' | |||||
//DELETE EXEC PGM=IEFBR14 | |||||
//DD1 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), | |||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
//* | |||||
//MVSENDEC EXEC PGM=MVSENDEC,PARM='decb dd:input dd:output' | |||||
//STEPLIB DD DSN=&PDPPREF..LINKLIB,DISP=SHR | |||||
//INPUT DD DUMMY | |||||
//OUTPUT DD DSN=&BWBPREF..ALLZIPS,DISP=(,CATLG), | |||||
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120), | |||||
// SPACE=(CYL,(20,10),RLSE),UNIT=SYSDA | |||||
//SYSIN DD DUMMY | |||||
//SYSPRINT DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | |||||
//SYSTERM DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | |||||
// PEND | |||||
//* | |||||
//S1 EXEC TRANSFER | |||||
//MVSENDEC.INPUT DD * | |||||
undivert(allzips.txt)/* | |||||
// |
@@ -3,11 +3,11 @@ | |||||
//CREATE EXEC PGM=IEFBR14 | //CREATE EXEC PGM=IEFBR14 | ||||
//DD1 DD DSN=&&ZIPS,DISP=(,PASS), | //DD1 DD DSN=&&ZIPS,DISP=(,PASS), | ||||
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120), | // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120), | ||||
// SPACE=(CYL,(20,10,20)),UNIT=SYSDA | |||||
// SPACE=(6144,(100,100,44)),UNIT=SYSALLDA | |||||
//* | //* | ||||
//UNZIP1 PROC PDPPREF='PDPCLIB',BWBPREF='BWBASIC' | |||||
//MINI EXEC PGM=MVSUNZIP,PARM='dd:input dd:output binary' | |||||
//STEPLIB DD DSN=&PDPPREF..LINKLIB,DISP=SHR | |||||
//UNZIP1 PROC MINPREF='MINIZIP',BWBPREF='BWBASIC' | |||||
//MINI EXEC PGM=MINIUNZ,PARM='dd:input dd:output' | |||||
//STEPLIB DD DSN=&MINPREF..LINKLIB,DISP=SHR | |||||
//INPUT DD DSN=&BWBPREF..ALLZIPS,DISP=SHR | //INPUT DD DSN=&BWBPREF..ALLZIPS,DISP=SHR | ||||
//OUTPUT DD DSN=&&ZIPS,DISP=(OLD,PASS) | //OUTPUT DD DSN=&&ZIPS,DISP=(OLD,PASS) | ||||
//SYSIN DD DUMMY | //SYSIN DD DUMMY | ||||
@@ -15,9 +15,9 @@ | |||||
//SYSTERM DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | //SYSTERM DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | ||||
// PEND | // PEND | ||||
//* | //* | ||||
//UNZIP2 PROC IN=,OUT=,PDPPREF='PDPCLIB',BWBPREF='BWBASIC' | |||||
//MINI EXEC PGM=MVSUNZIP,PARM='dd:input dd:output' | |||||
//STEPLIB DD DSN=&PDPPREF..LINKLIB,DISP=SHR | |||||
//UNZIP2 PROC IN=,OUT=,MINPREF='MINIZIP',BWBPREF='BWBASIC' | |||||
//MINI EXEC PGM=MINIUNZ,PARM='-a dd:input dd:output' | |||||
//STEPLIB DD DSN=&MINPREF..LINKLIB,DISP=SHR | |||||
//INPUT DD DSN=&&ZIPS(&IN),DISP=(OLD,PASS) | //INPUT DD DSN=&&ZIPS(&IN),DISP=(OLD,PASS) | ||||
//OUTPUT DD DSN=&BWBPREF..&OUT,DISP=SHR | //OUTPUT DD DSN=&BWBPREF..&OUT,DISP=SHR | ||||
//SYSIN DD DUMMY | //SYSIN DD DUMMY | ||||
@@ -2,7 +2,7 @@ | |||||
//* | //* | ||||
//BWBCMP PROC BWBPREF='BWBASIC',MEMBER='',GCCPREF='GCC', | //BWBCMP PROC BWBPREF='BWBASIC',MEMBER='',GCCPREF='GCC', | ||||
// PDPPREF='PDPCLIB', | // PDPPREF='PDPCLIB', | ||||
// COS1='-w -S -ansi', | |||||
// COS1='-Os -S -ansi', | |||||
// COS2='-o dd:out -' | // COS2='-o dd:out -' | ||||
//* | //* | ||||
//COMP EXEC PGM=GCC, | //COMP EXEC PGM=GCC, | ||||
@@ -13,24 +13,24 @@ | |||||
// DD DSN=&PDPPREF..INCLUDE,DISP=SHR | // DD DSN=&PDPPREF..INCLUDE,DISP=SHR | ||||
//SYSINCL DD DSN=&BWBPREF..INCLUDE,DISP=SHR,DCB=BLKSIZE=32720 | //SYSINCL DD DSN=&BWBPREF..INCLUDE,DISP=SHR,DCB=BLKSIZE=32720 | ||||
// DD DSN=&PDPPREF..INCLUDE,DISP=SHR | // DD DSN=&PDPPREF..INCLUDE,DISP=SHR | ||||
//OUT DD DSN=&&TEMP1,DISP=(,PASS),UNIT=SYSDA, | |||||
// DCB=(LRECL=80,BLKSIZE=9040,RECFM=FB), | |||||
// SPACE=(CYL,(10,10)) | |||||
//SYSPRINT DD SYSOUT=*,DCB=(LRECL=132,BLKSIZE=132) | |||||
//SYSTERM DD SYSOUT=*,DCB=(LRECL=132,BLKSIZE=132) | |||||
//OUT DD DSN=&&TEMP1,DISP=(,PASS),UNIT=SYSALLDA, | |||||
// DCB=(LRECL=80,BLKSIZE=6080,RECFM=FB), | |||||
// SPACE=(6080,(500,500)) | |||||
//SYSPRINT DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | |||||
//SYSTERM DD SYSOUT=*,DCB=(RECFM=F,LRECL=132,BLKSIZE=132) | |||||
//* | //* | ||||
//ASM EXEC PGM=ASMBLR, | //ASM EXEC PGM=ASMBLR, | ||||
// PARM='DECK,NOLIST', | // PARM='DECK,NOLIST', | ||||
// COND=(4,LT,COMP) | // COND=(4,LT,COMP) | ||||
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR | //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR | ||||
// DD DSN=&PDPPREF..MACLIB,DISP=SHR | // DD DSN=&PDPPREF..MACLIB,DISP=SHR | ||||
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT2 DD UNIT=SYSALLDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT3 DD UNIT=SYSALLDA,SPACE=(CYL,(2,1)) | |||||
//SYSPRINT DD SYSOUT=* | //SYSPRINT DD SYSOUT=* | ||||
//SYSLIN DD DUMMY | //SYSLIN DD DUMMY | ||||
//SYSGO DD DUMMY | //SYSGO DD DUMMY | ||||
//SYSPUNCH DD DSN=&&OBJSET,UNIT=SYSDA,SPACE=(80,(240,200)), | |||||
//SYSPUNCH DD DSN=&&OBJSET,UNIT=SYSALLDA,SPACE=(80,(240,200)), | |||||
// DISP=(,PASS) | // DISP=(,PASS) | ||||
//SYSIN DD DSN=&&TEMP1,DISP=(OLD,DELETE) | //SYSIN DD DSN=&&TEMP1,DISP=(OLD,DELETE) | ||||
//* | //* | ||||
@@ -38,7 +38,7 @@ | |||||
// COND=((4,LT,COMP),(4,LT,ASM)) | // COND=((4,LT,COMP),(4,LT,ASM)) | ||||
//SYSLIN DD DSN=&&OBJSET,DISP=(OLD,DELETE) | //SYSLIN DD DSN=&&OBJSET,DISP=(OLD,DELETE) | ||||
//SYSLMOD DD DSN=&BWBPREF..NCALIB(&MEMBER),DISP=SHR | //SYSLMOD DD DSN=&BWBPREF..NCALIB(&MEMBER),DISP=SHR | ||||
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,1)) | |||||
//SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(2,1)) | |||||
//SYSPRINT DD SYSOUT=* | //SYSPRINT DD SYSOUT=* | ||||
// PEND | // PEND | ||||
//* | //* | ||||
@@ -1,7 +1,7 @@ | |||||
//BWBGEN JOB CLASS=C,REGION=0K | //BWBGEN JOB CLASS=C,REGION=0K | ||||
//LINK PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB' | //LINK PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB' | ||||
//LKED EXEC PGM=IEWL,PARM='MAP,LIST,SIZE=(999424,65536)' | //LKED EXEC PGM=IEWL,PARM='MAP,LIST,SIZE=(999424,65536)' | ||||
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(30,10)) | |||||
//SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(30,10)) | |||||
//SYSPRINT DD SYSOUT=* | //SYSPRINT DD SYSOUT=* | ||||
//SYSLIB DD DSN=&PDPPREF..NCALIB,DISP=SHR,DCB=BLKSIZE=32760 | //SYSLIB DD DSN=&PDPPREF..NCALIB,DISP=SHR,DCB=BLKSIZE=32760 | ||||
// DD DSN=&BWBPREF..NCALIB,DISP=SHR | // DD DSN=&BWBPREF..NCALIB,DISP=SHR | ||||
@@ -10,8 +10,10 @@ | |||||
//* | //* | ||||
//CLEAN PROC BWBPREF='BWBASIC' | //CLEAN PROC BWBPREF='BWBASIC' | ||||
//DELETE EXEC PGM=IEFBR14 | //DELETE EXEC PGM=IEFBR14 | ||||
//DD1 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), | |||||
// UNIT=SYSDA,SPACE=(TRK,(0)) | |||||
//DD0 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
//DD3 DD DSN=&BWBPREF..NCALIB,DISP=(MOD,DELETE), | |||||
// UNIT=SYSALLDA,SPACE=(TRK,(0)) | |||||
// PEND | // PEND | ||||
//* | //* | ||||
//S1 EXEC RUNBW | //S1 EXEC RUNBW | ||||
@@ -1,14 +1,50 @@ | |||||
BWBASIC for MVS | |||||
--------------- | |||||
BWBASIC for MVS (3.8 and above) and CMS (VM/370 and above) | |||||
---------------------------------------------------------- | |||||
To compile BWBASIC on MVS, run the following commands: | |||||
To compile bwbasic for MVS, you will need a suitable MVS C | |||||
compiler such as GCCMVS. | |||||
zipall | |||||
bwbasic3 | |||||
subjobs | |||||
You then need to transfer all the source code to the | |||||
mainframe. zipmvs.bat may be useful for doing this, but the | |||||
process of transferring files is beyond the scope of this | |||||
document and site-specific. | |||||
after taking a look at what they do and seeing if they | |||||
are appropriate to your environment. | |||||
Or just run "allmvs" which will do all of that. | |||||
On the mainframe, modify (according to your site's | |||||
requirements), then run, the following bits of JCL: | |||||
bwbasic1.jcl | |||||
bwbasic2.jcl | |||||
bwbasic3.jcl (optional - example only) | |||||
bwbasic4.jcl (optional - example only) | |||||
bwbasic5.jcl | |||||
bwbasic6.jcl | |||||
bwbasic7.jcl | |||||
Note that the batch file "allmvs" provides an example of how | |||||
the process was automated at one site. | |||||
The end result of this process is that a BWBASIC load module | |||||
will be created in BWBASIC.LINKLIB. | |||||
Version: | |||||
bwbasic.h contains the version number, and this is displayed | |||||
when you invoke the program with no parameters. | |||||
Support: | |||||
For BWBASIC for MVS support, try here: | |||||
http://tech.groups.yahoo.com/group/hercules-os380/ | |||||
CMS: | |||||
The steps for CMS are similar, except instead of running JCL, | |||||
you need to execute the "compile" exec. An example "allcms" | |||||
Windows batch file shows one way of automating this process. |
@@ -378,8 +378,16 @@ bwx_shell( l ) | |||||
the error message, then calls the | the error message, then calls the | ||||
break_handler() routine. | break_handler() routine. | ||||
Note that this function isn't supported | |||||
by all compilers (it's not part of C90). | |||||
If it exists, it's an extension in math.h | |||||
and it will be called whenever there's | |||||
a divide by zero or something like that. | |||||
***************************************************************/ | ***************************************************************/ | ||||
#if HAVE_MATHERR | |||||
#if ANSI_C | #if ANSI_C | ||||
int | int | ||||
matherr( struct exception *except ) | matherr( struct exception *except ) | ||||
@@ -396,6 +404,8 @@ matherr( except ) | |||||
return FALSE; | return FALSE; | ||||
} | } | ||||
#endif | |||||
#if COMMON_CMDS | #if COMMON_CMDS | ||||
/*************************************************************** | /*************************************************************** | ||||
@@ -21,5 +21,5 @@ call stdcomp bwb_stc.c | |||||
call stdcomp bwx_tty.c | call stdcomp bwx_tty.c | ||||
call stdcomp unixio.c | call stdcomp unixio.c | ||||
gcc -o bwbasic.exe *.o | |||||
rem gcc -o bwbasic.exe *.o | |||||
rem bcc32 -ebwbasic.exe *.obj | rem bcc32 -ebwbasic.exe *.obj |
@@ -0,0 +1,67 @@ | |||||
* Usage - COMPILE <SRC> <EXE> | |||||
* This script compiles all the files on SRC disk (default is A) | |||||
* and copies the resultant modules to the EXE disk (default B) | |||||
&SRC = A | |||||
&EXE = B | |||||
&IF &INDEX EQ 0 &GOTO -FINARGS | |||||
&SRC = &1 | |||||
&ARGS &2 &3 &4 &5 &6 &7 &8 &9 | |||||
&IF &INDEX EQ 0 &GOTO -FINARGS | |||||
&EXE = &1 | |||||
-FINARGS | |||||
EXEC GCCE BWBASIC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_INT C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_TBL C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_CMD C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_PRN C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_EXP C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_VAR C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_INP C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_FNC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_CND C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_OPS C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_DIO C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_STR C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_ELX C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_MTH C &SRC (PARM STDBWB | |||||
EXEC GCCE BWB_STC C &SRC (PARM STDBWB | |||||
EXEC GCCE BWX_TTY C &SRC (PARM STDBWB | |||||
EXEC GCCE UNIXIO C &SRC (PARM STDBWB | |||||
&STACK HT | |||||
LOAD BWBASIC (NOAUTO | |||||
INCLUDE BWB_INT (NOAUTO | |||||
INCLUDE BWB_TBL (NOAUTO | |||||
INCLUDE BWB_CMD (NOAUTO | |||||
INCLUDE BWB_PRN (NOAUTO | |||||
INCLUDE BWB_EXP (NOAUTO | |||||
INCLUDE BWB_VAR (NOAUTO | |||||
INCLUDE BWB_INP (NOAUTO | |||||
INCLUDE BWB_FNC (NOAUTO | |||||
INCLUDE BWB_CND (NOAUTO | |||||
INCLUDE BWB_OPS (NOAUTO | |||||
INCLUDE BWB_DIO (NOAUTO | |||||
INCLUDE BWB_STR (NOAUTO | |||||
INCLUDE BWB_ELX (NOAUTO | |||||
INCLUDE BWB_MTH (NOAUTO | |||||
INCLUDE BWB_STC (NOAUTO | |||||
INCLUDE BWX_TTY (NOAUTO | |||||
&STACK RT | |||||
INCLUDE UNIXIO (NOAUTO | |||||
GENMOD BWBASIC | |||||
COPY BWBASIC MODULE &SRC = = &EXE (REPLACE | |||||
COPY PROFILE BAS &SRC = = &EXE (REPLACE | |||||
* Quick test of bwbasic | |||||
BWBASIC "EXAMPLE BAS" |
@@ -1 +1 @@ | |||||
-w -S -ansi -o dd:out - | |||||
-Os -S -ansi -o dd:out - |
@@ -1,3 +1,3 @@ | |||||
rem gcc -w -c -ansi -I . %1 %2 %3 %4 %5 %6 %7 %8 %9 | rem gcc -w -c -ansi -I . %1 %2 %3 %4 %5 %6 %7 %8 %9 | ||||
rem bcc32 -w- -A -c -I. %1 %2 %3 %4 %5 %6 %7 %8 %9 | rem bcc32 -w- -A -c -I. %1 %2 %3 %4 %5 %6 %7 %8 %9 | ||||
gccmvs -w -S -ansi -nostdinc -I ../pdos/pdpclib -I . %1 %2 %3 %4 %5 %6 %7 %8 %9 | |||||
gccmvs -Os -S -ansi -nostdinc -I ../pdos/pdpclib -I . %1 %2 %3 %4 %5 %6 %7 %8 %9 |
@@ -6,4 +6,4 @@ type bwbasic4.jcl >>alljcl.jcl | |||||
type bwbasic5.jcl >>alljcl.jcl | type bwbasic5.jcl >>alljcl.jcl | ||||
type bwbasic6.jcl >>alljcl.jcl | type bwbasic6.jcl >>alljcl.jcl | ||||
type bwbasic7.jcl >>alljcl.jcl | type bwbasic7.jcl >>alljcl.jcl | ||||
call runmvs alljcl.jcl alljcl.txt | |||||
call runmvs alljcl.jcl output.txt all.zip |
@@ -1,11 +0,0 @@ | |||||
del bwbinc.zip | |||||
del bwbsrc.zip | |||||
del bwbjcl.zip | |||||
del all.zip | |||||
del bwbasic3.jcl | |||||
del alljcl.jcl | |||||
del alljcl.txt | |||||
zip -0 -X -ll -j bwbsrc.zip *.c | |||||
zip -0 -X -ll -j bwbinc.zip *.h | |||||
zip -0 -X -ll -j bwbjcl.zip *.jcl README COPYING | |||||
zip -0 -X all *.zip |
@@ -1,3 +1,2 @@ | |||||
del all.zip | del all.zip | ||||
del alljcl.txt | |||||
zip -0 -X -ll -j all *.c *.h *.exec *.bas *.parm README COPYING | zip -0 -X -ll -j all *.c *.h *.exec *.bas *.parm README COPYING |
@@ -0,0 +1,9 @@ | |||||
del bwbinc.zip | |||||
del bwbsrc.zip | |||||
del bwbjcl.zip | |||||
del all.zip | |||||
del alljcl.jcl | |||||
zip -9 -X -ll -j bwbsrc.zip *.c | |||||
zip -9 -X -ll -j bwbinc.zip *.h | |||||
zip -9 -X -ll -j bwbjcl.zip *.jcl README COPYING | |||||
zip -9 -X all *.zip |