diff --git a/branches/wbw/Apps/crossdev/2DRIVE.C b/branches/wbw/Apps/crossdev/2DRIVE.C new file mode 100644 index 00000000..c80e722d --- /dev/null +++ b/branches/wbw/Apps/crossdev/2DRIVE.C @@ -0,0 +1,68 @@ +/* twodrive.c 7/11/2012 dwg - */ + +/* This program is experimental and is not for release because + it contains techniques which are not recommended because + there are better API functions to do these operations. */ + + +#include "cpmbios.h" +#include "bioscall.h" + +#include "cpmbdos.h" +#include "bdoscall.h" + +#define u8 unsigned char +#define u16 unsigned int + +struct DPH * pDPH_C; +struct DPB * pDPB_C; +u8 * pDU_C; +u16 * pCUR_C; +u16 * pNUM_C; + +struct DPH * pDPH_D; +struct DPB * pDPB_D; +u8 * pDU_D; +u16 * pCUR_D; +u16 * pNUM_D; + +main(argc,argv) + int argc; + char *argv[]; +{ + + ireghl = pSELDSK; + iregbc = DRIVEC; + iregde = 0; + bioscall(); + pDPH_C = ireghl; + pDPB_C = pDPH_C->dpb; + pDU_C = ireghl -1; + *pDU_C = 0X41; + printf("Current C: DevUnit is %02x\n",*pDU_C); + pCUR_C = ireghl + 18; + *pCUR_C = 0; + printf("Current C: Logical Unit is %d\n",* pCUR_C); + pNUM_C = ireghl + 20; + *pNUM_C = 64/9; + printf("Current C: Number of LU's is %d\n",* pNUM_C); + + ireghl = pSELDSK; + iregbc = DRIVED; + iregde = 0; + bioscall(); + pDPH_D = ireghl; + pDPB_D = pDPH_D->dpb; + pDU_D = ireghl -1; + *pDU_D = 0x41; + printf("Current D: DevUnit is %02x\n",*pDU_D); + pCUR_D = ireghl + 18; + *pCUR_D = 1; + printf("Current D: Logical Unit is %d\n",* pCUR_D); + pNUM_D = ireghl + 20; + *pNUM_D = 64/9; + printf("Current D: Number of LU's is %d\n",* pNUM_D); + + +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/2MAP.C b/branches/wbw/Apps/crossdev/2MAP.C new file mode 100644 index 00000000..48dfb65b --- /dev/null +++ b/branches/wbw/Apps/crossdev/2MAP.C @@ -0,0 +1,322 @@ +/* map.c 6/7/2012 dwg - */ + +#include "portab.h" +#include "globals.h" +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" + +#include "cpmbind.h" + +#include "infolist.h" +#include "dphdpb.h" +#include "dphmap.h" +#include "metadata.h" +#include "clogical.h" +#include "applvers.h" + +#define MAXDRIVE 8 + +/* Drive List Geometry */ +#define COL1 0 +#define COL2 (80/4) +#define COL3 (80/2) +#define COL4 (COL2+COL3) +#define LINE 3 + +/* Logical Unit List Geometry */ +#define LGUT 5 +#define COL1A 0 +#define COL2A (80/3) +#define COL3A (2*COL2A) + +/* Nomenclature Geometry */ +#define LINE2 8 + +/* Misc Info Geometry */ +#define CDLINE 6 + +/* BDOS Function number */ +#define RETCURR 25 + +/* function defined in bdoscall.asm */ +extern lurst(); + +struct BIOS * pBIOS; + +struct DPH * pDPH; + +int devunit; +int dev; +int unit; +int currlu; +int numlu; +int drivenum; +int drive; +int deflu; + +char szTemp[128]; + +int readsec(drive,track,sector,buffer) + int drive; + int track; + int sector; + unsigned int buffer; +{ + ireghl = pSELDSK; + iregbc = drive; + iregde = 0; + bioscall(); + + ireghl = pSETTRK; + iregbc = track; + bioscall(); + + ireghl = pSETSEC; + iregbc = sector; + bioscall(); + + ireghl = pSETDMA; + iregbc = buffer; + bioscall(); + + ireghl = pREAD; + bioscall(); + return irega; +} + + + + +int haslu(dr) + int dr; +{ + if(0 < lugnum(dr)) { + return TRUE; + } else { + return FALSE; + } +} + + + +void dispdph(l,c,drive,ptr) + int l; + int c; + char drive; + struct DPH *ptr; +{ + +/* + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + unsigned int dpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +*/ + crtlc(l,c); + printf("%c: ",drive); + + devunit = lugdu(drive-'A'); + dev = devunit & 0xf0; + unit = devunit & 0x0f; + + currlu = lugcur(drive-'A'); + switch(dev) { + case DEV_MD: + if(0 == unit) printf("ROM"); + if(1 == unit) printf("RAM"); + break; + case DEV_FD: + printf("FD%d",unit); + break; + case DEV_IDE: + printf("IDE%d",unit); + break; + case DEV_ATAPI: + printf("ATAPI%d",unit); + break; + case DEV_PPIDE: + printf("PPIDE%d",unit); + break; + case DEV_SD: + printf("SD%d",unit); + break; + case DEV_PRPSD: + printf("PRPSD%d",unit); + break; + default: + printf("UNK"); + break; + }; + + if('L' == (unsigned char)ptr->sigl) { + if('U' == (unsigned char)ptr->sigu) { +/* printf("-LU%d",(int)ptr->current); */ + printf("-LU%d",currlu); + } + } + +/* printf("dpb=0x%04x, ",(unsigned int)ptr->dpb); + printf("sigl=0x%02x, ",(unsigned char)ptr->sigl); + printf("sigu=0x%02x, ",(unsigned char)ptr->sigu); + printf("curr=0x%04x, ",(unsigned int)ptr->current); + printf("numb=0x%04x", (unsigned int)ptr->number); +*/ + +} + +int main(argc,argv) + int argc; + char *argv[]; +{ + int i; + int mylu; + int drivenum; + int column; + int line; + char szDrive[32]; + char szLuNum[32]; + + if(argc == 3) { + + strcpy(szDrive,argv[1]); + strcpy(szLuNum,argv[2]); + + mylu = atoi(szLuNum); + + if(strlen(szDrive) == 2) { + if(':' == szDrive[1]) { + switch(szDrive[0]) { + case 'a': + case 'A': + luscur(0,mylu); + break; + case 'b': + case 'B': + luscur(1,mylu); + break; + case 'c': + case 'C': + luscur(2,mylu); + break; + case 'd': + case 'D': + luscur(3,mylu); + break; + case 'e': + case 'E': + luscur(4,mylu); + break; + case 'f': + case 'F': + luscur(5,mylu); + break; + case 'g': + case 'G': + luscur(6,mylu); + break; + case 'h': + case 'H': + luscur(7,mylu); + break; + default: + break; + } + + } + } + exit(1); + } + + + pBIOS = BIOSAD; + + crtinit(); + crtclr(); + crtlc(0,0); + + printf("MAP.COM %d/%d/%d v%d.%d.%d.%d", + A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); + printf(" dwg - System Storage Drives and Logical Units"); + + ireghl = pGETINFO; + bioscall(); + pINFOLIST = ireghl; + + crtlc(CDLINE,COL3A+LGUT); + printf("infolist.version %d\n",pINFOLIST->version); + + pDPHMAP = (struct DPHMAPA *)pINFOLIST->dphmap; + + dispdph(LINE, COL1+LGUT-1,'A',(struct DPH *)pDPHMAP->drivea); + dispdph(LINE+1,COL1+LGUT-1,'B',(struct DPH *)pDPHMAP->driveb); + dispdph(LINE, COL2+LGUT-1,'C',(struct DPH *)pDPHMAP->drivec); + dispdph(LINE+1,COL2+LGUT-1,'D',(struct DPH *)pDPHMAP->drived); + dispdph(LINE, COL3+LGUT-1,'E',(struct DPH *)pDPHMAP->drivee); + dispdph(LINE+1,COL3+LGUT-1,'F',(struct DPH *)pDPHMAP->drivef); + dispdph(LINE, COL4+LGUT-1,'G',(struct DPH *)pDPHMAP->driveg); + dispdph(LINE+1,COL4+LGUT-1,'H',(struct DPH *)pDPHMAP->driveh); + + dregbc = RETCURR; + bdoscall(); + drive = drega; + + crtlc(CDLINE,5); + printf("Current drive is %c:",'A'+drive); + + devunit = lugdu(drive); + dev = devunit & 0xf0; + unit = devunit & 0x0f; + currlu = lugcur(drive); + deflu = currlu; + numlu = lugnum(drive); + + crtlc(CDLINE,COL2A+LGUT); + printf("Number of LUs is %d\n",lugnum(drive)); + + if(0. + +;---------------------------------------------------------------------- + maclib portab + maclib globals + maclib cpmbdos + maclib printers + maclib banner + maclib applvers + maclib z80 + maclib memory + maclib version + maclib cpmappl + maclib banner +;----------------------- + + do$start + + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'ACCESS.COM $' + date + serial + product + originator + oriname +uuid db '08D4953E-B6F4-4673-990C-7E17A0A299BD$' +around$bandata: + + sbanner argv + + lda 80h ; pick up the command tail length provided by CCP + cpi 0 ; were there any parameters given? + jnz no$usage ; If not, go around + printf 'usage - access ' + jmp do$exit +no$usage: + + memcpy work$fcb,PRIFCB,32 ; Save initial default FCB from CCP + + printf 'Checking: ' + + mvi a,'$' ; place a terminating dollar sign + sta PRIFCB+9 ; at the end of the filname field + print PRIFCB+1 ; and print the filename portion + + conout '.' ; print the seperating dot + + memcpy PRIFCB,work$fcb,16 ; get a fresh copy of the initial FCB + mvi a,'$' ; place a terminating dollar sign + sta PRIFCB+12 ; at the end of the filetype field + print PRIFCB+9 ; and print the filetype + print crlf ; followed by a CR and LF + + memcpy PRIFCB,work$fcb,32 ; restore the initial FCB + + mvi c,FOPEN ; Try to open the given filename + lxi d,PRIFCB ; using the primary default FCB + call BDOS ; with a BDOS call + cpi 255 ; Test for Open Failure (255) + jnz done ; jump if file existed + + mvi c,FDELETE ; Delete the A:$$$.SUB file + lxi d,del$fcb ; using an alternative FCB + call BDOS + + printf 'Submit file terminated due to missing file$' + + jmp do$exit ; Go to the one true exit point + +done: + printf 'File found, Submit may proceed' +do$exit: + do$end + + newfcb del$fcb,1,'$$$ SUB' + +work$fcb ds 36 ; A place to save a copy of the default FCB on entry + +crlf db CR,LF ; a dollar sign terminated CR and LF +term db '$' ; a general purpose terminating character + + end start + +; eof - access.asm + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/ACCESS.BAT b/branches/wbw/Apps/crossdev/ACCESS.BAT new file mode 100644 index 00000000..c233bcdb --- /dev/null +++ b/branches/wbw/Apps/crossdev/ACCESS.BAT @@ -0,0 +1,18 @@ +rem access.sub 9/5/2012 dwg - build access from sources + +if not exist access.rel erase access.cpm +if not exist access.rel z80mu rmac access + +if not exist printers.rel erase access.cpm +if not exist printers.rel z80mu rmac printers + +if not exist memory.rel erase access.cpm +if not exist memory.rel z80mu rmac memory + +if not exist banner.rel erase access.cpm +if not exist banner.rel z80mu rmac banner + +if not exist access.cpm z80mu link access,memory,banner,printers +if not exist access.cpm rename access.com access.cpm + +dir access.cpm diff --git a/branches/wbw/Apps/crossdev/ACCESS.CPM b/branches/wbw/Apps/crossdev/ACCESS.CPM new file mode 100644 index 00000000..dbf6b878 Binary files /dev/null and b/branches/wbw/Apps/crossdev/ACCESS.CPM differ diff --git a/branches/wbw/Apps/crossdev/ACCESS.REL b/branches/wbw/Apps/crossdev/ACCESS.REL new file mode 100644 index 00000000..0b69846a Binary files /dev/null and b/branches/wbw/Apps/crossdev/ACCESS.REL differ diff --git a/branches/wbw/Apps/crossdev/ACCESS.SUB b/branches/wbw/Apps/crossdev/ACCESS.SUB new file mode 100644 index 00000000..66ec69d7 --- /dev/null +++ b/branches/wbw/Apps/crossdev/ACCESS.SUB @@ -0,0 +1,7 @@ +e:rem access.sub 9/5/2012 dwg - build access from sources +rasm80 access +rasm80 printers +rasm80 memory +rasm80 banner +link80 access,memory,banner,printers + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/ACCESS.SYM b/branches/wbw/Apps/crossdev/ACCESS.SYM new file mode 100644 index 00000000..a05bf1be --- /dev/null +++ b/branches/wbw/Apps/crossdev/ACCESS.SYM @@ -0,0 +1,8 @@ +0103 HEXREF 0113 IDSIG 0115 IDRMJ 0116 IDRMN +0117 IDRUP 0118 IDRTP 0119 IDMON 011A IDDAY +011B IDYR 0120 PRESTK 0122 BEGIN 09C1 PRDWOR +0999 PRHBYT 09AE PRHWOR 0554 XBANNE 07FF XSBANN +0546 XMEMCP 0547 XMEMSE 0983 PRHNYB 09CD PDEC +09EF PDEC1 09F1 PDEC2 0A0D PDEC3 0A24 PDEC4 +0A25 PDEC5 + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/ANSI.H b/branches/wbw/Apps/crossdev/ANSI.H new file mode 100644 index 00000000..a6e6f32f Binary files /dev/null and b/branches/wbw/Apps/crossdev/ANSI.H differ diff --git a/branches/wbw/Apps/crossdev/APPLVERS.H b/branches/wbw/Apps/crossdev/APPLVERS.H index 06d9aa5f..5eaa18ac 100644 --- a/branches/wbw/Apps/crossdev/APPLVERS.H +++ b/branches/wbw/Apps/crossdev/APPLVERS.H @@ -1,20 +1,20 @@ -/****************************/ -/* applvers.h dwg - 2.0.0.0 */ -/****************************/ +/************************************/ +/* applvers.h dwg - 2.2.0.3 Beta */ +/************************************/ #define A_RMJ 2 -#define A_RMN 0 +#define A_RMN 3 #define A_RUP 0 #define A_RTP 0 -#define A_MONTH 6 -#define A_DAY 10 -#define A_YEAR 2012 -#define A_YR 12 +#define A_MONTH 1 +#define A_DAY 16 +#define A_YEAR 2013 +#define A_YR 13 /********************/ /* eof - applvers.h */ /********************/ - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/APPLVERS.LIB b/branches/wbw/Apps/crossdev/APPLVERS.LIB new file mode 100644 index 00000000..f20a6db1 --- /dev/null +++ b/branches/wbw/Apps/crossdev/APPLVERS.LIB @@ -0,0 +1,34 @@ +; applvers.lib 2/29/2012 dwg - For RomWBW 2.1.1 Release + +A$RMJ equ 2 +A$RMN equ 2 +A$RUP equ 0 +A$RTP equ 0 + +A$MONTH equ 2 +A$DAY equ 15 +A$YEAR equ 2013 + +date macro +dat db ' 2/15/2013$' + endm + +serial macro +ser db '654321$' + endm + +product macro +prod db 'CPM80$' + endm + +originator macro +orig db 'DWG$' + endm + +oriname macro +myname db ' Douglas W Goodall $' + endm + +; eof - applvers.lib + + diff --git a/branches/wbw/Apps/crossdev/AS.COM b/branches/wbw/Apps/crossdev/AS.COM new file mode 100644 index 00000000..c8c41b79 Binary files /dev/null and b/branches/wbw/Apps/crossdev/AS.COM differ diff --git a/branches/wbw/Apps/crossdev/ASCII.H b/branches/wbw/Apps/crossdev/ASCII.H new file mode 100644 index 00000000..8e1b7765 --- /dev/null +++ b/branches/wbw/Apps/crossdev/ASCII.H @@ -0,0 +1,13 @@ +/* ascii.h 11/25/2012 dwg - */ + +#define ASCII_BS 8 +#define ASCII_TAB 9 +#define ASCII_LF 10 +#define ASCII_VT 11 +#define ASCII_FF 12 +#define ASCII_CR 13 +#define ASCII_ESC 27 + +/* eof - ascii.h */ + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/ASMIFACE.O b/branches/wbw/Apps/crossdev/ASMIFACE.O new file mode 100644 index 00000000..fa0de31b Binary files /dev/null and b/branches/wbw/Apps/crossdev/ASMIFACE.O differ diff --git a/branches/wbw/Apps/crossdev/ASMIFACE.REL b/branches/wbw/Apps/crossdev/ASMIFACE.REL new file mode 100644 index 00000000..fa0de31b Binary files /dev/null and b/branches/wbw/Apps/crossdev/ASMIFACE.REL differ diff --git a/branches/wbw/Apps/crossdev/AUTOEXEC.Z80 b/branches/wbw/Apps/crossdev/AUTOEXEC.Z80 new file mode 100644 index 00000000..f60431fa --- /dev/null +++ b/branches/wbw/Apps/crossdev/AUTOEXEC.Z80 @@ -0,0 +1,18 @@ +; +; This is a sample AUTOEXEC.Z80 file. Tailor it to your own preferences, +; or delete it entirely. +; +set_bdos min +set_cpmecho off +set_cpmlist lpt1 +set_cpmpun com1 +set_cpmrdr com1 +set_cpu z80 +set_fake on +set_illop fault +set_iobase 400 +set_mask on +set_source z80 +set_term h19 +set_vars on +coldboot diff --git a/branches/wbw/Apps/crossdev/BANKER.ASM b/branches/wbw/Apps/crossdev/BANKER.ASM new file mode 100644 index 00000000..4dbf960e --- /dev/null +++ b/branches/wbw/Apps/crossdev/BANKER.ASM @@ -0,0 +1,656 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pINFOLIS_,2 + global metadata_,128 + global pSYSCFG_,2 + global pCBIOS_,2 + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,0 + XCHG + LXI H,-132-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-6596 + SHLD ireghl_ + CALL bioscall_ + LHLD ireghl_ + SHLD pINFOLIS_ + LHLD pINFOLIS_ + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,-6656 + SHLD pCBIOS_ + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,1 + PUSH H + LXI H,1 + PUSH H + LXI H,2 + PUSH H + LXI H,2012 + PUSH H + LXI H,29 + PUSH H + LXI H,8 + PUSH H + LXI H,.1+31 + PUSH H + CALL printf_ + XCHG + LXI H,16 + DAD SP + SPHL + LXI H,.1+64 + PUSH H + CALL printf_ + POP D + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LXI H,0 + PUSH H + LXI H,2 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,3 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,.1+107 + PUSH H + CALL printf_ + POP D + LXI H,0 + PUSH H + LXI H,4 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,9 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+117 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,5 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,10 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+126 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,6 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,11 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+135 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,7 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,12 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+144 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,9 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,7 + DAD D + MOV E,M + INX H + MOV D,M + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-16384 + DAD D + SHLD dregde_ + LXI H,9 + SHLD dregbc_ + CALL bdoscall_ + LXI H,0 + PUSH H + LXI H,10 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,5 + DAD D + MOV E,M + INX H + MOV D,M + LXI H,-16384 + DAD D + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,128 + PUSH H + LXI H,0 + PUSH H + LXI H,-124-.2 + DAD SP + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,11 + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-124-.2 + DAD SP + PUSH H + CALL memcpy_ + POP D + POP D + POP D + LXI H,-128-.2 + DAD SP + PUSH H + LXI H,.1+153 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,3 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,.1+156 + PUSH H + CALL printf_ + POP D + LXI H,26 + PUSH H + LXI H,4 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pCBIOS_ + LXI D,75 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+166 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,5 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pCBIOS_ + LXI D,76 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+175 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,6 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pCBIOS_ + LXI D,77 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+184 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,7 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pCBIOS_ + LXI D,78 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+193 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,9 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pINFOLIS_ + LXI D,4 + DAD D + MOV E,M + INX H + MOV D,M + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,128 + PUSH H + LXI H,0 + PUSH H + LXI H,-124-.2 + DAD SP + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,127 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-124-.2 + DAD SP + PUSH H + CALL memcpy_ + POP D + POP D + POP D + LXI H,0 + XCHG + LXI H,-130-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,-130-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.4: + LXI H,-130-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,128 + CALL .ul + JZ .5 + LXI H,-130-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-128-.2 + DAD SP + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,45 + POP D + CALL .eq + JZ .6 + LXI H,-132-.2 + DAD SP + mov a,m + inx h + ora m + JZ .7 + LXI H,0 + PUSH H + LXI H,-128-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-126-.2 + DAD SP + DAD D + POP D + MOV M,E + JMP .8 +.7: + LXI H,1 + XCHG + LXI H,-132-.2 + DAD SP + MOV M,E + INX H + MOV M,D +.8: +.6: + JMP .3 +.5: + LXI H,-128-.2 + DAD SP + PUSH H + LXI H,.1+202 + PUSH H + CALL printf_ + POP D + POP D + LXI H,26 + PUSH H + LXI H,10 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pINFOLIS_ + LXI D,6 + DAD D + MOV E,M + INX H + MOV D,M + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,128 + PUSH H + LXI H,0 + PUSH H + LXI H,-124-.2 + DAD SP + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,11 + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-124-.2 + DAD SP + PUSH H + CALL memcpy_ + POP D + POP D + POP D + LXI H,-128-.2 + DAD SP + PUSH H + LXI H,.1+205 + PUSH H + CALL printf_ + POP D + POP D + LXI H,52 + PUSH H + LXI H,3 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,.1+208 + PUSH H + CALL printf_ + POP D + LXI H,52 + PUSH H + LXI H,4 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,2 + PUSH H + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + POP D + LXI H,52 + PUSH H + LXI H,5 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,1 + PUSH H + LXI H,.1+228 + PUSH H + CALL printf_ + POP D + POP D + LXI H,52 + PUSH H + LXI H,6 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,1 + PUSH H + LXI H,.1+237 + PUSH H + CALL printf_ + POP D + POP D + LXI H,52 + PUSH H + LXI H,7 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,.1+246 + PUSH H + CALL printf_ + POP D + POP D + LXI H,52 + PUSH H + LXI H,10 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,29 + PUSH H + LXI H,8 + PUSH H + LXI H,12 + PUSH H + LXI H,.1+255 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,23 + PUSH H + CALL crtlc_ + POP D + POP D + RET +.2 EQU -136 +.1: + DB 112,111,115,116,32,71,69,84,73,78,70,79,32,105,114 + DB 101,103,104,108,32,105,115,32,48,120,37,48,52,120,10 + DB 0,66,65,78,75,69,82,46,67,79,77,32,37,100,47 + DB 37,100,47,37,100,32,118,37,100,46,37,100,46,37,100 + DB 46,37,100,0,32,100,119,103,32,45,32,68,105,115,112 + DB 108,97,121,32,77,101,109,111,114,121,32,66,97,110,107 + DB 32,67,104,97,114,97,99,116,101,114,105,115,116,105,99 + DB 115,0,82,79,77,32,66,97,110,107,49,0,82,77,74 + DB 32,61,32,37,100,0,82,77,78,32,61,32,37,100,0 + DB 82,85,80,32,61,32,37,100,0,82,84,80,32,61,32 + DB 37,100,0,37,115,0,67,66,73,79,83,32,72,68,82 + DB 0,82,77,74,32,61,32,37,100,0,82,77,78,32,61 + DB 32,37,100,0,82,85,80,32,61,32,37,100,0,82,84 + DB 80,32,61,32,37,100,0,37,115,0,37,115,0,66,65 + DB 78,75,69,82,46,67,79,77,0,82,77,74,32,61,32 + DB 37,100,0,82,77,78,32,61,32,37,100,0,82,85,80 + DB 32,61,32,37,100,0,82,84,80,32,61,32,37,100,0 + DB 37,48,50,100,37,48,50,100,37,48,50,100,0 + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn printf_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn bioscall_ + extrn ireghl_ + extrn bdoscall_ + extrn dregde_ + extrn dregbc_ + extrn memset_ + extrn memcpy_ + extrn .eq + extrn .ul + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/BANKER.C b/branches/wbw/Apps/crossdev/BANKER.C new file mode 100644 index 00000000..b6974de6 --- /dev/null +++ b/branches/wbw/Apps/crossdev/BANKER.C @@ -0,0 +1,153 @@ +/* banker.c 6/7/2012 dwg - */ + +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" + +/* #include "cpmbind.h" */ + +#include "std.h" +#include "infolist.h" +#include "metadata.h" + +/* #include "setlunum.h" */ + +#include "applvers.h" +#include "bdoscall.h" +#include "cpmbdos.h" +#include "bioscall.h" +#include "cpmbios.h" +#include "diagnose.h" +#include "cnfgdata.h" +#include "syscfg.h" +#include "applvers.h" + +#define COL1 0 +#define COL2 (80/3) +#define COL3 (2*COL2) +#define LINE 2 + +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +struct SYSCFG * pSYSCFG; +struct BIOS * pCBIOS; + +int main(argc,argv) + int argc; + char *argv[] ; +{ + + char * varloc; + char * tstloc; + char temp[128]; + + int i; + int bFirst; + + bFirst = 0; + + ireghl = pGETINFO; + bioscall(); + pINFOLIST = ireghl; + printf("post GETINFO ireghl is 0x%04x\n",pINFOLIST); + + pCBIOS = 0x0e600; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + + printf("BANKER.COM %d/%d/%d v%d.%d.%d.%d", + A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); + printf(" dwg - Display Memory Bank Characteristics"); + + hregbc = 0x0f000; + hregde = 0x0c000; + diagnose(); + pSYSCFG = 0x0C000; + + crtlc(LINE+0,COL1); + crtlc(LINE+1,COL1); + printf("ROM Bank1"); + crtlc(LINE+2,COL1); + printf("RMJ = %d",pSYSCFG->cnfgdata.rmj); + crtlc(LINE+3,COL1); + printf("RMN = %d",pSYSCFG->cnfgdata.rmn); + crtlc(LINE+4,COL1); + printf("RUP = %d",pSYSCFG->cnfgdata.rup); + crtlc(LINE+5,COL1); + printf("RTP = %d",pSYSCFG->cnfgdata.rtp); + crtlc(LINE+7,COL1); + varloc = pSYSCFG->varloc; +/* dregde = (unsigned int)varloc-0x200+0x0c000; */ + dregde = (unsigned int)varloc+0x0c000; + + dregbc = 9; + bdoscall(); + crtlc(LINE+8,COL1); +/* tstloc = 0x0c000-0x0200+(unsigned int)pSYSCFG->tstloc; */ + tstloc = 0x0c000+(unsigned int)pSYSCFG->tstloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,tstloc,11); + printf("%s",temp); + + crtlc(LINE+1,COL2); + printf("CBIOS HDR"); + crtlc(LINE+2,COL2); + printf("RMJ = %d",pCBIOS->rmj); + crtlc(LINE+3,COL2); + printf("RMN = %d",pCBIOS->rmn); + crtlc(LINE+4,COL2); + printf("RUP = %d",pCBIOS->rup); + crtlc(LINE+5,COL2); + printf("RTP = %d",pCBIOS->rtp); + /* */ + crtlc(LINE+7,COL2); + varloc = pINFOLIST->varloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,varloc,sizeof(temp)-1); + for(i=0;itstloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,tstloc,11); + printf("%s",temp); + + crtlc(LINE+1,COL3); + printf("BANKER.COM"); + crtlc(LINE+2,COL3); + printf("RMJ = %d",A_RMJ); + crtlc(LINE+3,COL3); + printf("RMN = %d",A_RMN); + crtlc(LINE+4,COL3); + printf("RUP = %d",A_RUP); + crtlc(LINE+5,COL3); + printf("RTP = %d",A_RTP); + + crtlc(LINE+8,COL3); + printf("%02d%02d%02d",A_YR,A_MONTH,A_DAY); + crtlc(23,0); +} + +/*****************/ +/* eof - cview.c */ +/*****************/ + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/BANNER.ASM b/branches/wbw/Apps/crossdev/BANNER.ASM new file mode 100644 index 00000000..935a8671 --- /dev/null +++ b/branches/wbw/Apps/crossdev/BANNER.ASM @@ -0,0 +1,156 @@ +; banner.asm 9/5/2012 dwg - new version semantics - #.#.# (#) + + maclib portab + maclib globals + maclib cpmbios + maclib cpmbdos + maclib bioshdr + maclib printers + maclib cpmappl + maclib applvers + + cseg + + +; entered with argv in hl + public x$banner +x$banner: + shld argv + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg + + + printf '----------------------------------------' + print crlf + lhld xprog ! xchg ! mvi c,9 ! call BDOS + printf ' ' + IF A$MONTH LT 10 + conout ' ' + ENDIF + IF A$DAY LT 10 + conout ' ' + ENDIF + lxi h,A$MONTH + call pr$d$word + conout '/' + lxi h,A$DAY + call pr$d$word + conout '/' + lxi h,A$YEAR + call pr$d$word + printf ' ' + printf 'Version ' + lxi h,A$RMJ + call pr$d$word + conout '.' + lxi h,A$RMN + call pr$d$word + conout '.' + lxi h,A$RUP + call pr$d$word + printf ' (' + lxi h,A$RTP + call pr$d$word + conout ')' + print crlf + printf 'S/N ' + + lhld xprod ! xchg ! mvi c,9 ! call BDOS + + conout '-' + + lhld xorig ! xchg ! mvi c,9 ! call BDOS + + conout '-' + +; print xser + lhld xser ! xchg ! mvi c,9 ! call BDOS + + printf ' ' +; printf 'All Rights Reserved' + printf 'Licensed under GPL3' + print crlf + printf 'Copyright (C) 2011-12' + + lhld xnam ! xchg ! mvi c,9 ! call BDOS + + print crlf + printf '----------------------------------------' + print crlf + + ret + + +; entered with argv in hl + public x$sbanner +x$sbanner: + shld argv + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg + + +; printf '----------------------------------------' +; print crlf + lhld xprog ! xchg ! mvi c,9 ! call BDOS + printf ' ' + IF A$MONTH LT 10 + conout ' ' + ENDIF + IF A$DAY LT 10 + conout ' ' + ENDIF + lxi h,A$MONTH + call pr$d$word + conout '/' + lxi h,A$DAY + call pr$d$word + conout '/' + lxi h,A$YEAR + call pr$d$word + printf ' ' + printf 'Vers. ' + lxi h,A$RMJ + call pr$d$word + conout '.' + lxi h,A$RMN + call pr$d$word + conout '.' + lxi h,A$RUP + call pr$d$word + printf ' ( ' + lxi h,A$RTP + call pr$d$word + printf ') ' + printf 'COPR Douglas Goodall Licensed w/GPLv3' + + + print crlf + + ret + + +;---------------------------------------------------------------- + +argv ds 2 +;---------------- +xprog ds 2 +xvers ds 2 +xprod ds 2 +xorig ds 2 +xser ds 2 +xnam ds 2 + +crlf db CR,LF,'$' + + end + +; eof - banner.asm + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/BANNER.LIB b/branches/wbw/Apps/crossdev/BANNER.LIB new file mode 100644 index 00000000..fca38939 --- /dev/null +++ b/branches/wbw/Apps/crossdev/BANNER.LIB @@ -0,0 +1,18 @@ +; banner.lib 7/19/2012 dwg - for 2.0.0.0 B22 +; banner.lib 2/17/2012 dwg - review for release 1.5.1.0 +; banner.lib 2/11/2012 dwg - banner library declarations + + extrn x$banner +banner macro argv + lxi h,argv + call x$banner + endm + + extrn x$sbanner +sbanner macro argv + lxi h,argv + call x$sbanner + endm + +; eof - banner.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/BANNER.REL b/branches/wbw/Apps/crossdev/BANNER.REL new file mode 100644 index 00000000..e3566c2b Binary files /dev/null and b/branches/wbw/Apps/crossdev/BANNER.REL differ diff --git a/branches/wbw/Apps/crossdev/BANNER.SYM b/branches/wbw/Apps/crossdev/BANNER.SYM new file mode 100644 index 00000000..78bc51c5 --- /dev/null +++ b/branches/wbw/Apps/crossdev/BANNER.SYM @@ -0,0 +1,29 @@ +000F ADAY 0009 AL0OFS 000A AL1OFS 000E ALVOFS 0002 AMONTH +041E ARGV 0002 ARMJ 0002 ARMN 0000 ARTP 0000 ARUP +07DD AYEAR 0005 BDOS E600 BIBOOT E609 BICONIN E60C BICONOUT +E606 BICONST 0000 BIDRVA 0001 BIDRVB 0002 BIDRVC 0003 BIDRVD +0004 BIDRVE 0005 BIDRVF 0006 BIDRVG 0007 BIDRVH E618 BIHOME +E60F BILIST E62D BILISTST E612 BIPUNCH E627 BIREAD E615 BIREADER +E630 BISECTRN E61B BISELDSK E624 BISETDMA E621 BISETSEC E61E BISETTRK +E603 BIWBOOT E62A BIWRITE 0003 BLMOFS 0002 BSHOFS 0001 BYTESIZE +000B CKSOFS 003A COLON 000D CR 0001 CREAD 042C CRLF +0020 CROFS 000C CSVOFS 0012 CUROFS 0002 CWRITE 0010 D0OFS +0008 DBFOFS 0080 DEFBUF 000F DPBLEN 000A DPBOFS 0010 DPHLEN +0001 DRIVEB 0007 DRMOFS 0000 DROFS 000D DSKRESET 0005 DSMOFS +0001 ENGLISH 001B ESC 0004 EXMOFS 000C EXOFS 0001 F1OFS +0002 F2OFS 0003 F3OFS 0004 F4OFS 0005 F5OFS 0006 F6OFS +0007 F7OFS 0008 F8OFS 0000 FALSE 0024 FCBLEN 0010 FCLOSE +0023 FCOMPSIZE 0013 FDELETE 0016 FMAKE 000F FOPEN 0017 FRENAME +0020 LENFCB 000A LF 0010 LU1OFS 0011 LU2OFS 0010 MAXLABEL +0000 NEVER 0014 NLUOFS 00E5 OEMID 000D OFFOFS 0000 PRDWORD +0000 PRHBYTE 0000 PRHWORD 005C PRIFCB 0009 PRINTSTR 0021 R0OFS +0022 R1OFS 0023 R2OFS 000F RCOFS 000A READCONBUF 0014 READSEQ +0025 RESETDRIVE 0019 RETCURR 000C RETVERNO E64B RMJ E64C RMN +E64E RTP E64D RUP 0002 RV1OFS 0004 RV2OFS 0006 RV3OFS +000D S1OFS 000E S2OFS 006C SECFCB 000E SELDSK 001A SETDMA +0024 SETRANDREC 0000 SPANISH 0000 SPTOFS 0200 STACKSIZE 0009 T1OFS +000A T2OFS 000B T3OFS 0000 TERMCPM 0001 TRUE 0002 WORDSIZE +0022 WRITERAND 0028 WRITERANDZF 0015 WRITESEQ 0000 XBANNER +0000 XLTOFS 042A XNAM 0426 XORIG 0424 XPROD 0420 XPROG +02AB XSBANNER 0428 XSER 0422 XVERS + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/BDOSCALL.O b/branches/wbw/Apps/crossdev/BDOSCALL.O new file mode 100644 index 00000000..ce37563d Binary files /dev/null and b/branches/wbw/Apps/crossdev/BDOSCALL.O differ diff --git a/branches/wbw/Apps/crossdev/BDOSCALL.REL b/branches/wbw/Apps/crossdev/BDOSCALL.REL new file mode 100644 index 00000000..ce37563d Binary files /dev/null and b/branches/wbw/Apps/crossdev/BDOSCALL.REL differ diff --git a/branches/wbw/Apps/crossdev/BIOSCALL.O b/branches/wbw/Apps/crossdev/BIOSCALL.O new file mode 100644 index 00000000..9a6a9fba Binary files /dev/null and b/branches/wbw/Apps/crossdev/BIOSCALL.O differ diff --git a/branches/wbw/Apps/crossdev/BIOSCALL.REL b/branches/wbw/Apps/crossdev/BIOSCALL.REL new file mode 100644 index 00000000..9a6a9fba Binary files /dev/null and b/branches/wbw/Apps/crossdev/BIOSCALL.REL differ diff --git a/branches/wbw/Apps/crossdev/BIOSHDR.LIB b/branches/wbw/Apps/crossdev/BIOSHDR.LIB new file mode 100644 index 00000000..f315a292 --- /dev/null +++ b/branches/wbw/Apps/crossdev/BIOSHDR.LIB @@ -0,0 +1,385 @@ +; biohdr.lib 2/19/2012 dwg - BIOS header display macros +; copyright (C) 2011 Douglas Goodall. All Rights Reserved. +; Licensed to N8VEM Community for non-commercial use only. + +; 2/19/2012 dwg - review for release 1.5.1.0 +; 2/05/2012 dwg - added DSKM (DM_ROM...) better late than never +; 2/05/2012 dwg - added prpsdenable,prpsdtrace, and prpsdcapacity +; 1/16/2012 dwg - extend LU numbers to 0x1C entries (256MB) +; 1/11/2012 dwg - added new setlu for 1.4 slice technique +; 12/18/2011 dwg - added REVISION (from svn) +; 12/07/2011 dwg - BIOS header enhancement for version 1.3 + +; Common Configuration items, +; Valid in all configurations +RMJ equ 0E64Bh +RMN equ RMJ+1 +RUP equ RMN+1 +RTP equ RUP+1 + + if 0 +BANPTR equ RTP+1 +DKMP equ BANPTR+2 +DBBOOL equ DKMP+2 ; Disk Boot Boolean +DBDRV equ DBBOOL+1 ; Disk Boot Drive Code +FREQ equ DBDRV+1 +PLAT equ FREQ+1 ; Hardware Platform +DIOPLT equ PLAT+1 +VDUPLT equ DIOPLT+1 +ROMSIZ equ VDUPLT+1 +RAMSIZ equ ROMSIZ+2 +CRAM equ RAMSIZ+2 +DSKY equ CRAM+1 ; Is Display/Keyboard Attached? +UART equ DSKY+1 ; Is UART Enabled? +VDUEN equ UART+1 +FDEN equ VDUEN+1 ; Is Floppy Disk Support Enabled +FDTR equ FDEN+1 ; Is Floppy Disk Error Tracing Enabled? +FMED equ FDTR+1 ; Floppy Disk Media Type +FALT equ FMED+1 ; Alternative Floppy Disk Media Type +FAUT equ FALT+1 ; Is Floppy Disk Automatic Sensing Enabled? +IDEN equ FAUT+1 ; Is On-Board IDE Support Enabled +IDTR equ IDEN+1 +IDE8 equ IDTR+1 +IDCP equ IDE8+1 ; 1/13/2012 IDE Capacity +PPEN equ IDCP+2 ; Is PPIDE Support Enablned? +PPTR equ PPEN+1 ; Is PPIDE Tracing Enabled? +PP8B equ PPTR+1 +PPCP equ PP8B+1 ; 1/13/2012 PPIDE Capacity +PSLW equ PPCP+2 ; Use NOPs for recovery-time compensation +BTYP equ PSLW+1 +BTTO equ BTYP+1 +BTDF equ BTTO+1 +BAUD equ BTDF+1 ; What is the Console Baud Rate + +; Only Valid if PLATFORM == PLT_N8 +CLKDIV equ BAUD+2 ; Z180_CLKDIV +MEMWAIT equ CLKDIV+1 ; Z180_MEMWAIT +IOWAIT equ MEMWAIT+1 ; Z180_IOWAIT +CNTLB0 equ IOWAIT+1 ; Z180_CNTLB0 +CNTLB1 equ CNTLB0+1 ; Z180_CNTLB1 +SDENABLE equ CNTLB1+1 +SDTRACE equ SDENABLE+1 +SDCP equ SDTRACE+1 ; 1/13/2012 SD Capacity +VDPTR equ SDCP+2 ; pointer to VDU Data +FDPTR equ VDPTR+2 ; pointer to FD Data +IDEPTR equ FDPTR+2 ; pointer to IDE Data +PPIPTR equ IDEPTR+2 ; pointer to PPIDE_DATA Data +PPIPTR2 equ PPIPTR+2 ; pointer to PPIDE.ASM DATA + +DEFIO equ PPIPTR2+2 ; pointer to DEFIOBYTE +LDRC equ DEFIO+1 ; pointer to LDRCON +DBGC equ LDRC+1 ; pointer to DBGCON +TTYP equ DBGC+1 ; pointer to TERMTYPE +REV equ TTYP+1 ; subversion revision + +TMDT equ REV+2 ; startup date and time + +PSDE equ TMDT+6 ; prpsdenable +PSDT equ PSDE+1 ; prpsdtrace +PSDC equ PSDT+1 ; prpsdcapacity +PRCE equ PSDC+2 + +DSKM equ PRCE+1 ; DM_ROM... + +DTSZ equ DSKM+1 ; DATASIZE + +; LU0 LU1 LU2 LU3 LU4 LU5 LU6 LU7 LU8 LU9 +; 41 82 c3 104 145 186 1c7 208 249 286 +; +; LU10 LU11 LU12 LU13 LU14 LU15 LU16 +; 2c7 308 349 38a 3cb 40c 44d + +LU0 equ 0 ; 041h ; PPIDE1 offset for first slice (default) +LU1 equ 1 ; 082h ; PPIDE1 offset for second slice +LU2 equ 2 ; 0C3h ; PPIDE1 offset for third slice +LU3 equ 3 ; 104h ; PPIDE1 offset for fourth slice +LU4 equ 4 ; 145h ; PPIDE1 offset for fifth slice +LU5 equ 5 ; 186h ; PPIDE1 offset for sixth slice +LU6 equ 6 ; 1c7h ; PPIDE1 offset for seventh slice +LU7 equ 7 ; 208h ; PPIDE1 offset for eighth slice +LU8 equ 8 ; 249h ; PPIDE1 offset for ninth slice +LU9 equ 9 ; 286h ; PPIDE1 offset for tenth slice +LU10 equ 10 +LU11 equ 11 +LU12 equ 12 +LU13 equ 13 +LU14 equ 14 +LU15 equ 15 +LU16 equ 16 +LU17 equ 17 +LU18 equ 18 +LU19 equ 19 +LU20 equ 20 +LU21 equ 21 +LU22 equ 22 +LU23 equ 23 +LU24 equ 24 +LU25 equ 25 +LU26 equ 26 ; 0x1a +LU27 equ 27 ; 0x1b (1Cth entry) + + endif + +DRIVEB equ 1 ; 0=A, 1=B... + + +setlu13 macro offset + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + lxi d,offset ; load caller's parameter in de + mov m,e ; stuff LO offset byte into offset + inx h ; bump ptr + mov m,d ; stuff HO offset byte into offset + mvi c,13 ; BDOS DSKRESET + call 5 ; call BDOS + endm + +getlu13 macro + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + mov e,m ; pick up LO byte of offset + inx h ; bump ptr + mov d,m ; pick up HO byte of offset + xchg ; hl = offset + endm + +setlu14 macro offset + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + lxi d,offset ; load caller's parameter in de + mov m,e ; stuff LO offset byte into offset + inx h ; bump ptr + mov m,d ; stuff HO offset byte into offset + mvi c,13 ; BDOS DSKRESET + call 5 ; call BDOS + endm + +getlu14 macro + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + mov e,m ; pick up LO byte of offset + inx h ; bump ptr + mov d,m ; pick up HO byte of offset + xchg ; hl = offset + endm + +setlu macro drive,slice + local dontboth,msg,msg2 + mvi c,drive + call BISELDSK + lxi d,16 + dad d + mov a,m + cpi 'L' + jnz dontboth + inx h + mov a,m + cpi 'U' + jnz dontboth + inx h + mvi a,slice + mov m,a + print msg + mvi a,drive + adi 'A' + mov e,a + mvi c,2 + call BDOS + print msg2 + lxi h,slice + call pr$d$word + jmp dontboth +msg db CR,LF,'Drive $' +msg2 db ': set to Logical Unit (slice) $' +dontboth: + endm + + +xluset macro + local ldrive,lslice,dontboth,msg,msg2 + ; C = DRIVE + ; A = SLICE + sta lslice + mov a,c + sta ldrive + + call BISELDSK ; uses c parameter (drive) + lxi d,16 + dad d + mov a,m + cpi 'L' + jnz dontboth + inx h + mov a,m + cpi 'U' + jnz dontboth + inx h + lda lslice + mov m,a ; put slice into CURRENT + +; print msg +; lda ldrive +; adi 'A' +; mov e,a +; mvi c,2 +; call BDOS +; print msg2 +; lda lslice +; mov l,a +; mvi h,0 +; call pr$d$word + + jmp dontboth +msg db CR,LF,'Drive $' +msg2 db ': set to Logical Unit (slice) $' +ldrive db 0 +lslice db 0 +dontboth: + endm + + + + + + + +hdrlit macro ptr,val,msg + local notval + lxi h,ptr + mvi a,val + cmp m + jnz notval + print msg +notval: + endm + + +hdrbool macro ptr,tmsg,fmsg + local itstrue,itsfalse,imdone + enter + lxi h,ptr + mov a,m + cpi TRUE + jnz itsfalse + lxi d,tmsg + jmp imdone +itsfalse: lxi d,fmsg +imdone: mvi c,PRINTSTR + call BDOS + leave + endm + +hdrbyte macro ptr,msg + enter + mvi c,PRINTSTR + lxi d,msg + call BDOS + lxi h,ptr + mov a,m + call pr$h$byte + + conout '(' + mov e,m + mov d,0 + xchg + call pr$d$word + conout ')' + + leave + endm + +hdrpbyte macro ptr,msg + enter + mvi c,PRINTSTR + lxi d,msg + call BDOS + lxi h,PTR + mov e,m + inx h + mov d,m + xchg + mov a,m + call pr$h$byte + +; conout ' ' + conout '(' + mov e,m + mov d,0 + xchg + call pr$d$word + conout ')' + leave + endm + +hdrword macro ptr,msg + enter + + mvi c,PRINTSTR + lxi d,msg + call BDOS + + lxi h,ptr + inx h + mov a,m + call pr$h$byte + + lxi h,ptr + mov a,m + call pr$h$byte + + conout '(' + lxi h,ptr + mov e,m + inx h + mov d,m + xchg + call pr$d$word + conout ')' + leave + endm + +syncerr macro + print syncmsg + exit + endm + +hdrvalid macro + local byte1ok,byte2ok + enter + lxi h,CFDA + mov a,m + cpi 0DAh + jz byte1ok + syncerr +byte1ok: + inx h + mov al,m + cpi 0CFh + jz byte2ok + syncerr +byte2ok: + leave + endm + +; eof - bioshdr.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CBANNER.ASM b/branches/wbw/Apps/crossdev/CBANNER.ASM new file mode 100644 index 00000000..7648636c --- /dev/null +++ b/branches/wbw/Apps/crossdev/CBANNER.ASM @@ -0,0 +1,208 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + DSEG + public lines_ +lines_: + DW .1+0 + CSEG +.1: + DB 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 + DB 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45 + DB 45,45,45,45,45,45,45,45,45,45,0 + DSEG + public line1_ +line1_: + DW .2+0 + CSEG +.2: + DB 49,50,51,52,53,54,55,56,46,49,50,51,32,109,109 + DB 47,100,100,47,121,121,121,121,32,32,86,101,114,115,105 + DB 111,110,32,120,46,120,46,120,46,120,0 + DSEG + public line2_ +line2_: + DW .3+0 + CSEG +.3: + DB 83,47,78,32,67,80,77,56,48,45,68,87,71,45,54 + DB 53,52,51,50,49,32,76,105,99,101,110,115,101,100,32 + DB 117,110,100,101,114,32,71,80,76,51,0 + DSEG + public line3_ +line3_: + DW .4+0 + CSEG +.4: + DB 67,111,112,121,114,105,103,104,116,32,40,67,41,32,50 + DB 48,49,49,45,49,50,32,68,111,117,103,108,97,115,32 + DB 87,46,32,71,111,111,100,97,108,108,0 + PUBLIC sbanner_ +sbanner_: lxi d,.6 + call csave + LXI H,8-.6 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.5+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2013 + PUSH H + LXI H,16 + PUSH H + LXI H,1 + PUSH H + LXI H,.5+4 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + PUSH H + LXI H,2 + PUSH H + LXI H,.5+18 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + LXI H,.5+39 + PUSH H + CALL printf_ + POP D + RET +.6 EQU -128 +.5: + DB 37,115,32,0,37,50,100,47,37,50,100,47,37,52,100 + DB 32,32,0,86,101,114,115,105,111,110,32,37,100,46,37 + DB 100,46,37,100,46,37,100,32,0,67,79,80,82,32,68 + DB 111,117,103,108,97,115,32,71,111,111,100,97,108,108,32 + DB 76,105,99,101,110,115,101,100,32,119,47,71,80,76,118 + DB 51,10,0 + PUBLIC banner_ +banner_: lxi d,.8 + call csave + LHLD lines_ + PUSH H + LXI H,.7+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.8 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-122-.8 + DAD SP + PUSH H + CALL strcpy_ + POP D + POP D +.9: + LXI H,-124-.8 + DAD SP + PUSH H + CALL strlen_ + POP D + PUSH H + LXI H,12 + POP D + XCHG + CALL .gt + JZ .10 + LXI H,.7+4 + PUSH H + LXI H,-122-.8 + DAD SP + PUSH H + CALL strcat_ + POP D + POP D + JMP .9 +.10: + LXI H,-124-.8 + DAD SP + PUSH H + LXI H,.7+6 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2013 + PUSH H + LXI H,16 + PUSH H + LXI H,1 + PUSH H + LXI H,.7+10 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + PUSH H + LXI H,2 + PUSH H + LXI H,.7+24 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + LHLD line2_ + PUSH H + LXI H,.7+45 + PUSH H + CALL printf_ + POP D + POP D + LHLD line3_ + PUSH H + LXI H,.7+49 + PUSH H + CALL printf_ + POP D + POP D + LHLD lines_ + PUSH H + LXI H,.7+53 + PUSH H + CALL printf_ + POP D + POP D + RET +.8 EQU -128 +.7: + DB 37,115,10,0,32,0,37,115,32,0,37,50,100,47,37 + DB 50,100,47,37,52,100,32,32,0,86,101,114,115,105,111 + DB 110,32,37,100,46,37,100,46,37,100,46,37,100,10,0 + DB 37,115,10,0,37,115,10,0,37,115,10,0 + extrn strcat_ + extrn strlen_ + extrn strcpy_ + extrn printf_ + extrn .gt + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CBANNER.O b/branches/wbw/Apps/crossdev/CBANNER.O new file mode 100644 index 00000000..5759d5a0 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CBANNER.O differ diff --git a/branches/wbw/Apps/crossdev/CC.COM b/branches/wbw/Apps/crossdev/CC.COM new file mode 100644 index 00000000..1fbf701b Binary files /dev/null and b/branches/wbw/Apps/crossdev/CC.COM differ diff --git a/branches/wbw/Apps/crossdev/CC.TMP b/branches/wbw/Apps/crossdev/CC.TMP new file mode 100644 index 00000000..24a91743 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CC.TMP @@ -0,0 +1,333 @@ + extrn .begin,.chl,.swt + extrn zsave,zret + global termtype_,1 + DSEG + public wy50row_ +wy50row_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + CSEG + DSEG + public wy50col_ +wy50col_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + DB 56 + DB 57 + DB 58 + DB 59 + DB 60 + DB 61 + DB 62 + DB 63 + DB 64 + DB 65 + DB 66 + DB 67 + DB 68 + DB 69 + DB 70 + DB 71 + DB 72 + DB 73 + DB 74 + DB 75 + DB 76 + DB 77 + DB 78 + DB 79 + DB 80 + DB 81 + DB 82 + DB 83 + DB 84 + DB 85 + DB 86 + DB 87 + DB 88 + DB 89 + DB 90 + DB 91 + DB 92 + DB 93 + DB 94 + DB 95 + DB 96 + DB 97 + DB 98 + DB 99 + DB 100 + DB 101 + DB 102 + DB 103 + DB 104 + DB 105 + DB 106 + DB 107 + DB 108 + DB 109 + DB 110 + DB 111 + CSEG + PUBLIC crtinit_ +crtinit_: lxi d,.2 + call zsave + LXI H,12-.2 + DAD SP + MOV E,M + XCHG + MOV A,L + STA termtype_ + RET +.2 EQU 0 + PUBLIC crtclr_ +crtclr_: lxi d,.3 + call zsave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .4 +.6: + LXI H,0 + XCHG + LXI H,6-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,6-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.8: + LXI H,6-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + CALL .lt + JZ .9 + LXI H,10 + PUSH H + LXI H,13 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .7 +.9: + JMP .5 +.10: + LXI H,27 + PUSH H + LXI H,.1+5 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.11: + LXI H,27 + PUSH H + LXI H,.1+11 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.12: + LXI H,27 + PUSH H + LXI H,27 + PUSH H + LXI H,.1+15 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .5 +.4: + CALL .swt + DW 4 + DW 0,.6 + DW 1,.10 + DW 2,.11 + DW 3,.12 + DW .5 +.5: + RET +.3 EQU -2 +.1: + DB 37,99,37,99,0,37,99,91,50,74,0,37,99,43,0 + DB 37,99,74,37,99,72,0 + PUBLIC crtlc_ +crtlc_: lxi d,.14 + call zsave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .15 +.17: + JMP .16 +.18: + LXI H,102 + PUSH H + LXI H,16-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,16-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,27 + PUSH H + LXI H,.13+0 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + JMP .16 +.19: + LXI H,14-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50col_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,14-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50row_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,27 + PUSH H + LXI H,.13+11 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.20: + LXI H,14-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,14-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,27 + PUSH H + LXI H,.13+19 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.15: + CALL .swt + DW 4 + DW 0,.17 + DW 1,.18 + DW 2,.19 + DW 3,.20 + DW .16 +.16: + RET +.14 EQU -2 +.13: + DB 37,99,91,37,100,59,37,100,37,99,0,37,99,61,37 + DB 99,37,99,0,37,99,89,37,99,37,99,0 + extrn printf_ + extrn .lt + END diff --git a/branches/wbw/Apps/crossdev/CHARS.ASM b/branches/wbw/Apps/crossdev/CHARS.ASM new file mode 100644 index 00000000..47bae2f6 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CHARS.ASM @@ -0,0 +1,970 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pDPHMAP_,2 + global pDPHVEC_,24 + DSEG + public pSYSCFG_ +pSYSCFG_: + DW -16384 + CSEG + DSEG + public map_ +map_: + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 1 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + CSEG + DSEG + public attroff_ +attroff_: + DB 27 + DB 91 + DB 109 + DB 0 + CSEG + DSEG + public attrbold_ +attrbold_: + DB 27 + DB 91 + DB 49 + DB 109 + DB 0 + CSEG + DSEG + public attrlow_ +attrlow_: + DB 27 + DB 91 + DB 50 + DB 109 + DB 0 + CSEG + DSEG + public attrundr_ +attrundr_: + DB 27 + DB 91 + DB 52 + DB 109 + DB 0 + CSEG + DSEG + public attrblnk_ +attrblnk_: + DB 27 + DB 91 + DB 53 + DB 109 + DB 0 + CSEG + DSEG + public attrrevs_ +attrrevs_: + DB 27 + DB 91 + DB 55 + DB 109 + DB 0 + CSEG + DSEG + public attrinvs_ +attrinvs_: + DB 27 + DB 91 + DB 56 + DB 109 + DB 0 + CSEG + DSEG + public graphon_ +graphon_: + DB 27 + DB 70 + DB 0 + CSEG + DSEG + public graphoff_ +graphoff_: + DB 27 + DB 71 + DB 0 + CSEG + DSEG + public atreset_ +atreset_: + DB 48 + DB 0 + CSEG + DSEG + public atbold_ +atbold_: + DB 49 + DB 0 + CSEG + DSEG + public atdim_ +atdim_: + DB 50 + DB 0 + CSEG + DSEG + public atundrsc_ +atundrsc_: + DB 52 + DB 0 + CSEG + DSEG + public atblink_ +atblink_: + DB 53 + DB 0 + CSEG + DSEG + public atrevs_ +atrevs_: + DB 55 + DB 0 + CSEG + DSEG + public athidden_ +athidden_: + DB 56 + DB 0 + CSEG + DSEG + public fgblack_ +fgblack_: + DB 51 + DB 48 + DB 0 + CSEG + DSEG + public fgred_ +fgred_: + DB 51 + DB 49 + DB 0 + CSEG + DSEG + public fggreen_ +fggreen_: + DB 51 + DB 50 + DB 0 + CSEG + DSEG + public fgyellow_ +fgyellow_: + DB 51 + DB 51 + DB 0 + CSEG + DSEG + public fgblue_ +fgblue_: + DB 51 + DB 52 + DB 0 + CSEG + DSEG + public fgmagent_ +fgmagent_: + DB 51 + DB 53 + DB 0 + CSEG + DSEG + public fgcyan_ +fgcyan_: + DB 51 + DB 54 + DB 0 + CSEG + DSEG + public fgwhite_ +fgwhite_: + DB 51 + DB 55 + DB 0 + CSEG + DSEG + public bgblack_ +bgblack_: + DB 52 + DB 48 + DB 0 + CSEG + DSEG + public bgred_ +bgred_: + DB 52 + DB 49 + DB 0 + CSEG + DSEG + public bggreen_ +bggreen_: + DB 52 + DB 50 + DB 0 + CSEG + DSEG + public bgyellow_ +bgyellow_: + DB 52 + DB 51 + DB 0 + CSEG + DSEG + public bgblue_ +bgblue_: + DB 52 + DB 52 + DB 0 + CSEG + DSEG + public bgmagent_ +bgmagent_: + DB 52 + DB 53 + DB 0 + CSEG + DSEG + public bgcyan_ +bgcyan_: + DB 52 + DB 54 + DB 0 + CSEG + DSEG + public bgwhite_ +bgwhite_: + DB 52 + DB 55 + DB 0 + CSEG + PUBLIC dispattr_ +dispattr_: lxi d,.2 + call csave + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,27 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + RET +.2 EQU 0 +.1: + DB 37,99,91,37,115,59,37,115,59,37,115,109,0 + PUBLIC main_ +main_: lxi d,.4 + call csave + LXI H,1 + XCHG + LXI H,8-.4 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .5 + LXI H,1 + XCHG + LXI H,2-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .7 +.6: + LXI H,2-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.7: + LXI H,2-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8-.4 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .8 + LXI H,2-.4 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + XCHG + LXI H,10-.4 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL atoi_ + POP D + PUSH H + LXI H,.3+0 + PUSH H + CALL printf_ + POP D + POP D + JMP .6 +.8: + JMP .9 +.5: + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,bgblack_ + PUSH H + LXI H,fggreen_ + PUSH H + LXI H,atbold_ + PUSH H + CALL dispattr_ + POP D + POP D + POP D + LXI H,.3+3 + PUSH H + CALL banner_ + POP D + LXI H,attroff_ + PUSH H + LXI H,.3+9 + PUSH H + CALL printf_ + POP D + POP D + LXI H,bgblack_ + PUSH H + LXI H,fgcyan_ + PUSH H + LXI H,atbold_ + PUSH H + CALL dispattr_ + POP D + POP D + POP D + LXI H,0 + XCHG + LXI H,-4-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .11 +.10: + LXI H,-4-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.11: + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .12 + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + LXI D,9 + DAD D + PUSH H + LXI H,6 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.3+12 + PUSH H + CALL printf_ + POP D + POP D + JMP .10 +.12: + LXI H,attroff_ + PUSH H + LXI H,.3+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-6-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .14 +.13: + LXI H,-6-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.14: + LXI H,-6-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .15 + LXI H,4 + PUSH H + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + DAD D + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,bgblack_ + PUSH H + LXI H,fgcyan_ + PUSH H + LXI H,atbold_ + PUSH H + CALL dispattr_ + POP D + POP D + POP D + LXI H,-6-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.3+20 + PUSH H + CALL printf_ + POP D + POP D + LXI H,attroff_ + PUSH H + LXI H,.3+25 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-4-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .17 +.16: + LXI H,-4-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.17: + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .18 + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + LXI D,10 + DAD D + PUSH H + LXI H,-4-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + DAD D + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,-6-.4 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + DAD H + XCHG + LXI H,-4-.4 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + LXI D,map_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .19 + LXI H,.3+28 + PUSH H + CALL printf_ + POP D + JMP .20 +.19: + LXI H,-6-.4 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + DAD H + XCHG + LXI H,-4-.4 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + PUSH H + LXI H,.3+30 + PUSH H + CALL printf_ + POP D + POP D +.20: + JMP .16 +.18: + LXI H,bgblack_ + PUSH H + LXI H,fgcyan_ + PUSH H + LXI H,atbold_ + PUSH H + CALL dispattr_ + POP D + POP D + POP D + LXI H,-6-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.3+33 + PUSH H + CALL printf_ + POP D + POP D + LXI H,attroff_ + PUSH H + LXI H,.3+40 + PUSH H + CALL printf_ + POP D + POP D + JMP .13 +.15: +.9: + LXI H,0 + RET +.4 EQU -10 +.3: + DB 37,99,0,67,72,65,82,83,0,37,115,0,91,37,120 + DB 93,0,37,115,0,91,37,120,93,0,37,115,0,46,0 + DB 37,99,0,32,32,91,37,120,93,0,37,115,0 + extrn atoi_ + extrn printf_ + extrn banner_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn .eq + extrn .lt + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CHARS.C b/branches/wbw/Apps/crossdev/CHARS.C index 242fd5c4..10d3fd1e 100644 --- a/branches/wbw/Apps/crossdev/CHARS.C +++ b/branches/wbw/Apps/crossdev/CHARS.C @@ -8,10 +8,19 @@ #include "cpm80.h" #include "cpmappl.h" #include "applvers.h" +#include "cnfgdata.h" +#include "syscfg.h" #define TOP 0 #define LEFT 4 +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +struct SYSCFG * pSYSCFG = HIGHSEG; + char map[256] = { /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ @@ -92,7 +101,17 @@ int main(argc,argv) } } else { - crtinit(); + + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + +/* printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); */ + + + crtinit(pSYSCFG->cnfgdata.termtype); crtclr(); crtlc(0,0); @@ -130,4 +149,4 @@ int main(argc,argv) return 0; } - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CHARS.SUB b/branches/wbw/Apps/crossdev/CHARS.SUB new file mode 100644 index 00000000..3a21c6d9 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CHARS.SUB @@ -0,0 +1,18 @@ +e:rem chars.sub 7/22/2012 dwg - build chars from source +cc chars +as chars +as bdoscall +as bioscall +as diagnose +cc cbanner +as cbanner +cc ctermcap +as ctermcap +ln chars.o bdoscall.o bioscall.o cbanner.o diagnose.o ctermcap.o c.lib +era chars.o +era bdoscall.o +era bioscall.o +era diagose.o +era cbanner.o +era ctermcap.o + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CHECK.SUB b/branches/wbw/Apps/crossdev/CHECK.SUB new file mode 100644 index 00000000..bc711968 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CHECK.SUB @@ -0,0 +1,12 @@ +e:access access.com +e:access cpmname.com +e:access findfile.com +e:access map.com +e:access meta.com +e:access multifmt.com +e:access rem.com +e:access setlabel.com +e:access sysgen.com +e:access termtype.com +e:access view.com + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLEAN.SUB b/branches/wbw/Apps/crossdev/CLEAN.SUB new file mode 100644 index 00000000..46363e2d --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLEAN.SUB @@ -0,0 +1,27 @@ +era *.bak +era *.prn +era *.rel +era *.sym +era *.lst +era *.o +era sect0*.h +era sect1*.h +era sect2*.h +era sect3*.h +era sect4*.h +era sect5*.h +era sect6*.h +era sect7*.h +era sect8*.h +era sect9*.h +era sect0*.inc +era sect1*.inc +era sect2*.inc +era sect3*.inc +era sect4*.inc +era sect5*.inc +era sect6*.inc +era sect7*.inc +era sect8*.inc +era sect9*.inc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLEAR.ASM b/branches/wbw/Apps/crossdev/CLEAR.ASM new file mode 100644 index 00000000..261b3d1f --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLEAR.ASM @@ -0,0 +1,44 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global style_,1 + global vdp_rege_,960 + global pINFOLIS_,2 + global metadata_,128 + global pCNFGDAT_,2 + global pSYSCFG_,2 + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + RET +.2 EQU -1 + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLEAR.C b/branches/wbw/Apps/crossdev/CLEAR.C new file mode 100644 index 00000000..2edfea8d --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLEAR.C @@ -0,0 +1,48 @@ +/* clear.c 11/23/2012 dwg - */ + +#include "portab.h" +#include "globals.h" + +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" +#include "applvers.h" +#include "n8chars.h" +#include "tms9918.h" +#include "std.h" +#include "ctermcap.h" +#include "cpmbdos.h" +#include "bdoscall.h" +#include "hbios.h" +#include "asmiface.h" +#include "diagnose.h" +#include "cnfgdata.h" +#include "syscfg.h" +#include "cpmbind.h" +#include "infolist.h" +#include "metadata.h" +#include "clogical.h" + +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +struct CNFGDATA * pCNFGDATA; +struct SYSCFG * pSYSCFG; + +int main(argc,argv) + int argc; + char *argv[]; +{ + char column; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); +} + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLEAR.SUB b/branches/wbw/Apps/crossdev/CLEAR.SUB new file mode 100644 index 00000000..5a9b9907 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLEAR.SUB @@ -0,0 +1,10 @@ +e:rem clear.sub 7/22/2012 dwg - build clear from sources +cc clear +as clear +as bdoscall +as bioscall +cc ctermcap +as ctermcap +as diagnose +ln clear.o diagnose.o bioscall.o bdoscall.o ctermcap.o c.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLOGICAL.ASM b/branches/wbw/Apps/crossdev/CLOGICAL.ASM new file mode 100644 index 00000000..017c74b6 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLOGICAL.ASM @@ -0,0 +1,159 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC lugcur_ +lugcur_: lxi d,.2 + call csave + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-6602 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xregde_ + RET +.2 EQU 0 + PUBLIC lugnum_ +lugnum_: lxi d,.3 + call csave + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,12-.3 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-6602 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + RET +.3 EQU 0 + PUBLIC lugdu_ +lugdu_: lxi d,.4 + call csave + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,12-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-6602 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xregbc_ + LXI D,8 + XCHG + CALL .ur + RET +.4 EQU 0 + PUBLIC luscur_ +luscur_: lxi d,.5 + call csave + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,12-.5 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-6602 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + PUSH H + LXI H,12-.5 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LHLD xregbc_ + PUSH H + LXI H,-6599 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + RET +.5 EQU 0 + PUBLIC lusnum_ +lusnum_: lxi d,.6 + call csave + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,12-.6 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-6602 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,10-.6 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LHLD xregde_ + PUSH H + LHLD xregbc_ + PUSH H + LXI H,-6599 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + RET +.6 EQU 0 + extrn asmif_ + extrn xreghl_ + extrn xregde_ + extrn xregbc_ + extrn .ur + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLOGICAL.H b/branches/wbw/Apps/crossdev/CLOGICAL.H index 37385b8e..c0624494 100644 --- a/branches/wbw/Apps/crossdev/CLOGICAL.H +++ b/branches/wbw/Apps/crossdev/CLOGICAL.H @@ -1,11 +1,7 @@ - /*****************************/ /* clogical.H 6/4/2012 dwg - */ /*****************************/ -#define METATRK 0 -#define METASEC 11 - extern lugdu(); extern lugcur(); extern luscur(); @@ -15,4 +11,4 @@ extern lusnum(); /********************/ /* eof - clogical.h */ /********************/ - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CLOGICAL.O b/branches/wbw/Apps/crossdev/CLOGICAL.O new file mode 100644 index 00000000..cb9e3a5c Binary files /dev/null and b/branches/wbw/Apps/crossdev/CLOGICAL.O differ diff --git a/branches/wbw/Apps/crossdev/CLS.C b/branches/wbw/Apps/crossdev/CLS.C new file mode 100644 index 00000000..2bbf9c2f --- /dev/null +++ b/branches/wbw/Apps/crossdev/CLS.C @@ -0,0 +1,127 @@ +/* cls.c 7/21/2012 dwg - elegant form of clear screen program */ + +/* +#include "stdio.h" +#include "applvers.h" +*/ + +/* declarations for HBIOS access */ +extern char hrega; +extern unsigned int hregbc; +extern unsigned int hregde; +extern unsigned int hreghl; +extern diagnose(); + +/* declaration dir BIOS and BDOS and low level calls */ +extern char xrega; +extern unsigned int xregbc; +extern unsigned int xregde; +extern unsigned int xreghl; +extern asmif(); /* asmif(0x0E6**,bc,de,hl); */ + +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +/* pointer based Configuration Data structure */ +struct CNFGDATA { + unsigned char rmj; + unsigned char rmn; + unsigned char rup; + unsigned char rtp; + unsigned char diskboot; + unsigned char devunit; + unsigned int bootlu; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned char month; + unsigned char day; + unsigned char year; + unsigned char freq; + unsigned char platform; + unsigned char dioplat; + unsigned char vdumode; + unsigned int romsize; + unsigned int ramsize; + unsigned char clrramdk; + unsigned char dskyenable; + unsigned char uartenable; + unsigned char vduenable; + unsigned char fdenable; + unsigned char fdtrace; + unsigned char fdmedia; + unsigned char fdmediaalt; + unsigned char fdmauto; + unsigned char ideenable; + unsigned char idetrace; + unsigned char ide8bit; + unsigned int idecapacity; + unsigned char ppideenable; + unsigned char ppidetrace; + unsigned char ppide8bit; + unsigned int ppidecapacity; + unsigned char ppideslow; + unsigned char boottype; + unsigned char boottimeout; + unsigned char bootdefault; + unsigned int baudrate; + unsigned char ckdiv; + unsigned char memwait; + unsigned char iowait; + unsigned char cntlb0; + unsigned char cntlb1; + unsigned char sdenable; + unsigned char sdtrace; + unsigned int sdcapacity; + unsigned char sdcsio; + unsigned char sdcsiofast; + unsigned char defiobyte; + unsigned char termtype; + unsigned int revision; + unsigned char prpsdenable; + unsigned char prpsdtrace; + unsigned int prpsdcapacity; + unsigned char prpconenable; + unsigned int biossize; + unsigned char pppenable; + unsigned char pppsdenable; + unsigned char pppsdtrace; + unsigned int pppsdcapacity; + unsigned char pppconenable; + unsigned char prpenable; +}; + +struct JMP { + unsigned char opcode; /* JMP opcode */ + unsigned int address; /* JMP address */ +}; + +struct SYSCFG { + struct JMP jmp; + void * cnfloc; + void * tstloc; + void * varloc; + struct CNFGDATA cnfgdata; + char filler[256-3-2-2-2-sizeof(struct CNFGDATA)]; +} * pSYSCFG = HIGHSEG; + + +main(argc,argv) + int argc; + char *argv[]; +{ + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the HBIOS function */ + + crtinit(pSYSCFG->cnfgdata.termtype); /* pass termtype to init */ + + crtclr(); + + crtlc(0,0); +} + + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CMEMORY.ASM b/branches/wbw/Apps/crossdev/CMEMORY.ASM new file mode 100644 index 00000000..cb11cdc3 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CMEMORY.ASM @@ -0,0 +1,283 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC memcmp_ +memcmp_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,-2-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.4: + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .5 + LXI H,0-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,4-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + MOV E,M + MVI D,0 + POP H + CALL .ne + JZ .6 + LXI H,0 + RET +.6: + JMP .3 +.5: + LXI H,1 + RET +.2 EQU -6 + PUBLIC memcpy_ +memcpy_: lxi d,.7 + call csave + LXI H,10-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.7 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,8-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.7 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-2-.7 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .9 +.8: + LXI H,-2-.7 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.9: + LXI H,-2-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.7 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .10 + LXI H,2-.7 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + MOV E,M + PUSH D + LXI H,2-.7 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + POP D + MOV M,E + JMP .8 +.10: + RET +.7 EQU -6 + PUBLIC memset_ +memset_: lxi d,.11 + call csave + LXI H,8-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.11 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.11 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .13 +.12: + LXI H,0-.11 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.13: + LXI H,0-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.11 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .ul + JZ .14 + LXI H,10-.11 + DAD SP + MOV E,M + PUSH D + LXI H,4-.11 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + POP D + MOV M,E + JMP .12 +.14: + RET +.11 EQU -4 + extrn .ne + extrn .lt + extrn .ul + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CMEMORY.O b/branches/wbw/Apps/crossdev/CMEMORY.O new file mode 100644 index 00000000..d58456b5 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CMEMORY.O differ diff --git a/branches/wbw/Apps/crossdev/CNAMEPT1.ASM b/branches/wbw/Apps/crossdev/CNAMEPT1.ASM new file mode 100644 index 00000000..98b7e2d6 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CNAMEPT1.ASM @@ -0,0 +1,527 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept1_ +cnamept1_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+51 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,5 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+85 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,9 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+153 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+175 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,11 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+197 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+241 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,13 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+261 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+266 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,14 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+272 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+298 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,23 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+324 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+349 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+369 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+375 + PUSH H + CALL printf_ + POP D + JMP .8 +.11: + LXI H,.1+380 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 3 + DW 1,.9 + DW 2,.10 + DW 3,.11 + DW .8 +.8: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,25 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+403 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+415 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+441 + PUSH H + CALL printf_ + POP D + JMP .13 +.18: + LXI H,.1+453 + PUSH H + CALL printf_ + POP D + JMP .13 +.19: + LXI H,.1+463 + PUSH H + CALL printf_ + POP D + JMP .13 +.20: + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 6 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW 3,.17 + DW 4,.18 + DW 5,.19 + DW .20 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+486 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,26 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .21 +.23: + LXI H,.1+506 + PUSH H + CALL printf_ + POP D + JMP .22 +.24: + LXI H,.1+518 + PUSH H + CALL printf_ + POP D + JMP .22 +.25: + LXI H,.1+529 + PUSH H + CALL printf_ + POP D + JMP .22 +.26: + LXI H,.1+541 + PUSH H + CALL printf_ + POP D + JMP .22 +.27: + LXI H,.1+555 + PUSH H + CALL printf_ + POP D + JMP .22 +.28: + LXI H,.1+567 + PUSH H + CALL printf_ + POP D + JMP .22 +.21: + CALL .swt + DW 5 + DW 0,.23 + DW 1,.24 + DW 2,.25 + DW 3,.26 + DW 4,.27 + DW .28 +.22: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,27 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+577 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,29 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+599 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,115,121,115,99,102,103,45,62,106,109,112,32,32 + DB 32,32,32,32,32,32,32,32,32,32,106,112,32,32,48 + DB 37,48,52,120,104,0,115,121,115,99,102,103,45,62,99 + DB 110,102,108,111,99,32,32,32,32,32,32,32,32,32,46 + DB 100,119,32,48,37,48,52,120,104,0,115,121,115,99,102 + DB 103,45,62,116,115,116,108,111,99,32,32,32,32,32,32 + DB 32,32,32,46,100,119,32,48,37,48,52,120,104,0,115 + DB 121,115,99,102,103,45,62,118,97,114,108,111,99,32,32 + DB 32,32,32,32,32,32,32,46,100,119,32,48,37,48,52 + DB 120,104,0,37,115,46,114,109,106,32,32,32,32,32,32 + DB 32,32,32,32,32,61,32,37,100,0,37,115,46,114,109 + DB 110,32,32,32,32,32,32,32,32,32,32,32,61,32,37 + DB 100,0,37,115,46,114,117,112,32,32,32,32,32,32,32 + DB 32,32,32,32,61,32,37,100,0,37,115,46,114,116,112 + DB 32,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 0,37,115,46,100,105,115,107,98,111,111,116,32,32,32 + DB 32,32,32,61,32,0,84,82,85,69,0,70,65,76,83 + DB 69,0,37,115,46,100,101,118,117,110,105,116,32,32,32 + DB 32,32,32,32,61,32,48,120,37,48,50,120,0,37,115 + DB 46,98,111,111,116,108,117,32,32,32,32,32,32,32,32 + DB 61,32,48,120,37,48,52,120,0,37,115,46,102,114,101 + DB 113,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 77,72,122,0,37,115,46,112,108,97,116,102,111,114,109 + DB 32,32,32,32,32,32,61,32,0,78,56,86,69,77,0 + DB 90,69,84,65,0,78,56,0,37,115,46,100,105,111,112 + DB 108,97,116,32,32,32,32,32,32,32,61,32,0,68,73 + DB 79,80,76,84,95,78,79,78,69,0,68,73,79,80,76 + DB 84,95,68,73,83,75,73,79,0,68,73,79,80,76,84 + DB 95,90,69,84,65,0,68,73,79,80,76,84,95,68,73 + DB 68,69,0,68,73,79,80,76,84,95,78,56,0,68,73 + DB 79,80,76,84,95,68,73,83,75,73,79,51,0,85,110 + DB 107,110,111,119,110,0,37,115,46,118,100,117,109,111,100 + DB 101,32,32,32,32,32,32,32,61,32,0,86,68,85,80 + DB 76,84,95,78,79,78,69,0,86,68,85,80,76,84,95 + DB 86,68,85,0,86,68,85,80,76,84,95,86,68,85,67 + DB 0,86,68,85,80,76,84,95,80,82,79,80,73,79,0 + DB 86,68,85,80,76,84,95,86,80,78,56,0,85,110,107 + DB 110,111,119,110,33,33,0,37,115,46,114,111,109,115,105 + DB 122,101,32,32,32,32,32,32,32,61,32,37,100,0,37 + DB 115,46,114,97,109,115,105,122,101,32,32,32,32,32,32 + DB 32,61,32,37,100,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CNAMEPT1.O b/branches/wbw/Apps/crossdev/CNAMEPT1.O new file mode 100644 index 00000000..30243fe5 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CNAMEPT1.O differ diff --git a/branches/wbw/Apps/crossdev/CNAMEPT2.ASM b/branches/wbw/Apps/crossdev/CNAMEPT2.ASM new file mode 100644 index 00000000..a8280c90 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CNAMEPT2.ASM @@ -0,0 +1,480 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept2_ +cnamept2_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,31 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+47 + PUSH H + CALL printf_ + POP D + JMP .4 +.7: + LXI H,.1+56 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 3 + DW 0,.5 + DW 1,.6 + DW 2,.7 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .8 +.10: + LXI H,.1+88 + PUSH H + CALL printf_ + POP D + JMP .9 +.11: + LXI H,.1+93 + PUSH H + CALL printf_ + POP D + JMP .9 +.8: + CALL .swt + DW 2 + DW 0,.11 + DW 1,.10 + DW .9 +.9: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+99 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,33 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+124 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 2 + DW 0,.15 + DW 1,.14 + DW .13 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,34 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .16 +.18: + LXI H,.1+150 + PUSH H + CALL printf_ + POP D + JMP .17 +.19: + LXI H,.1+155 + PUSH H + CALL printf_ + POP D + JMP .17 +.16: + CALL .swt + DW 2 + DW 0,.19 + DW 1,.18 + DW .17 +.17: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+161 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .20 +.22: + LXI H,.1+181 + PUSH H + CALL printf_ + POP D + JMP .21 +.23: + LXI H,.1+186 + PUSH H + CALL printf_ + POP D + JMP .21 +.20: + CALL .swt + DW 2 + DW 0,.23 + DW 1,.22 + DW .21 +.21: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .24 + LXI H,cache_ + PUSH H + LXI H,.1+192 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,36 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .25 +.27: + LXI H,.1+212 + PUSH H + CALL printf_ + POP D + JMP .26 +.28: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .26 +.29: + LXI H,.1+232 + PUSH H + CALL printf_ + POP D + JMP .26 +.30: + LXI H,.1+243 + PUSH H + CALL printf_ + POP D + JMP .26 +.31: + LXI H,.1+254 + PUSH H + CALL printf_ + POP D + JMP .26 +.25: + CALL .swt + DW 4 + DW 0,.27 + DW 1,.28 + DW 2,.29 + DW 3,.30 + DW .31 +.26: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+264 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,37 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .32 +.34: + LXI H,.1+284 + PUSH H + CALL printf_ + POP D + LXI H,.1+291 + PUSH H + CALL printf_ + POP D + JMP .33 +.35: + LXI H,.1+329 + PUSH H + CALL printf_ + POP D + LXI H,.1+336 + PUSH H + CALL printf_ + POP D + JMP .33 +.36: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + JMP .33 +.37: + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .33 +.38: + LXI H,.1+468 + PUSH H + CALL printf_ + POP D + JMP .33 +.32: + CALL .swt + DW 4 + DW 0,.34 + DW 1,.35 + DW 2,.36 + DW 3,.37 + DW .38 +.33: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,38 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+498 + PUSH H + CALL printf_ + POP D + LXI H,.1+505 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+543 + PUSH H + CALL printf_ + POP D + LXI H,.1+550 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+590 + PUSH H + CALL printf_ + POP D + LXI H,.1+597 + PUSH H + CALL printf_ + POP D + JMP .40 +.44: + LXI H,.1+636 + PUSH H + CALL printf_ + POP D + LXI H,.1+643 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 4 + DW 0,.41 + DW 1,.42 + DW 2,.43 + DW 3,.44 + DW .40 +.40: + CALL pager_ +.24: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,99,108,114,114,97,109,100,107,32,32 + DB 32,32,32,32,61,32,0,67,76,82,95,78,69,86,69 + DB 82,0,67,76,82,95,65,85,84,79,0,67,76,82,95 + DB 65,76,76,87,65,89,83,0,37,115,46,100,115,107,121 + DB 101,110,97,98,108,101,32,32,32,32,61,32,0,84,82 + DB 85,69,0,70,65,76,83,69,0,37,115,46,117,97,114 + DB 116,101,110,97,98,108,101,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,37,115,46,118,100 + DB 117,101,110,97,98,108,101,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,37,115,46,102 + DB 100,101,110,97,98,108,101,32,32,32,32,32,32,61,32 + DB 0,84,82,85,69,0,70,65,76,83,69,0,37,115,46 + DB 102,100,116,114,97,99,101,32,32,32,32,32,32,32,61 + DB 32,0,83,105,108,101,110,116,0,70,97,116,97,108,32 + DB 69,114,114,111,114,115,0,65,108,108,32,69,114,114,111 + DB 114,115,0,69,118,101,114,121,116,104,105,110,103,0,85 + DB 110,107,110,111,119,110,33,33,0,37,115,46,102,100,109 + DB 101,100,105,97,32,32,32,32,32,32,32,61,32,0,70 + DB 68,77,55,50,48,0,32,32,51,46,53,32,55,50,48 + DB 75,66,32,50,45,115,105,100,101,100,32,56,48,32,84 + DB 114,107,115,32,57,32,83,101,99,116,111,114,115,0,70 + DB 68,77,49,52,52,0,32,32,51,46,53,32,49,46,52 + DB 52,77,66,32,50,45,115,105,100,101,100,32,56,48,32 + DB 84,114,107,115,32,49,56,32,83,101,99,116,111,114,115 + DB 0,70,68,77,51,54,48,0,32,32,53,46,50,53,32 + DB 51,54,48,75,66,32,50,45,115,105,100,101,100,32,52 + DB 48,32,84,114,107,115,32,57,32,83,101,99,116,111,114 + DB 115,0,70,68,77,49,50,48,0,32,32,51,46,53,32 + DB 49,46,50,77,66,32,50,45,115,105,100,101,100,32,56 + DB 48,32,84,114,107,115,32,49,53,32,83,101,99,116,111 + DB 114,115,0,85,110,107,110,111,119,110,33,33,0,37,115 + DB 46,102,100,109,101,100,105,97,97,108,116,32,32,32,32 + DB 61,32,0,70,68,77,55,50,48,0,32,32,51,46,53 + DB 32,55,50,48,75,66,32,50,45,115,105,100,101,100,32 + DB 56,48,32,84,114,107,115,32,57,32,83,101,99,116,111 + DB 114,115,0,70,68,77,49,52,52,0,32,32,51,46,53 + DB 32,49,46,52,52,77,66,32,50,45,115,105,100,101,100 + DB 32,56,48,32,84,114,107,115,32,49,56,32,83,101,99 + DB 116,111,114,115,0,70,68,77,51,54,48,0,32,32,53 + DB 46,50,53,32,51,54,48,75,66,32,50,45,115,105,100 + DB 101,100,32,52,48,32,84,114,107,115,32,57,32,83,101 + DB 99,116,111,114,115,0,70,68,77,49,50,48,0,32,32 + DB 51,46,53,32,49,46,50,77,66,32,50,45,115,105,100 + DB 101,100,32,56,48,32,84,114,107,115,32,49,53,32,83 + DB 101,99,116,111,114,115,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CNAMEPT2.O b/branches/wbw/Apps/crossdev/CNAMEPT2.O new file mode 100644 index 00000000..ad28d6bb Binary files /dev/null and b/branches/wbw/Apps/crossdev/CNAMEPT2.O differ diff --git a/branches/wbw/Apps/crossdev/CNAMEPT3.ASM b/branches/wbw/Apps/crossdev/CNAMEPT3.ASM new file mode 100644 index 00000000..1d77ae04 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CNAMEPT3.ASM @@ -0,0 +1,794 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept3_ +cnamept3_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,39 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+42 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+48 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+73 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 2 + DW 0,.10 + DW 1,.9 + DW .8 +.8: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .11 + LXI H,cache_ + PUSH H + LXI H,.1+79 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,41 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+95 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+102 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+109 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+120 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 3 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW .17 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,42 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .18 +.20: + LXI H,.1+149 + PUSH H + CALL printf_ + POP D + JMP .19 +.21: + LXI H,.1+154 + PUSH H + CALL printf_ + POP D + JMP .19 +.22: + LXI H,.1+160 + PUSH H + CALL printf_ + POP D + JMP .19 +.18: + CALL .swt + DW 2 + DW 0,.21 + DW 1,.20 + DW .22 +.19: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+170 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ +.11: + LXI H,cache_ + PUSH H + LXI H,.1+194 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .23 +.25: + LXI H,.1+214 + PUSH H + CALL printf_ + POP D + JMP .24 +.26: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .24 +.23: + CALL .swt + DW 2 + DW 0,.26 + DW 1,.25 + DW .24 +.24: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .27 + LXI H,cache_ + PUSH H + LXI H,.1+225 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,46 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .28 +.30: + LXI H,.1+245 + PUSH H + CALL printf_ + POP D + JMP .29 +.31: + LXI H,.1+252 + PUSH H + CALL printf_ + POP D + JMP .29 +.32: + LXI H,.1+259 + PUSH H + CALL printf_ + POP D + JMP .29 +.33: + LXI H,.1+270 + PUSH H + CALL printf_ + POP D + JMP .29 +.28: + CALL .swt + DW 3 + DW 0,.30 + DW 1,.31 + DW 2,.32 + DW .33 +.29: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+280 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,47 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .34 +.36: + LXI H,.1+300 + PUSH H + CALL printf_ + POP D + JMP .35 +.37: + LXI H,.1+305 + PUSH H + CALL printf_ + POP D + JMP .35 +.38: + LXI H,.1+311 + PUSH H + CALL printf_ + POP D + JMP .35 +.34: + CALL .swt + DW 2 + DW 0,.37 + DW 1,.36 + DW .38 +.35: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,48 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+321 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+345 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+365 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+370 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 2 + DW 0,.42 + DW 1,.41 + DW .43 +.40: + CALL pager_ +.27: + LXI H,cache_ + PUSH H + LXI H,.1+386 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,51 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .44 +.46: + LXI H,.1+406 + PUSH H + CALL printf_ + POP D + JMP .45 +.47: + LXI H,.1+414 + PUSH H + CALL printf_ + POP D + JMP .45 +.44: + CALL .swt + DW 2 + DW 1,.46 + DW 2,.47 + DW .45 +.45: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,52 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,53 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+452 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+475 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,3 + POP D + CALL .eq + JZ .48 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,56 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+511 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,57 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+533 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,58 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+559 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,59 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+585 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,60 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+611 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+637 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,61 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .49 +.51: + LXI H,.1+657 + PUSH H + CALL printf_ + POP D + JMP .50 +.52: + LXI H,.1+662 + PUSH H + CALL printf_ + POP D + JMP .50 +.53: + LXI H,.1+668 + PUSH H + CALL printf_ + POP D + JMP .50 +.49: + CALL .swt + DW 2 + DW 0,.52 + DW 1,.51 + DW .53 +.50: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+678 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,62 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .54 +.56: + LXI H,.1+698 + PUSH H + CALL printf_ + POP D + JMP .55 +.57: + LXI H,.1+703 + PUSH H + CALL printf_ + POP D + JMP .55 +.58: + LXI H,.1+709 + PUSH H + CALL printf_ + POP D + JMP .55 +.54: + CALL .swt + DW 2 + DW 0,.57 + DW 1,.56 + DW .58 +.55: + CALL pager_ +.48: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,102,100,109,97,117,116,111,32,32,32 + DB 32,32,32,32,61,32,0,84,82,85,69,0,70,65,76 + DB 83,69,0,37,115,46,105,100,101,101,110,97,98,108,101 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,37,115,46,105,100,101,116,114,97,99,101 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,100,101 + DB 56,98,105,116,32,32,32,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,85,110,107,110,111 + DB 119,110,33,33,0,37,115,46,105,100,101,99,97,112,97 + DB 99,105,116,121,32,32,32,61,32,37,100,77,66,0,37 + DB 115,46,112,112,105,100,101,101,110,97,98,108,101,32,32 + DB 32,61,32,0,84,82,85,69,0,70,65,76,83,69,0 + DB 37,115,46,112,112,105,100,101,116,114,97,99,101,32,32 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,112,112 + DB 105,100,101,56,98,105,116,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,85,110,107,110 + DB 111,119,110,33,33,0,37,115,46,112,112,105,100,101,99 + DB 97,112,97,99,105,116,121,32,61,32,37,100,75,66,0 + DB 37,115,46,112,112,105,100,101,115,108,111,119,32,32,32 + DB 32,32,61,32,0,84,82,85,69,0,70,65,76,83,69 + DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,98 + DB 111,111,116,116,121,112,101,32,32,32,32,32,32,61,32 + DB 0,66,84,95,77,69,78,85,0,66,84,95,65,85,84 + DB 79,0,37,115,46,98,111,111,116,116,105,109,101,111,117 + DB 116,32,32,32,61,32,37,100,32,115,101,99,111,110,100 + DB 115,0,37,115,46,98,111,111,116,100,101,102,97,117,108 + DB 116,32,32,32,61,32,37,99,58,0,37,115,46,98,97 + DB 117,100,114,97,116,101,32,32,32,32,32,32,61,32,37 + DB 117,32,40,48,120,37,48,52,120,41,32,66,97,117,100 + DB 0,37,115,46,99,107,100,105,118,32,32,32,32,32,32 + DB 32,32,32,61,32,37,100,0,37,115,46,109,101,109,119 + DB 97,105,116,32,32,32,32,32,32,32,61,32,48,120,37 + DB 48,50,120,0,37,115,46,105,111,119,97,105,116,32,32 + DB 32,32,32,32,32,32,61,32,48,120,37,48,50,120,0 + DB 37,115,46,99,110,116,108,98,48,32,32,32,32,32,32 + DB 32,32,61,32,48,120,37,48,50,120,0,37,115,46,99 + DB 110,116,108,98,49,32,32,32,32,32,32,32,32,61,32 + DB 48,120,37,48,50,120,0,37,115,46,115,100,101,110,97 + DB 98,108,101,32,32,32,32,32,32,61,32,0,84,82,85 + DB 69,0,70,65,76,83,69,0,85,110,107,110,111,119,110 + DB 33,33,0,37,115,46,115,100,116,114,97,99,101,32,32 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,85,110,107,110,111,119,110,33,33,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CNAMEPT3.O b/branches/wbw/Apps/crossdev/CNAMEPT3.O new file mode 100644 index 00000000..4d1a1517 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CNAMEPT3.O differ diff --git a/branches/wbw/Apps/crossdev/CNAMEPT4.ASM b/branches/wbw/Apps/crossdev/CNAMEPT4.ASM new file mode 100644 index 00000000..437a4620 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CNAMEPT4.ASM @@ -0,0 +1,742 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept4_ +cnamept4_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,3 + POP D + CALL .eq + JZ .3 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,63 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+41 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,65 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .4 +.6: + LXI H,.1+61 + PUSH H + CALL printf_ + POP D + JMP .5 +.7: + LXI H,.1+66 + PUSH H + CALL printf_ + POP D + JMP .5 +.8: + LXI H,.1+72 + PUSH H + CALL printf_ + POP D + JMP .5 +.4: + CALL .swt + DW 2 + DW 0,.7 + DW 1,.6 + DW .8 +.5: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+82 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,66 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .9 +.11: + LXI H,.1+102 + PUSH H + CALL printf_ + POP D + JMP .10 +.12: + LXI H,.1+107 + PUSH H + CALL printf_ + POP D + JMP .10 +.13: + LXI H,.1+113 + PUSH H + CALL printf_ + POP D + JMP .10 +.9: + CALL .swt + DW 2 + DW 0,.12 + DW 1,.11 + DW .13 +.10: + CALL pager_ +.3: + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,67 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+123 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+149 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,68 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .14 +.16: + LXI H,.1+169 + PUSH H + CALL printf_ + POP D + JMP .15 +.17: + LXI H,.1+178 + PUSH H + CALL printf_ + POP D + JMP .15 +.18: + LXI H,.1+188 + PUSH H + CALL printf_ + POP D + JMP .15 +.19: + LXI H,.1+198 + PUSH H + CALL printf_ + POP D + JMP .15 +.20: + LXI H,.1+208 + PUSH H + CALL printf_ + POP D + JMP .15 +.14: + CALL .swt + DW 4 + DW 0,.16 + DW 1,.17 + DW 2,.18 + DW 3,.19 + DW .20 +.15: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,69 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+218 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+240 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,84 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .21 +.23: + LXI H,.1+260 + PUSH H + CALL printf_ + POP D + JMP .22 +.24: + LXI H,.1+265 + PUSH H + CALL printf_ + POP D + JMP .22 +.25: + LXI H,.1+271 + PUSH H + CALL printf_ + POP D + JMP .22 +.21: + CALL .swt + DW 2 + DW 0,.24 + DW 1,.23 + DW .25 +.22: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,84 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .26 + LXI H,.1+281 + PUSH H + CALL printf_ + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,71 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .27 +.29: + LXI H,.1+301 + PUSH H + CALL printf_ + POP D + JMP .28 +.30: + LXI H,.1+306 + PUSH H + CALL printf_ + POP D + JMP .28 +.31: + LXI H,.1+312 + PUSH H + CALL printf_ + POP D + JMP .28 +.27: + CALL .swt + DW 2 + DW 0,.30 + DW 1,.29 + DW .31 +.28: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,71 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .32 + LXI H,cache_ + PUSH H + LXI H,.1+322 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,72 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .33 +.35: + LXI H,.1+342 + PUSH H + CALL printf_ + POP D + JMP .34 +.36: + LXI H,.1+349 + PUSH H + CALL printf_ + POP D + JMP .34 +.37: + LXI H,.1+356 + PUSH H + CALL printf_ + POP D + JMP .34 +.38: + LXI H,.1+367 + PUSH H + CALL printf_ + POP D + JMP .34 +.33: + CALL .swt + DW 3 + DW 0,.35 + DW 1,.36 + DW 2,.37 + DW .38 +.34: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+377 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+397 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,75 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+417 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+428 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 2 + DW 0,.42 + DW 1,.41 + DW .43 +.40: + CALL pager_ +.32: +.26: + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,76 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+438 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+460 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,78 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .44 +.46: + LXI H,.1+480 + PUSH H + CALL printf_ + POP D + JMP .45 +.47: + LXI H,.1+485 + PUSH H + CALL printf_ + POP D + JMP .45 +.48: + LXI H,.1+491 + PUSH H + CALL printf_ + POP D + JMP .45 +.44: + CALL .swt + DW 2 + DW 0,.47 + DW 1,.46 + DW .48 +.45: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,78 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .49 + LXI H,cache_ + PUSH H + LXI H,.1+501 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,79 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .50 +.52: + LXI H,.1+520 + PUSH H + CALL printf_ + POP D + JMP .51 +.53: + LXI H,.1+525 + PUSH H + CALL printf_ + POP D + JMP .51 +.54: + LXI H,.1+531 + PUSH H + CALL printf_ + POP D + JMP .51 +.50: + CALL .swt + DW 2 + DW 0,.53 + DW 1,.52 + DW .54 +.51: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+541 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,80 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .55 +.57: + LXI H,.1+561 + PUSH H + CALL printf_ + POP D + JMP .56 +.58: + LXI H,.1+568 + PUSH H + CALL printf_ + POP D + JMP .56 +.59: + LXI H,.1+575 + PUSH H + CALL printf_ + POP D + JMP .56 +.60: + LXI H,.1+586 + PUSH H + CALL printf_ + POP D + JMP .56 +.55: + CALL .swt + DW 3 + DW 0,.57 + DW 1,.58 + DW 2,.59 + DW .60 +.56: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,73 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+596 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+618 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,83 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .61 +.63: + LXI H,.1+638 + PUSH H + CALL printf_ + POP D + JMP .62 +.64: + LXI H,.1+643 + PUSH H + CALL printf_ + POP D + JMP .62 +.65: + LXI H,.1+649 + PUSH H + CALL printf_ + POP D + JMP .62 +.61: + CALL .swt + DW 2 + DW 0,.64 + DW 1,.63 + DW .65 +.62: + CALL pager_ +.49: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,115,100,99,97,112,97,99,105,116,121 + DB 32,32,32,32,61,32,37,117,75,66,0,37,115,46,115 + DB 100,99,115,105,111,32,32,32,32,32,32,32,32,61,32 + DB 0,84,82,85,69,0,70,65,76,83,69,0,85,110,107 + DB 110,111,119,110,33,33,0,37,115,46,115,100,99,115,105 + DB 111,102,97,115,116,32,32,32,32,61,32,0,84,82,85 + DB 69,0,70,65,76,83,69,0,85,110,107,110,111,119,110 + DB 33,33,0,37,115,46,100,101,102,105,111,98,121,116,101 + DB 32,32,32,32,32,61,32,48,120,37,48,50,120,0,37 + DB 115,46,116,101,114,109,116,121,112,101,32,32,32,32,32 + DB 32,61,32,0,84,69,82,77,95,84,84,89,0,84,69 + DB 82,77,95,65,78,83,73,0,84,69,82,77,95,87,89 + DB 83,69,0,84,69,82,77,95,86,84,53,50,0,85,110 + DB 107,110,111,119,110,33,33,0,37,115,46,114,101,118,105 + DB 115,105,111,110,32,32,32,32,32,32,61,32,37,100,0 + DB 37,115,46,112,114,112,101,110,97,98,108,101,32,32,32 + DB 32,32,61,32,0,84,82,85,69,0,70,65,76,83,69 + DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,112 + DB 114,112,115,100,101,110,97,98,108,101,32,32,32,61,32 + DB 0,84,82,85,69,0,70,65,76,83,69,0,85,110,107 + DB 110,111,119,110,33,33,0,37,115,46,112,114,112,115,100 + DB 116,114,97,99,101,32,32,32,32,61,32,0,83,73,76 + DB 69,78,84,0,69,82,82,79,82,83,0,69,86,69,82 + DB 89,84,72,73,78,71,0,85,110,107,110,111,119,110,33 + DB 33,0,37,115,46,112,114,112,115,100,99,97,112,97,99 + DB 105,116,121,32,61,32,0,37,115,46,112,114,112,99,111 + DB 110,101,110,97,98,108,101,32,32,61,32,0,84,82,85 + DB 69,0,70,65,76,83,69,0,85,110,107,110,111,119,110 + DB 33,33,0,37,115,46,98,105,111,115,115,105,122,101,32 + DB 32,32,32,32,32,61,32,37,100,0,37,115,46,112,112 + DB 112,101,110,97,98,108,101,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,85,110,107,110 + DB 111,119,110,33,33,0,37,115,46,112,112,112,115,100,101 + DB 110,97,98,108,101,32,32,61,32,0,84,82,85,69,0 + DB 70,65,76,83,69,0,85,110,107,110,111,119,110,33,33 + DB 0,37,115,46,112,112,112,115,100,116,114,97,99,101,32 + DB 32,32,32,61,32,0,83,73,76,69,78,84,0,69,82 + DB 82,79,82,83,0,69,86,69,82,89,84,72,73,78,71 + DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,112 + DB 112,112,99,97,112,97,99,105,116,121,32,32,32,61,32 + DB 37,100,0,37,115,46,112,112,112,99,111,110,101,110,97 + DB 98,108,101,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,85,110,107,110,111,119,110,33,33,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CNAMEPT4.O b/branches/wbw/Apps/crossdev/CNAMEPT4.O new file mode 100644 index 00000000..50309b57 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CNAMEPT4.O differ diff --git a/branches/wbw/Apps/crossdev/CNFGDATA.LIB b/branches/wbw/Apps/crossdev/CNFGDATA.LIB new file mode 100644 index 00000000..10b24d99 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CNFGDATA.LIB @@ -0,0 +1,210 @@ +; cnfgdata.lib 7/19/2012 dwg - + +byte equ 1 +word equ 2 + +;; /* cnfgdata.h 6/04/2012 dwg - */ +;; +;; struct CNFGDATA { +;; unsigned char rmj; +cfgrmj equ 08009h +;; +;; unsigned char rmn; +cfgrmn equ cfgrmj + byte +;; +;; unsigned char rup; +cfgrup equ cfgrmn + byte +;; +;; unsigned char rtp; +cfgrtp equ cfgrup + byte +;; +;; unsigned char diskboot; +diskboot equ cfgrtp + byte +;; +;; unsigned char devunit; +devunit equ diskboot + byte +;; +;; unsigned int bootlu; +bootlu equ devunit + byte +;; +;; unsigned char hour; +hour equ bootlu + word +;; +;; unsigned char minute; +minute equ hour + byte +;; +;; unsigned char second; +second equ minute + byte +;; +;; unsigned char month; +month equ second + byte +;; +;; unsigned char day; +day equ month + byte +;; +;; unsigned char year; +year equ day + byte +;; +;; unsigned char freq; +freq equ year + byte +;; +;; unsigned char platform; +platform equ freq+ byte +;; +;; unsigned char dioplat; +dioplat equ platform + byte +;; +;; unsigned char vdumode; +vdumode equ dioplat + byte +;; +;; unsigned int romsize; +romsize equ vdumode + byte +;; +;; unsigned int ramsize; +ramsize equ romsize + word +;; +;; unsigned char clrramdk; +clrramdk equ ramsize + word +;; +;; unsigned char dskyenable; +dskyenable equ clrramdk + byte +;; +;; unsigned char uartenable; +uartenable equ dskyenable + byte +;; +;; unsigned char vduenable; +vduenable equ uartenable + byte +;; +;; unsigned char fdenable; +fdenable equ vduenable + byte +;; +;; unsigned char fdtrace; +fdtrace equ fdenable + byte +;; +;; unsigned char fdmedia; +fdmedia equ fdtrace + byte +;; +;; unsigned char fdmediaalt; +fdmediaalt equ fdmedia + byte +;; +;; unsigned char fdmauto; +fdmauto equ fdmediaalt + byte +;; +;; unsigned char ideenable; +ideenable equ fdmauto + byte +;; +;; unsigned char idetrace; +idetrace equ ideenable + byte +;; +;; unsigned char ide8bit; +ide8bit equ idetrace + byte +;; +;; unsigned int idecapacity; +idecapacity equ ide8bit + byte +;; +;; unsigned char ppideenable; +ppideenable equ idecapacity + word +;; +;; unsigned char ppidetrace; +ppidetrace equ ppideenable + byte +;; +;; unsigned char ppide8bit; +ppide8bit equ ppidetrace + byte +;; +;; unsigned int ppidecapacity; +ppidecapacity equ ppide8bit + byte +;; +;; unsigned char ppideslow; +ppideslow equ ppidecapacity + word +;; +;; unsigned char boottype; +boottype equ ppideslow + byte +;; +;; unsigned char boottimeout; +boottimeout equ boottype + byte +;; +;; unsigned char bootdefault; +bootdefault equ boottimeout + byte +;; +;; unsigned int baudrate; +baudrate equ bootdefault + byte +;; +;; unsigned char ckdiv; +ckdiv equ baudrate + word +;; +;; unsigned char memwait; +memwait equ ckdiv + byte +;; +;; unsigned char iowait; +iowait equ memwait + byte +;; +;; unsigned char cntlb0; +cntlb0 equ iowait + byte +;; +;; unsigned char cntlb1; +cntlb1 equ cntlb0 + byte +;; +;; unsigned char sdenable; +sdenable equ cntlb1 + byte +;; +;; unsigned char sdtrace; +sdtrace equ sdenable + byte +;; +;; unsigned int sdcapacity; +sdcapacity equ sdtrace + byte +;; +;; unsigned char sdcsio; +sdcsio equ sdcapacity + word +;; +;; unsigned char sdcsiofast; +sdcsiofast equ sdcsio + byte +;; +;; unsigned char defiobyte; +defiobyte equ sdcsiofast + byte +;; +;; unsigned char termtype; +termtype equ defiobyte + byte +;; +;; unsigned int revision; +revision equ termtype + byte +;; +;; unsigned char prpsdenable; +prpsdenable equ revision + word +;; +;; unsigned char prpsdtrace; +prpsdtrace equ prpsdenable + byte +;; +;; unsigned int prpsdcapacity; +prpsdcapacity equ prpsdtrace + byte +;; +;; unsigned char prpconenable; +prpconenable equ prpsdcapacity + word +;; +;; unsigned int biossize; +biossize equ prpconenable + byte +;; +;; unsigned char pppenable; +pppenable equ biossize + word +;; +;; unsigned char pppsdenable; +pppsdenable equ pppenable + byte +;; +;; unsigned char pppsdtrace; +pppsdtrace equ pppsdenable + byte +;; +;; unsigned int pppsdcapacity; +pppsdcapacity equ pppsdtrace + byte +;; +;; unsigned char pppconenable; +pppconenable equ pppsdcapacity + word +;; +;; unsigned char prpenable; +prpenable equ pppconenable + byte +;; +;; }; +;; +;; /********************/ +;; /* eof - cnfgdata.h */ +;; /********************/ + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CONVERT.C b/branches/wbw/Apps/crossdev/CONVERT.C new file mode 100644 index 00000000..57cfdf2a --- /dev/null +++ b/branches/wbw/Apps/crossdev/CONVERT.C @@ -0,0 +1,80 @@ +/* convert.c 7/11/2012 dwg - + + The purpose of this program is similar to the CP/M dump program + except that in addition to the normal hexadecimal bytes, a field + of ascii bytes to the right are displayed as well. + +*/ + +#include "stdio.h" + + +char visible[256] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 20 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 30 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 40 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 50 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 60 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 70 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ +}; + +#include "cvt2h.h" + +unsigned char sector[32767]; + +main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + int offset; + int result; + unsigned char byte; + char name[32]; + + + FILE * fd; + + for(i=0;i0;i--) { + if(sector[i] != 0) break; + } + + sprintf(name,"sect%04x.h",0); + cvt2h(sector,i,name); + fclose(fd); + + exit(0); +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/COREAPPS.BAK b/branches/wbw/Apps/crossdev/COREAPPS.BAK new file mode 100644 index 00000000..5ad6bb86 --- /dev/null +++ b/branches/wbw/Apps/crossdev/COREAPPS.BAK @@ -0,0 +1,28 @@ +rem coreapps.bat 2/15/2013 dwg - build all core apps using batch files + +if not exist access.cpm call access.bat + +if not exist cpmname.cpm call cpmname.bat + +if not exist findfile.cpm call findfile.bat +if not exist findfile.cpm pause + +if not exist map.cpm call map.bat + +if not exist meta.cpm call meta.bat + +if not exist multifmt.cpm call multifmt.bat + +if not exist rem.cpm call makerem.bat + +if not exist setlabel.cpm call setlabel.bat + +if not exist sysgen.cpm call sysgen.bat + +if not exist termtype.cpm call termtype.bat + +if not exist view.cpm call view.bat + +rem All Core Apps Built +dir *.cpm /w + diff --git a/branches/wbw/Apps/crossdev/COREAPPS.BAT b/branches/wbw/Apps/crossdev/COREAPPS.BAT new file mode 100644 index 00000000..bdd9ddea --- /dev/null +++ b/branches/wbw/Apps/crossdev/COREAPPS.BAT @@ -0,0 +1,38 @@ +rem coreapps.bat 2/15/2013 dwg - build all core apps using batch files + +if not exist access.cpm call access.bat +if not exist access.cpm pause + +if not exist cpmname.cpm call cpmname.bat +if not exist cpmname.cpm pause + +if not exist findfile.cpm call findfile.bat +if not exist findfile.cpm pause + +if not exist map.cpm call map.bat +if not exist map.cpm pause + +if not exist meta.cpm call meta.bat +if not exist meta.cpm pause + +if not exist multifmt.cpm call multifmt.bat +if not exist multifmt.cpm pause + +if not exist rem.cpm call makerem.bat +if not exist rem.cpm pause + +if not exist setlabel.cpm call setlabel.bat +if not exist setlabel.cpm pause + +if not exist sysgen.cpm call sysgen.bat +if not exist sysgen.cpm pause + +if not exist termtype.cpm call termtype.bat +if not exist termtype.cpm pause + +if not exist view.cpm call view.bat +if not exist view.cpm pause + +rem All Core Apps Built +dir *.cpm /w + diff --git a/branches/wbw/Apps/crossdev/COREAPPS.SUB b/branches/wbw/Apps/crossdev/COREAPPS.SUB new file mode 100644 index 00000000..e6681ac7 --- /dev/null +++ b/branches/wbw/Apps/crossdev/COREAPPS.SUB @@ -0,0 +1,71 @@ +e:rmac access +e:rmac banner +e:rmac findfile +e:rmac hbios +e:rmac identity +e:rmac labelib +e:rmac memory +e:rmac metadata +e:rmac printers +e:rmac rem +e:rmac setlabel +e:rmac terminal +as asmiface +as bdoscall +as bioscall +cc cbanner +as cbanner +cc clogical +as clogical +cc cmemory +as cmemory +cc cnamept1 +as cnamept1 +cc cnamept2 +as cnamept2 +cc cnamept3 +as cnamept3 +cc cnamept4 +as cnamept4 +cc cpmname +as cpmname +cc ctermcap +as ctermcap +as diagnose +cc map +as map +cc meta +as meta +cc multifmt +as multifmt +cc sectorio +as sectorio +cc sysgen +as sysgen +cc termtype +as termtype +cc view +as view +e:link access,memory,banner,printers +ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib +e:link findfile,hbios,identity,banner,memory,printers,terminal +ln map.o asmiface.o bioscall.o bdoscall.o clogical.o diagnose.o ctermcap.o c.lib +ln meta.o asmiface.o bioscall.o bdoscall.o cbanner.o clogical.o diagnose.o ctermcap.o sectorio.o c.lib +ln multifmt.o asmiface.o bioscall.o bdoscall.o clogical.o cmemory.o sectorio.o diagnose.o ctermcap.o c.lib +e:link rem +e:link setlabel,labelib,identity,printers,banner,metadata,memory +ln sysgen.o sectorio.o ctermcap.o diagnose.o bdoscall.o bioscall.o c.lib +ln termtype.o asmiface.o ctermcap.o diagnose.o c.lib +ln view.o ctermcap.o diagnose.o bdoscall.o bioscall.o c.lib +e:access access.com +e:access cpmname.com +e:access findfile.com +e:access map.com +e:access meta.com +e:access multifmt.com +e:access rem.com +e:access setlabel.com +e:access sysgen.com +e:access termtype.com +e:access view.com + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPM80.H b/branches/wbw/Apps/crossdev/CPM80.H index f7ed0bac..20d45f51 100644 --- a/branches/wbw/Apps/crossdev/CPM80.H +++ b/branches/wbw/Apps/crossdev/CPM80.H @@ -63,8 +63,7 @@ struct BIOS { char diskboot; char bootdrive; - char devunit; - + char rmj; char rmn; char rup; @@ -193,4 +192,4 @@ struct DPHMAP * pDPHVEC[MAXDRIVE]; /*****************/ /* eof - cpm80.h */ /*****************/ - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMAPPL.LIB b/branches/wbw/Apps/crossdev/CPMAPPL.LIB new file mode 100644 index 00000000..fa626600 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMAPPL.LIB @@ -0,0 +1,82 @@ +; cpmappl.lib 2/10/2012 dwg - begin 1.6 development +; cpmappl.lib 2/04/2012 dwg - fix typo mov becomes mvi +; cpmappl.lib 2/ 2/2012 dwg - initial version + +; +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . +; + +do$start macro + +start: jmp begin + + public hexref +hexref db '0123456789ABCDEF' + + public id$sig,id$rmj,id$rmn,id$rup,id$rtp,id$mon,id$day,id$yr +id$sig db 'ID' +id$rmj db A$RMJ +id$rmn db A$RMN +id$rup db A$RUP +id$rtp db A$RTP +id$mon db A$MONTH +id$day db A$DAY +id$yr dw A$YEAR +id$argv dw argv + db 0e5h + + + public pre$stk +pre$stk ds 2 + + public begin +begin: lxi h,0 + dad sp + shld pre$stk + lxi sp,stack$top + nop + endm + + +;--------------------------------- + + +do$end macro + lhld pre$stk + sphl + + mvi c,13 + call BDOS + + ret + ds stack$size +stack$top: + + endm + +movfcb macro destn,source + lxi d,destn + lxi h,source + lxi b,LENFCB + ldir + endm + +copyfcb macro fcbname,source + local around + jmp around +fcbname ds 32 +around: + endm + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMBDOS.H b/branches/wbw/Apps/crossdev/CPMBDOS.H index cc941b65..5ee0c55f 100644 --- a/branches/wbw/Apps/crossdev/CPMBDOS.H +++ b/branches/wbw/Apps/crossdev/CPMBDOS.H @@ -1,4 +1,3 @@ -/* cpmbdos.h 6/11/2012 dwg - */ #define TERMCPM 0 #define CONIN 1 @@ -50,4 +49,4 @@ struct FCB { char filetype[3]; char filler[24]; }; - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMBDOS.LIB b/branches/wbw/Apps/crossdev/CPMBDOS.LIB new file mode 100644 index 00000000..a5c8db6f --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMBDOS.LIB @@ -0,0 +1,174 @@ +; cpmbdos.lib 1/19/2012 dwg - add READ$CON$BUF (10) +; cpmbdos.lib 1/15/2012 dwg - add more functions + +; +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . +; + +; BDOS function codes + +TERMCPM equ 0 ; return to command line +CREAD equ 1 ; read a character +CWRITE equ 2 ; write a character +PRINTSTR equ 9 ; print string +READ$CON$BUF equ 10 ; read console buffer +RETVERNO equ 12 ; return version number +DSKRESET equ 13 ; disk reset +SELDSK equ 14 ; select disk +FOPEN equ 15 ; open file +FCLOSE equ 16 ; close file +FDELETE equ 19 ; delete file +READSEQ equ 20 ; read sequential +WRITESEQ equ 21 ; write sequential +FMAKE equ 22 ; make file +FRENAME equ 23 ; rename file +RETCURR equ 25 ; return current disk, 0=a +SETDMA equ 26 ; set dma address +WRITERAND equ 34 ; write random record +FCOMPSIZE equ 35 ; compute file size +SETRANDREC equ 36 ; set random record +RESETDRIVE equ 37 ; reset drive +WRITERANDZF equ 40 ; write random with zero fill + +OEMID equ 0E5h + +; File Control Block +DR$OFS equ 0 +F1$OFS equ DR$OFS+BYTESIZE +F2$OFS equ F1$OFS+BYTESIZE +F3$OFS equ F2$OFS+BYTESIZE +F4$OFS equ F3$OFS+BYTESIZE +F5$OFS equ F4$OFS+BYTESIZE +F6$OFS equ F5$OFS+BYTESIZE +F7$OFS equ F6$OFS+BYTESIZE +F8$OFS equ F7$OFS+BYTESIZE +T1$OFS equ F8$OFS+BYTESIZE +T2$OFS equ T1$OFS+BYTESIZE +T3$OFS equ T2$OFS+BYTESIZE +EX$OFS equ T3$OFS+BYTESIZE +S1$OFS equ EX$OFS+BYTESIZE +S2$OFS equ S1$OFS+BYTESIZE +RC$OFS equ S2$OFS+BYTESIZE +D0$OFS equ RC$OFS+BYTESIZE +CR$OFS equ DR$OFS+32 +R0$OFS equ CR$OFS+BYTESIZE +R1$OFS equ R0$OFS+BYTESIZE +R2$OFS equ R1$OFS+BYTESIZE +FCB$LEN equ R2$OFS+BYTESIZE + +; Memory Locations + +BDOS equ 5 ; entry point fo BDOS function calls +PRIFCB equ 5Ch ; primary file control block address +SECFCB equ 6Ch ; secondary file control block address +LENFCB equ 32 ; length of file control block +DEFBUF equ 80h ; address of default buffer + + +EXIT macro + mvi c,TERMCPM + call BDOS + endm + +conin macro + push b ; save context B&C + push d ; save context D&E + push h ; save context H&L + mvi c,CREAD ; set up for console input BDOS call + call BDOS ; call BDOS function entry point + pop h ; restore context H&L + pop d ; restore context D&E + pop b ; restore context B&C + endm + +conout macro char + enter ; save all context regs + mvi c,CWRITE ; set for console output BDOS call + mvi e,char ; place output character in E as required + call bdos ; call BDOS function entry point + leave ; restore all context regs + endm + +conouta macro + enter + mvi c,CWRITE + mov e,a + call bdos + leave + endm + +PRINT macro addr + enter + mvi c,PRINTSTR + lxi d,addr + call BDOS + leave + endm + +PTRPRT macro addr + enter ; save all context registers + lxi h,addr ; load the address parameter into H&L + mov e,m ; pick up LO byte of new pointer + inx h ; bump index register + mov d,m ; pick up HO byte of new pointer + mvi c,PRINTSTR ; assembled pointer used for printstring call + call BDOS + leave ; restore all context registers + endm + + +movfcb macro destn,source + lxi d,destn + lxi h,source + lxi b,LENFCB + ldir + endm + +copyfcb macro fcbname,source + local around + jmp around +fcbname ds 32 +around: + endm + +printf macro parmdata + local around + local string + print string + jmp around +string db parmdata + db '$' +around: + endm + +printmsg macro parmdata + enter + local around + local string + print string + jmp around +string db parmdata + db '$' +around: + leave + endm + +newfcb macro fcbname,drive,filename +fcbname db drive,filename + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + endm + + +; eof - cpmbdos.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMBIND.H b/branches/wbw/Apps/crossdev/CPMBIND.H index 0a0dfcf7..ae14800b 100644 --- a/branches/wbw/Apps/crossdev/CPMBIND.H +++ b/branches/wbw/Apps/crossdev/CPMBIND.H @@ -208,6 +208,8 @@ struct BIOS { #define DEV_PPIDE 0x40 #define DEV_SD 0x50 #define DEV_PRPSD 0x60 +#define DEV_PPPSD 0x70 +#define DEV_HDSK 0x80 #define PLT_N8VEM 1 #define PLT_ZETA 2 @@ -679,4 +681,4 @@ TERM$VT52 equ 3 ; eof - std.lib */ - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMBIOS.LIB b/branches/wbw/Apps/crossdev/CPMBIOS.LIB new file mode 100644 index 00000000..82c80bea --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMBIOS.LIB @@ -0,0 +1,137 @@ +; cpmbios.lib 2/20/2012 dwg - get$off, get$drm, and get$spt need c=drvnum +; cpmbios.lib 12/26/2011 dwg - + +; Copyright (C) 2011-2012 Douglas Goodall All Rights Reserved. +; For non-commercial use by N8VEM community + +XLT$OFS equ 0 ; Translate Table +RV1$OFS equ XLT$OFS+WORDSIZE ; Reserved Field 1 +RV2$OFS equ RV1$OFS+WORDSIZE ; Reserved Field 2 +RV3$OFS equ RV2$OFS+WORDSIZE ; Reserved Field 3 +DBF$OFS equ RV3$OFS+WORDSIZE ; Directory Buffer +DPB$OFS equ DBF$OFS+WORDSIZE ; Diskk Parameter Block Pointer +CSV$OFS equ DPB$OFS+WORDSIZE ; Checksum Vector +ALV$OFS equ CSV$OFS+WORDSIZE ; Allocation Vector +DPH$LEN equ ALV$OFS+WORDSIZE ; size of normal DPH +LU1$OFS equ ALV$OFS+WORDSIZE ; Logical Unit Signature Byte 1 'L' +LU2$OFS equ LU1$OFS+BYTESIZE ; Logical Unit Signature Byte 2 'U' +CUR$OFS equ LU2$OFS+BYTESIZE ; Current Logical Unit (default) +NLU$OFS equ CUR$OFS+WORDSIZE ; Number of LU's (capacity/9) + + +SPT$OFS equ 0 ; Sectors Per Track +BSH$OFS equ SPT$OFS+WORDSIZE ; Block Shift Factor +BLM$OFS equ BSH$OFS+BYTESIZE ; Data Allocation Block Mask +EXM$OFS equ BLM$OFS+BYTESIZE ; Extend Mask +DSM$OFS equ EXM$OFS+BYTESIZE ; Disk Size Max +DRM$OFS equ DSM$OFS+WORDSIZE ; Number of Directory Entries +AL0$OFS equ DRM$OFS+WORDSIZE ; Allocation bitmask for directories +AL1$OFS equ AL0$OFS+BYTESIZE ; Allocation bitmask for directories +CKS$OFS equ AL1$OFS+BYTESIZE ; Size of Directory Check Vector +OFF$OFS equ CKS$OFS+WORDSIZE ; Number of Reserved Tracks +DPB$LEN equ OFF$OFS+WORDSIZE ; Disk Parameter Block Length + +; BIOS Memory Locations +BIBOOT equ 0E600h +BIWBOOT equ 0E603h +BICONST equ 0E606h +BICONIN equ 0E609h +BICONOUT equ 0E60Ch +BILIST equ 0E60Fh +BIPUNCH equ 0E612h +BIREADER equ 0E615h +BIHOME equ 0E618h +BISELDSK equ 0E61Bh +BISETTRK equ 0E61Eh +BISETSEC equ 0E621h +BISETDMA equ 0E624h +BIREAD equ 0E627h +BIWRITE equ 0E62Ah +BILISTST equ 0E62Dh +BISECTRN equ 0E630h + +; These are rel zero drive number for talking to the BIOS +; BDOS typically uses rel one drive codes + +BIDRVA equ 0 +BIDRVB equ 1 +BIDRVC equ 2 +BIDRVD equ 3 +BIDRVE equ 4 +BIDRVF equ 5 +BIDRVG equ 6 +BIDRVH equ 7 + +; On entry: c=drive number +get$spt macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,SPT$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + +; On entry: c=drive number +get$drm macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,DRM$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + +; On entry, c=drive number +get$off macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,OFF$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + + + +; eof - cpmbios.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMNAME.ASM b/branches/wbw/Apps/crossdev/CPMNAME.ASM new file mode 100644 index 00000000..d4b2fd0c --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMNAME.ASM @@ -0,0 +1,164 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pINFOLIS_,2 + global pSYSCFG_,2 + global line_,2 + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,5 + SHLD line_ + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + PUSH H + LXI H,2 + PUSH H + LXI H,2013 + PUSH H + LXI H,16 + PUSH H + LXI H,1 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + XCHG + LXI H,16 + DAD SP + SPHL + LXI H,.1+36 + PUSH H + CALL printf_ + POP D + CALL pager_ + CALL pager_ + LXI H,-6596 + SHLD ireghl_ + CALL bioscall_ + LHLD ireghl_ + SHLD pINFOLIS_ + LXI H,.1+72 + PUSH H + CALL printf_ + POP D + LHLD pINFOLIS_ + INX H + INX H + MOV E,M + INX H + MOV D,M + XCHG + SHLD dregde_ + LXI H,9 + SHLD dregbc_ + CALL bdoscall_ + CALL pager_ + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + PUSH H + CALL cnamept1_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept2_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept3_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept4_ + POP D + RET +.2 EQU -7 +.1: + DB 67,80,77,78,65,77,69,46,67,79,77,32,37,100,47 + DB 37,100,47,37,100,32,118,37,100,46,37,100,46,37,100 + DB 32,40,37,100,41,0,32,100,119,103,32,45,32,68,105 + DB 115,112,108,97,121,32,83,121,115,116,101,109,32,67,111 + DB 110,102,105,103,117,114,97,116,105,111,110,0,112,73,78 + DB 70,79,76,73,83,84,45,62,98,97,110,112,116,114,32 + DB 61,61,62,32,0 + PUBLIC pager_ +pager_: lxi d,.4 + call csave + LHLD line_ + INX H + SHLD line_ + LXI H,.3+0 + PUSH H + CALL printf_ + POP D + LXI H,24 + XCHG + LHLD line_ + CALL .eq + JZ .5 + LXI H,.3+2 + PUSH H + CALL printf_ + POP D + LXI H,1 + SHLD dregbc_ + CALL bdoscall_ + LXI H,1 + SHLD line_ +.5: + RET +.4 EQU 0 +.3: + DB 10,0,32,32,32,32,32,112,114,101,115,115,32,97,110 + DB 121,32,107,101,121,32,116,111,32,99,111,110,116,105,110 + DB 117,101,0 + extrn printf_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn cnamept4_ + extrn cnamept3_ + extrn cnamept2_ + extrn cnamept1_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn bdoscall_ + extrn dregde_ + extrn dregbc_ + extrn bioscall_ + extrn ireghl_ + extrn .eq + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMNAME.BAT b/branches/wbw/Apps/crossdev/CPMNAME.BAT new file mode 100644 index 00000000..33a14847 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMNAME.BAT @@ -0,0 +1,57 @@ +rem cpmname.sub 9/5/2012 dwg - build cpmname from sources + +if not exist cpmname.asm erase cpmname.cpm +if not exist cpmname.asm erase cpmname.o +if not exist cpmname.asm z80mu cc cpmname +if not exist cpmname.o erase cpmname.cpm +if not exist cpmname.o z80mu as cpmname + +if not exist cnamept1.asm erase cpmname.cpm +if not exist cnamept1.asm erase cnamept1.o +if not exist cnamept1.asm z80mu cc cnamept1 +if not exist cnamept1.o erase cpmname.cpm +if not exist cnamept1.o z80mu as cnamept1 + +if not exist cnamept2.asm erase cpmname.cpm +if not exist cnamept2.asm erase cnamept2.o +if not exist cnamept2.asm z80mu cc cnamept2 +if not exist cnamept2.o erase cpmname.cpm +if not exist cnamept2.o z80mu as cnamept2 + +if not exist cnamept3.asm erase cpmname.cpm +if not exist cnamept3.asm erase cnamept3.o +if not exist cnamept3.asm z80mu cc cnamept3 +if not exist cnamept3.o erase cpmname.cpm +if not exist cnamept3.o z80mu as cnamept3 + +if not exist cnamept4.asm erase cpmname.cpm +if not exist cnamept4.asm erase cnamept4.o +if not exist cnamept4.asm z80mu cc cnamept4 +if not exist cnamept4.o erase cpmname.cpm +if not exist cnamept4.o z80mu as cnamept4 + +if not exist bdoscall.o erase cpmname.cpm +if not exist bdoscall.o z80mu as bdoscall + +if not exist bioscall.o erase cpmname.cpm +if not exist bioscall.o z80mu as bioscall + +if not exist cmemory.asm erase cpmname.cpm +if not exist cmemory.asm erase cmemory.o +if not exist cmemory.asm z80mu cc cmemory +if not exist cmemory.o erase cpmname.cpm +if not exist cmemory.o z80mu as cmemory + +if not exist ctermcap.asm erase cpmname.cpm +if not exist ctermcap.asm erase ctermcap.o +if not exist ctermcap.asm z80mu cc ctermcap +if not exist ctermcap.o erase cpmname.cpm +if not exist ctermcap.o z80mu as ctermcap + +if not exist diagnose.o erase cpmname.cpm +if not exist diagnose.o z80mu as diagnose + +if not exist cpmname.cpm z80mu ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib +if not exist cpmanme.cpm rename cpmname.com cpmname.cpm + +dir cpmname.cpm diff --git a/branches/wbw/Apps/crossdev/CPMNAME.C b/branches/wbw/Apps/crossdev/CPMNAME.C index 72b9d023..4853815f 100644 --- a/branches/wbw/Apps/crossdev/CPMNAME.C +++ b/branches/wbw/Apps/crossdev/CPMNAME.C @@ -13,6 +13,10 @@ #include "diagnose.h" #include "std.h" +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ extern cnamept1(); @@ -20,7 +24,9 @@ extern cnamept2(); extern cnamept3(); extern cnamept4(); -struct SYSCFG * syscfg; + + +struct SYSCFG * pSYSCFG; int line; int main(argc,argv) @@ -36,8 +42,19 @@ int main(argc,argv) char * pC; line = 5; + + + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); - printf("CPMNAME.COM %d/%d/%d v%d.%d.%d.%d", + printf("CPMNAME.COM %d/%d/%d v%d.%d.%d (%d)", A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); printf(" dwg - Display System Configuration"); pager(); @@ -54,16 +71,18 @@ int main(argc,argv) bdoscall(); pager(); - syscfg = 0x8000; hregbc = 0xf000; - hregde = syscfg; + hregde = HIGHSEG; diagnose(); - cnamept1(syscfg); - cnamept2(syscfg); - cnamept3(syscfg); - cnamept4(syscfg); + pSYSCFG = HIGHSEG; + + + cnamept1(pSYSCFG); + cnamept2(pSYSCFG); + cnamept3(pSYSCFG); + cnamept4(pSYSCFG); } @@ -83,4 +102,4 @@ pager() /* eof - ccpmname.c */ /********************/ - \ No newline at end of file +  \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CPMNAME.CPM b/branches/wbw/Apps/crossdev/CPMNAME.CPM new file mode 100644 index 00000000..665804f6 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CPMNAME.CPM differ diff --git a/branches/wbw/Apps/crossdev/CPMNAME.O b/branches/wbw/Apps/crossdev/CPMNAME.O new file mode 100644 index 00000000..07068550 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CPMNAME.O differ diff --git a/branches/wbw/Apps/crossdev/CPMNAME.SUB b/branches/wbw/Apps/crossdev/CPMNAME.SUB new file mode 100644 index 00000000..adba240b --- /dev/null +++ b/branches/wbw/Apps/crossdev/CPMNAME.SUB @@ -0,0 +1,20 @@ +e:rem cpmname.sub 9/5/2012 dwg - build cpmname from sources +cc cpmname +as cpmname +cc cnamept1 +as cnamept1 +cc cnamept2 +as cnamept2 +cc cnamept3 +as cnamept3 +cc cnamept4 +as cnamept4 +as bdoscall +as bioscall +cc cmemory +as cmemory +cc ctermcap +as ctermcap +as diagnose +ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CTERMCAP.ASM b/branches/wbw/Apps/crossdev/CTERMCAP.ASM new file mode 100644 index 00000000..50ae771d --- /dev/null +++ b/branches/wbw/Apps/crossdev/CTERMCAP.ASM @@ -0,0 +1,334 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global termtype_,1 + DSEG + public wy50row_ +wy50row_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + CSEG + DSEG + public wy50col_ +wy50col_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + DB 56 + DB 57 + DB 58 + DB 59 + DB 60 + DB 61 + DB 62 + DB 63 + DB 64 + DB 65 + DB 66 + DB 67 + DB 68 + DB 69 + DB 70 + DB 71 + DB 72 + DB 73 + DB 74 + DB 75 + DB 76 + DB 77 + DB 78 + DB 79 + DB 80 + DB 81 + DB 82 + DB 83 + DB 84 + DB 85 + DB 86 + DB 87 + DB 88 + DB 89 + DB 90 + DB 91 + DB 92 + DB 93 + DB 94 + DB 95 + DB 96 + DB 97 + DB 98 + DB 99 + DB 100 + DB 101 + DB 102 + DB 103 + DB 104 + DB 105 + DB 106 + DB 107 + DB 108 + DB 109 + DB 110 + DB 111 + CSEG + PUBLIC crtinit_ +crtinit_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + XCHG + MOV A,L + STA termtype_ + RET +.2 EQU 0 + PUBLIC crtclr_ +crtclr_: lxi d,.3 + call csave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .4 +.6: + LXI H,0 + XCHG + LXI H,2-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,2-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.8: + LXI H,2-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + CALL .lt + JZ .9 + LXI H,10 + PUSH H + LXI H,13 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .7 +.9: + JMP .5 +.10: + LXI H,27 + PUSH H + LXI H,.1+5 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.11: + LXI H,27 + PUSH H + LXI H,.1+11 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.12: + LXI H,27 + PUSH H + LXI H,27 + PUSH H + LXI H,.1+15 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .5 +.4: + CALL .swt + DW 4 + DW 0,.6 + DW 1,.10 + DW 2,.11 + DW 3,.12 + DW .5 +.5: + RET +.3 EQU -2 +.1: + DB 37,99,37,99,0,37,99,91,50,74,0,37,99,43,0 + DB 37,99,74,37,99,72,0 + PUBLIC crtlc_ +crtlc_: lxi d,.14 + call csave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .15 +.17: + JMP .16 +.18: + LXI H,102 + PUSH H + LXI H,12-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,12-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,27 + PUSH H + LXI H,.13+0 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + JMP .16 +.19: + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50col_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50row_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,27 + PUSH H + LXI H,.13+11 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.20: + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,27 + PUSH H + LXI H,.13+19 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.15: + CALL .swt + DW 4 + DW 0,.17 + DW 1,.18 + DW 2,.19 + DW 3,.20 + DW .16 +.16: + RET +.14 EQU -2 +.13: + DB 37,99,91,37,100,59,37,100,37,99,0,37,99,61,37 + DB 99,37,99,0,37,99,89,37,99,37,99,0 + extrn printf_ + extrn .lt + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CTERMCAP.C b/branches/wbw/Apps/crossdev/CTERMCAP.C index ca1ffaf6..04baf9c4 100644 --- a/branches/wbw/Apps/crossdev/CTERMCAP.C +++ b/branches/wbw/Apps/crossdev/CTERMCAP.C @@ -8,23 +8,38 @@ #include "syscfg.h" #include "diagnose.h" -int tt; +char termtype; -crtinit() + + +char wy50row[24] = { ' ', '!', '"', '#', '$', '%', '&', 39, + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7' }; + +char wy50col[80] = { ' ', '!', '"', '#', '$', '%', '&', 39, + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + 96, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o' }; + + + +crtinit(tt) + char tt; { - struct SYSCFG * pSYSCFG; - hregbc = 0x0f000; - hregde = 0x0C000; - diagnose(); - pSYSCFG = 0x0C000; - tt = pSYSCFG->cnfgdata.termtype; + termtype = tt; } crtclr() { int i; - switch(tt) { + switch(termtype) { case TERM_TTY: for(i=0;i<43;i++) { printf("%c%c",CR,LF); @@ -48,14 +63,14 @@ int col; { int i; - switch(tt) { + switch(termtype) { case TERM_TTY: break; case TERM_ANSI: printf("%c[%d;%d%c",ESC,line,col,0x66); break; case TERM_WYSE: - printf("%c+",ESC); + printf("%c=%c%c",ESC,wy50row[line-1],wy50col[col-1]); break; case TERM_VT52: printf("%cY%c%c",ESC,' '+line,' '+col); @@ -63,15 +78,8 @@ int col; }; } - - - /* -SINGLEQUOTE equ 0 -RIGHTQUOTE equ 0 -LEFTQUOTE equ 0 - wy50row db ' !"#$%&' db 39 db '()*+,-./01234567' @@ -82,9 +90,6 @@ wy50col db ' !"#$%&' db 96 db 'abcdefghijklmno' -templine db 0 -tempcol db 0 - */ diff --git a/branches/wbw/Apps/crossdev/CTERMCAP.H b/branches/wbw/Apps/crossdev/CTERMCAP.H index 8cb4ad4e..ed706792 100644 --- a/branches/wbw/Apps/crossdev/CTERMCAP.H +++ b/branches/wbw/Apps/crossdev/CTERMCAP.H @@ -1,6 +1,6 @@ /* ctermcap.h 3/11/2012 dwg - declarations for termal capability */ -extern crtinit(); -extern crtclr(); -extern crtlc(); - \ No newline at end of file +extern crtinit(); /* void crtinit(char termtype); */ +extern crtclr(); /* void crtclr(void); */ +extern crtlc(); /* void crtlc(char line,char column); */ + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/CTERMCAP.O b/branches/wbw/Apps/crossdev/CTERMCAP.O new file mode 100644 index 00000000..f6da9622 Binary files /dev/null and b/branches/wbw/Apps/crossdev/CTERMCAP.O differ diff --git a/branches/wbw/Apps/crossdev/CVT2H.C b/branches/wbw/Apps/crossdev/CVT2H.C new file mode 100644 index 00000000..4db57680 --- /dev/null +++ b/branches/wbw/Apps/crossdev/CVT2H.C @@ -0,0 +1,42 @@ +/* cvt2h.h 7/11/2012 dwg - Copyright (C) 2012 Douglas Goodall */ + +#include "stdio.h" +#include "visible.h" + +cvt2h(buffer,length,name) + unsigned char * buffer; + int length; + char * name; +{ + FILE * fd; + int i,j,k,l; + char szTemp[32]; + fd = fopen(name,"w"); + fprintf(fd, + "/* %s produced automatically by cvt2h.h */\n",name); + strcpy(szTemp,name); + szTemp[8] = 0; + fprintf(fd, + "unsigned char %s[%d] = {\n\t", + szTemp,length); + for(i=0;i> 8; + device = devunit & 0xf0; + unit = devunit & 0x0f; + if(DEV_FD == device) { + gFDNums[gNumFD] = drive; + gbFD[gNumFD++] = iregbc & 0xff; + } + drive++; + } +} + + +int main(argc,argv) + int argc; + char *argv[] ; +{ + char drive; + int fd0,fd1; + int i; + int spt; + int track; + int tracks; + int bValid; + + sensefd(); + + if(2 != gNumFD) { + printf("Sorry, this version of diskcopy only supports dual drives"); + exit(FAILURE); + } + printf("The copy will be from drive %c: to drive %c:\n", + gFDNums[0]+'A',gFDNums[1]+'A'); + + printf("The media in FD0 is "); + fd0 = diomed(DEV_FD); + switch(fd0) { + case MID_NONE: + printf("Drive is empty"); + break; + case MID_MDROM: + printf("a memory ROM drive"); + break; + case MID_MDRAM: + printf("a memory RAM drive"); + break; + case MID_HD: + printf("an HD drive"); + break; + case MID_FD720: + printf("a 720KB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD144: + printf("a 1.44MB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD360: + printf("a 360KB floppy disk"); + tracks = 40 * 2; + break; + case MID_FD120: + printf("a 120KB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD111: + printf("a 111KB floppy disk"); + tracks = 74 * 2; + break; + default: + printf("an unknown media type"); + break; + } + printf("\n"); + + + + printf("The media in FD1 is "); + fd1 = diomed(DEV_FD+1); + switch(fd1) { + case MID_NONE: + printf("Drive is empty"); + break; + case MID_MDROM: + printf("a memory ROM drive"); + break; + case MID_MDRAM: + printf("a memory RAM drive"); + break; + case MID_HD: + printf("an HD drive"); + break; + case MID_FD720: + printf("a 720KB floppy disk"); + break; + case MID_FD144: + printf("a 1.44MB floppy disk"); + break; + case MID_FD360: + printf("a 360KB floppy disk"); + break; + case MID_FD120: + printf("a 120KB floppy disk"); + break; + case MID_FD111: + printf("a 111KB floppy disk"); + break; + default: + printf("an unknown media type"); + break; + } + printf("\n"); + + if(fd0 != fd1) { + printf("Sorry, media types don't match, as required for diskcopy"); + exit(1); + } + + for(track=0;trackdpb; + spt = pDPB->spt; + ireghl = pSETTRK; + iregbc = track; + bioscall(); + printf("%3d ",track); + rdtrack(0,spt,buffer); + printf("%c",0x0d); + + bValid = FALSE; + for(i=0;idpb; + spt = pDPB->spt; + ireghl = pSETTRK; + iregbc = track; /* Track 0 */ + bioscall(); + printf("%3d ",track); + wrtrack(0,spt,buffer); + printf("%c",0x0d); + + } + + } +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DOIT.C b/branches/wbw/Apps/crossdev/DOIT.C new file mode 100644 index 00000000..80af4737 --- /dev/null +++ b/branches/wbw/Apps/crossdev/DOIT.C @@ -0,0 +1,12 @@ +#include "stdio.h" + +main() +{ + FILE * fd; + fd = fopen("$$$.SUB","w"); + fprintf(fd,"%ca:getcfg\n",9); + fprintf(fd,"%ca:dump syscfg.bin\n",18); + fprintf(fd,"%ctype a:sect0000.h\n",17); + fclose(fd); +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DPHDPB.H b/branches/wbw/Apps/crossdev/DPHDPB.H index 188427a9..01e69831 100644 --- a/branches/wbw/Apps/crossdev/DPHDPB.H +++ b/branches/wbw/Apps/crossdev/DPHDPB.H @@ -1,4 +1,19 @@ -/* dphdpb.h 6/10/2012 dwg - CP/M Disk Parameters */ + +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + void * dpb; + void * csv; + void * alv; + /* extension */ + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +}; struct DPB { unsigned int spt; @@ -12,21 +27,4 @@ struct DPB { unsigned int cks; unsigned int off; }; - -struct DPH { - unsigned int xlt; - unsigned int rv1; - unsigned int rv2; - unsigned int rv3; - unsigned int dbf; - struct DPB * dpb; - void * csv; - void * alv; - /* extension */ - char sigl; - char sigu; - int current; - int number; -}; - - \ No newline at end of file + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DPHMAP.H b/branches/wbw/Apps/crossdev/DPHMAP.H index 89c9a90c..1fe765b4 100644 --- a/branches/wbw/Apps/crossdev/DPHMAP.H +++ b/branches/wbw/Apps/crossdev/DPHMAP.H @@ -1,3 +1,4 @@ +/* dphmap.h 9/4/2012 dwg - expand to include I through L */ /* dphmap.h 5/29/2012 dwg - declaration of DPH MAP structure */ struct DPHMAP { @@ -9,6 +10,11 @@ struct DPHMAP { struct DPH * drivef; struct DPH * driveg; struct DPH * driveh; + + struct DPH * drivei; + struct DPH * drivej; + struct DPH * drivek; + struct DPH * drivel; } * pDPHMAP; struct DPHMAP * pDPHVEC[MAXDRIVE]; @@ -16,4 +22,4 @@ struct DPHMAP * pDPHVEC[MAXDRIVE]; /******************/ /* eof - dphmap.h */ -/******************/ \ No newline at end of file +/******************/ \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DUMP.ASM b/branches/wbw/Apps/crossdev/DUMP.ASM new file mode 100644 index 00000000..42fab378 --- /dev/null +++ b/branches/wbw/Apps/crossdev/DUMP.ASM @@ -0,0 +1,1494 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + DSEG + public visible_ +visible_: + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + CSEG + PUBLIC cvt2h_ +cvt2h_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,14-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+2 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.2 + DAD SP + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-30-.2 + DAD SP + MOV M,E + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.2 + DAD SP + PUSH H + LXI H,.1+46 + PUSH H + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,0-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.4: + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .5 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+73 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + CALL .an + PUSH H + LXI H,7 + POP D + CALL .eq + JZ .6 + LXI H,.1+81 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-8 + CALL .an + XCHG + LXI H,-2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + DAD D + XCHG + LXI H,-4-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+86 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,-6-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.8: + LXI H,-6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-4-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .9 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .10 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+94 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + JMP .11 +.10: + LXI H,.1+98 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.11: + JMP .7 +.9: + LXI H,.1+101 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,.1+104 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.6: + JMP .3 +.5: + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+107 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + RET +.2 EQU -42 +.1: + DB 119,0,47,42,32,37,115,32,112,114,111,100,117,99,101 + DB 100,32,97,117,116,111,109,97,116,105,99,97,108,108,121 + DB 32,98,121,32,99,118,116,50,104,46,104,32,42,47,10 + DB 0,117,110,115,105,103,110,101,100,32,99,104,97,114,32 + DB 37,115,91,37,100,93,32,61,32,123,10,9,0,48,120 + DB 37,48,50,120,44,0,32,47,42,32,0,32,37,48,52 + DB 120,58,32,0,37,99,32,0,46,32,0,42,47,0,10 + DB 9,0,125,59,10,47,42,32,101,111,102,32,45,32,37 + DB 115,32,42,47,10,0 + PUBLIC cvt2inc_ +cvt2inc_: lxi d,.13 + call csave + LXI H,.12+0 + PUSH H + LXI H,14-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,12-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.12+2 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,12-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.13 + DAD SP + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-30-.13 + DAD SP + MOV M,E + LXI H,-38-.13 + DAD SP + PUSH H + LXI H,.12+45 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,.12+50 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.13 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .15 +.14: + LXI H,0-.13 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.15: + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .16 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.12+58 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + CALL .an + PUSH H + LXI H,7 + POP D + CALL .eq + JZ .17 + LXI H,.12+64 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-8 + CALL .an + XCHG + LXI H,-2-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + DAD D + XCHG + LXI H,-4-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.12+69 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .19 +.18: + LXI H,-6-.13 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.19: + LXI H,-6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-4-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .20 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .21 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.12+77 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + JMP .22 +.21: + LXI H,.12+81 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.22: + JMP .18 +.20: + LXI H,10-.13 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DCX H + PUSH H + LXI H,2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .ne + JZ .23 + LXI H,.12+84 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.23: + JMP .24 +.17: + LXI H,.12+93 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.24: + JMP .14 +.16: + LXI H,.12+95 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + RET +.13 EQU -42 +.12: + DB 119,0,59,32,37,115,32,112,114,111,100,117,99,101,100 + DB 32,97,117,116,111,109,97,116,105,99,97,108,108,121,32 + DB 98,121,32,99,118,116,50,105,110,99,46,104,32,10,0 + DB 37,115,58,10,0,32,32,46,68,66,32,32,0,37,48 + DB 51,120,104,0,32,32,59,32,0,32,37,48,52,120,58 + DB 32,0,37,99,32,0,46,32,0,10,32,32,46,68,66 + DB 32,32,0,44,0,10,0 + PUBLIC main_ +main_: lxi d,.26 + call csave + LXI H,.25+0 + PUSH H + CALL banner_ + POP D + LXI H,1 + XCHG + LXI H,8-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .eq + JZ .27 + LXI H,.25+9 + PUSH H + CALL printf_ + POP D + LXI H,1 + PUSH H + CALL exit_ + POP D +.27: + LXI H,.25+40 + PUSH H + LXI H,12-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,-167-.26 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-167-.26 + DAD SP + mov a,m + inx h + ora m + JNZ .28 + LXI H,.25+42 + PUSH H + CALL printf_ + POP D + LXI H,1 + PUSH H + CALL exit_ + POP D +.28: + LXI H,10-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+72 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-2-.26 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,1 + PUSH H + LXI H,128 + PUSH H + LXI H,-127-.26 + DAD SP + PUSH H + CALL fread_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,-4-.26 + DAD SP + MOV M,E + INX H + MOV M,D +.29: + LXI H,0 + XCHG + LXI H,-4-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .30 + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+85 + PUSH H + LXI H,-161-.26 + DAD SP + PUSH H + CALL sprintf_ + POP D + POP D + POP D + LXI H,-165-.26 + DAD SP + PUSH H + LXI H,128 + PUSH H + LXI H,-129-.26 + DAD SP + PUSH H + CALL cvt2h_ + POP D + POP D + POP D + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+96 + PUSH H + LXI H,-161-.26 + DAD SP + PUSH H + CALL sprintf_ + POP D + POP D + POP D + LXI H,-165-.26 + DAD SP + PUSH H + LXI H,128 + PUSH H + LXI H,-129-.26 + DAD SP + PUSH H + CALL cvt2inc_ + POP D + POP D + POP D + LXI H,0 + XCHG + LXI H,2-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .32 +.31: + LXI H,2-.26 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.32: + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + CALL .lt + JZ .33 + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+109 + PUSH H + CALL printf_ + POP D + POP D + LXI H,16 + XCHG + LXI H,-2-.26 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + POP H + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .35 +.34: + LXI H,0-.26 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.35: + LXI H,0-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .36 + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + XCHG + LXI H,0-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + LXI H,-133-.26 + DAD SP + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.25+116 + PUSH H + CALL printf_ + POP D + POP D + JMP .34 +.36: + LXI H,.25+122 + PUSH H + CALL printf_ + POP D + LXI H,0 + XCHG + LXI H,0-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .38 +.37: + LXI H,0-.26 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.38: + LXI H,0-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .39 + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + XCHG + LXI H,0-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + LXI H,-133-.26 + DAD SP + DAD D + MOV E,M + LXI H,-5-.26 + DAD SP + MOV M,E + LXI H,-5-.26 + DAD SP + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .40 + LXI H,-5-.26 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,.25+125 + PUSH H + CALL printf_ + POP D + POP D + JMP .41 +.40: + LXI H,.25+128 + PUSH H + CALL printf_ + POP D +.41: + JMP .37 +.39: + LXI H,.25+130 + PUSH H + CALL printf_ + POP D + JMP .31 +.33: + LXI H,.25+132 + PUSH H + CALL printf_ + POP D + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,1 + PUSH H + LXI H,128 + PUSH H + LXI H,-127-.26 + DAD SP + PUSH H + CALL fread_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,-4-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .29 +.30: + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + LXI H,0 + PUSH H + CALL exit_ + POP D + RET +.26 EQU -171 +.25: + DB 68,85,77,80,46,67,79,77,0,83,111,114,114,121,44 + DB 32,110,111,32,105,110,112,117,116,32,102,105,108,101,32 + DB 115,112,101,99,105,102,105,101,100,0,114,0,83,111,114 + DB 114,121,44,32,99,97,110,110,111,116,32,111,112,101,110 + DB 32,105,110,112,117,116,32,102,105,108,101,0,68,117,109 + DB 112,105,110,103,32,37,115,10,10,0,115,101,99,116,37 + DB 48,52,120,46,104,0,115,101,99,116,37,48,52,120,46 + DB 105,110,99,0,37,48,52,120,58,32,0,37,48,50,120 + DB 32,0,32,32,0,37,99,0,46,0,10,0,10,0 + extrn sprintf_ + extrn fread_ + extrn exit_ + extrn printf_ + extrn banner_ + extrn fclose_ + extrn strcpy_ + extrn fprintf_ + extrn fopen_ + extrn .an + extrn .eq + extrn .ne + extrn .lt + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DUMP.C b/branches/wbw/Apps/crossdev/DUMP.C new file mode 100644 index 00000000..77655006 --- /dev/null +++ b/branches/wbw/Apps/crossdev/DUMP.C @@ -0,0 +1,101 @@ +/* dump.c 7/11/2012 dwg - + + The purpose of this program is similar to the CP/M dump program + except that in addition to the normal hexadecimal bytes, a field + of ascii bytes to the right are displayed as well. + +*/ + +#include "stdio.h" + + +char visible[256] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 20 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 30 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 40 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 50 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 60 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 70 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ +}; + +#include "cvt2h.h" +#include "cvt2inc.h" + +main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + int offset; + int result; + unsigned char byte; + unsigned char sector[128]; + char name[32]; + + + FILE * fd; + + banner("DUMP.COM"); + +/* cvt2h(0x0100,12*1024,"dumpcomh.h"); */ + + + if(1 == argc) { + printf("Sorry, no input file specified"); + exit(1); + } + + fd = fopen(argv[1],"r"); + if(NULL == fd) { + printf("Sorry, cannot open input file"); + exit(1); + } + + printf("Dumping %s\n\n",argv[1]); + + offset = 0; + result = fread(sector,sizeof(sector),1,fd); + while(0 < result) { + + sprintf(name,"sect%04x.h",offset); + cvt2h(sector,sizeof(sector),name); + sprintf(name,"sect%04x.inc",offset); + cvt2inc(sector,sizeof(sector),name); + + for(i=0;i<8;i++) { + printf("%04x: ",offset); + + + offset += 16; + for(j=0;j<16;j++) { + printf("%02x ",sector[(i*8)+j]); + } + printf(" "); + for(j=0;j<16;j++) { + byte = sector[(i*8)+j]; + if(1 == visible[byte]) { + printf("%c",byte); + } else { + printf("."); + } + } + printf("\n"); + } + printf("\n"); + result = fread(sector,sizeof(sector),1,fd); + } + fclose(fd); + + exit(0); +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DUMPCOM.H b/branches/wbw/Apps/crossdev/DUMPCOM.H new file mode 100644 index 00000000..688a57ba --- /dev/null +++ b/branches/wbw/Apps/crossdev/DUMPCOM.H @@ -0,0 +1,1542 @@ +/* dumpcom.h produced automatically by cvt2h.h Do Not Edit */ + +unsigned char dumpcom.[12288] = { + 0xc3, 0xe4, 0x12, 0x11, 0xdc, 0xff, 0xcd, 0xbe, + 0x26, 0x21, 0x1b, 0x02, 0xe5, 0x21, 0x32, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x40, 0x0d, + 0xd1, 0xd1, 0xeb, 0x21, 0x26, 0x00, 0x39, 0x73, + 0x23, 0x72, 0x21, 0x30, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x1d, 0x02, 0xe5, 0x21, 0x2a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xe1, + 0x07, 0xd1, 0xd1, 0xd1, 0x21, 0x30, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x06, 0x00, 0x39, + 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x73, 0x21, + 0x2e, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x06, 0x00, 0x39, 0xe5, 0x21, 0x56, 0x02, 0xe5, + 0x21, 0x2c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0xcd, 0xe1, 0x07, 0xeb, 0x21, 0x08, 0x00, 0x39, + 0xf9, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, 0x00, + 0x39, 0x73, 0x23, 0x72, 0xc3, 0x96, 0x01, 0x21, + 0x24, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0x24, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x2e, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0xc6, 0x27, + 0xca, 0xfd, 0x01, 0x21, 0x2c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x24, 0x00, 0x39, 0x7e, 0x23, + 0x66, 0x6f, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, + 0x71, 0x02, 0xe5, 0x21, 0x2a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0xe1, 0x07, 0xd1, 0xd1, + 0xd1, 0x21, 0x24, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x21, 0x07, 0x00, 0xcd, 0x64, 0x27, 0xe5, 0x21, + 0x07, 0x00, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0xfa, + 0x01, 0x21, 0x7a, 0x02, 0xe5, 0x21, 0x28, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xe1, 0x07, + 0xd1, 0xd1, 0xc3, 0x87, 0x01, 0x21, 0x7d, 0x02, + 0xe5, 0x21, 0x28, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0xe1, 0x07, 0xd1, 0xd1, 0x21, 0x26, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x3a, + 0x10, 0xd1, 0xc9, 0x77, 0x00, 0x2f, 0x2a, 0x20, + 0x25, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x65, 0x64, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, + 0x79, 0x20, 0x62, 0x79, 0x20, 0x63, 0x76, 0x74, + 0x32, 0x68, 0x2e, 0x68, 0x20, 0x44, 0x6f, 0x20, + 0x4e, 0x6f, 0x74, 0x20, 0x45, 0x64, 0x69, 0x74, + 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x00, 0x75, 0x6e, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x63, + 0x68, 0x61, 0x72, 0x20, 0x25, 0x73, 0x5b, 0x25, + 0x64, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, + 0x00, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x2c, + 0x20, 0x00, 0x0a, 0x09, 0x00, 0x0a, 0x7d, 0x3b, + 0x0a, 0x00, 0x11, 0x55, 0xff, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x05, 0xe5, 0xcd, 0xd3, 0x06, 0xd1, + 0x21, 0x11, 0x05, 0xe5, 0x21, 0x00, 0x30, 0xe5, + 0x21, 0x00, 0x01, 0xe5, 0xcd, 0x03, 0x01, 0xd1, + 0xd1, 0xd1, 0x21, 0x01, 0x00, 0xeb, 0x21, 0xb3, + 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x8c, + 0x27, 0xca, 0xc4, 0x02, 0x21, 0x1b, 0x05, 0xe5, + 0xcd, 0xc3, 0x07, 0xd1, 0x21, 0x01, 0x00, 0xe5, + 0xcd, 0x22, 0x15, 0xd1, 0x21, 0x3a, 0x05, 0xe5, + 0x21, 0xb7, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x23, 0x23, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x40, + 0x0d, 0xd1, 0xd1, 0xeb, 0x21, 0x04, 0x00, 0x39, + 0x73, 0x23, 0x72, 0x21, 0x04, 0x00, 0x39, 0x7e, + 0x23, 0xb6, 0xc2, 0xfd, 0x02, 0x21, 0x3c, 0x05, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0x21, 0x01, 0x00, + 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0x21, 0xb5, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x5a, 0x05, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0x00, 0x00, 0xeb, + 0x21, 0xa9, 0x00, 0x39, 0x73, 0x23, 0x72, 0x21, + 0x04, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x01, 0x00, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, + 0x2c, 0x00, 0x39, 0xe5, 0xcd, 0x01, 0x0e, 0xeb, + 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, 0xa7, 0x00, + 0x39, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xeb, + 0x21, 0xa7, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0xcd, 0xc6, 0x27, 0xca, 0xf3, 0x04, 0x21, 0xa9, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x67, + 0x05, 0xe5, 0x21, 0x0a, 0x00, 0x39, 0xe5, 0xcd, + 0x22, 0x08, 0xd1, 0xd1, 0xd1, 0x21, 0x06, 0x00, + 0x39, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, 0x2a, + 0x00, 0x39, 0xe5, 0xcd, 0x03, 0x01, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xad, 0x00, + 0x39, 0x73, 0x23, 0x72, 0xc3, 0x9e, 0x03, 0x21, + 0xad, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0xad, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x08, 0x00, + 0xcd, 0xc6, 0x27, 0xca, 0xc3, 0x04, 0x21, 0xa9, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x72, + 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, + 0x10, 0x00, 0xeb, 0x21, 0xa9, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x19, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xab, + 0x00, 0x39, 0x73, 0x23, 0x72, 0xc3, 0xef, 0x03, + 0x21, 0xab, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, + 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, + 0xab, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x10, + 0x00, 0xcd, 0xc6, 0x27, 0xca, 0x2a, 0x04, 0x21, + 0xad, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, + 0x29, 0x29, 0xeb, 0x21, 0xab, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0x19, 0xeb, 0x21, 0x26, 0x00, + 0x39, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x79, + 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0xc3, + 0xe0, 0x03, 0x21, 0x7f, 0x05, 0xe5, 0xcd, 0xc3, + 0x07, 0xd1, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xab, + 0x00, 0x39, 0x73, 0x23, 0x72, 0xc3, 0x4f, 0x04, + 0x21, 0xab, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, + 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, + 0xab, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x10, + 0x00, 0xcd, 0xc6, 0x27, 0xca, 0xb8, 0x04, 0x21, + 0xad, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, + 0x29, 0x29, 0xeb, 0x21, 0xab, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0x19, 0xeb, 0x21, 0x26, 0x00, + 0x39, 0x19, 0x5e, 0x21, 0xa6, 0x00, 0x39, 0x73, + 0x21, 0xa6, 0x00, 0x39, 0x5e, 0x16, 0x00, 0x21, + 0x36, 0x28, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, + 0x01, 0x00, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0xad, + 0x04, 0x21, 0xa6, 0x00, 0x39, 0x5e, 0x16, 0x00, + 0xd5, 0x21, 0x82, 0x05, 0xe5, 0xcd, 0xc3, 0x07, + 0xd1, 0xd1, 0xc3, 0xb5, 0x04, 0x21, 0x85, 0x05, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xc3, 0x40, 0x04, + 0x21, 0x87, 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, + 0xc3, 0x8f, 0x03, 0x21, 0x89, 0x05, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0x21, 0x04, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x01, 0x00, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0x21, 0x2c, 0x00, 0x39, 0xe5, + 0xcd, 0x01, 0x0e, 0xeb, 0x21, 0x08, 0x00, 0x39, + 0xf9, 0x21, 0xa7, 0x00, 0x39, 0x73, 0x23, 0x72, + 0xc3, 0x44, 0x03, 0x21, 0x04, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x3a, 0x10, 0xd1, 0x21, + 0x00, 0x00, 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0xc9, + 0x44, 0x55, 0x4d, 0x50, 0x2e, 0x43, 0x4f, 0x4d, + 0x00, 0x64, 0x75, 0x6d, 0x70, 0x63, 0x6f, 0x6d, + 0x2e, 0x68, 0x00, 0x53, 0x6f, 0x72, 0x72, 0x79, + 0x2c, 0x20, 0x6e, 0x6f, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x00, 0x72, 0x00, 0x53, 0x6f, 0x72, 0x72, + 0x79, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x69, 0x6e, + 0x67, 0x20, 0x25, 0x73, 0x0a, 0x0a, 0x00, 0x73, + 0x65, 0x63, 0x74, 0x25, 0x30, 0x34, 0x78, 0x2e, + 0x68, 0x00, 0x25, 0x30, 0x34, 0x78, 0x3a, 0x20, + 0x00, 0x25, 0x30, 0x32, 0x78, 0x20, 0x00, 0x20, + 0x20, 0x00, 0x25, 0x63, 0x00, 0x2e, 0x00, 0x0a, + 0x00, 0x0a, 0x00, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x00, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x2e, 0x31, 0x32, 0x33, + 0x20, 0x6d, 0x6d, 0x2f, 0x64, 0x64, 0x2f, 0x79, + 0x79, 0x79, 0x79, 0x20, 0x20, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x78, 0x2e, 0x78, + 0x2e, 0x78, 0x2e, 0x78, 0x00, 0x53, 0x2f, 0x4e, + 0x20, 0x43, 0x50, 0x4d, 0x38, 0x30, 0x2d, 0x44, + 0x57, 0x47, 0x2d, 0x36, 0x35, 0x34, 0x33, 0x32, + 0x31, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x47, 0x50, 0x4c, 0x33, 0x00, 0x43, 0x6f, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, + 0x28, 0x43, 0x29, 0x20, 0x32, 0x30, 0x31, 0x31, + 0x2d, 0x31, 0x32, 0x20, 0x44, 0x6f, 0x75, 0x67, + 0x6c, 0x61, 0x73, 0x20, 0x57, 0x2e, 0x20, 0x47, + 0x6f, 0x6f, 0x64, 0x61, 0x6c, 0x6c, 0x00, 0x11, + 0x80, 0xff, 0xcd, 0xbe, 0x26, 0x21, 0x88, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x85, 0x06, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0xdc, + 0x07, 0xe5, 0x21, 0x07, 0x00, 0xe5, 0x21, 0x07, + 0x00, 0xe5, 0x21, 0x89, 0x06, 0xe5, 0xcd, 0xc3, + 0x07, 0xeb, 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, + 0x00, 0x00, 0xe5, 0x21, 0x00, 0x00, 0xe5, 0x21, + 0x00, 0x00, 0xe5, 0x21, 0x02, 0x00, 0xe5, 0x21, + 0x97, 0x06, 0xe5, 0xcd, 0xc3, 0x07, 0xeb, 0x21, + 0x0a, 0x00, 0x39, 0xf9, 0x21, 0xac, 0x06, 0xe5, + 0xcd, 0xc3, 0x07, 0xd1, 0xc9, 0x25, 0x73, 0x20, + 0x00, 0x25, 0x32, 0x64, 0x2f, 0x25, 0x32, 0x64, + 0x2f, 0x25, 0x34, 0x64, 0x20, 0x20, 0x00, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x25, + 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, + 0x25, 0x64, 0x20, 0x00, 0x43, 0x4f, 0x50, 0x52, + 0x20, 0x44, 0x6f, 0x75, 0x67, 0x6c, 0x61, 0x73, + 0x20, 0x47, 0x6f, 0x6f, 0x64, 0x61, 0x6c, 0x6c, + 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x64, 0x20, 0x77, 0x2f, 0x47, 0x50, 0x4c, 0x76, + 0x33, 0x0a, 0x00, 0x11, 0x80, 0xff, 0xcd, 0xbe, + 0x26, 0x2a, 0x36, 0x29, 0xe5, 0x21, 0x8a, 0x07, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0x88, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x06, + 0x00, 0x39, 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, + 0x21, 0x04, 0x00, 0x39, 0xe5, 0xcd, 0x15, 0x26, + 0xd1, 0xe5, 0x21, 0x0c, 0x00, 0xd1, 0xeb, 0xcd, + 0xc7, 0x27, 0xca, 0x1e, 0x07, 0x21, 0x8e, 0x07, + 0xe5, 0x21, 0x06, 0x00, 0x39, 0xe5, 0xcd, 0xd8, + 0x25, 0xd1, 0xd1, 0xc3, 0xf8, 0x06, 0x21, 0x04, + 0x00, 0x39, 0xe5, 0x21, 0x90, 0x07, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0xdc, 0x07, 0xe5, + 0x21, 0x07, 0x00, 0xe5, 0x21, 0x07, 0x00, 0xe5, + 0x21, 0x94, 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xeb, + 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, 0x00, 0x00, + 0xe5, 0x21, 0x00, 0x00, 0xe5, 0x21, 0x00, 0x00, + 0xe5, 0x21, 0x02, 0x00, 0xe5, 0x21, 0xa2, 0x07, + 0xe5, 0xcd, 0xc3, 0x07, 0xeb, 0x21, 0x0a, 0x00, + 0x39, 0xf9, 0x2a, 0x3a, 0x29, 0xe5, 0x21, 0xb7, + 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x2a, + 0x3c, 0x29, 0xe5, 0x21, 0xbb, 0x07, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x2a, 0x36, 0x29, 0xe5, + 0x21, 0xbf, 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, + 0xd1, 0xc9, 0x25, 0x73, 0x0a, 0x00, 0x20, 0x00, + 0x25, 0x73, 0x20, 0x00, 0x25, 0x32, 0x64, 0x2f, + 0x25, 0x32, 0x64, 0x2f, 0x25, 0x34, 0x64, 0x20, + 0x20, 0x00, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x20, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x25, + 0x73, 0x0a, 0x00, 0x25, 0x73, 0x0a, 0x00, 0x25, + 0x73, 0x0a, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x0a, 0x00, 0x39, 0xe5, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x59, + 0x0f, 0xe5, 0xcd, 0x79, 0x08, 0xd1, 0xd1, 0xd1, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x64, 0x2b, 0x21, 0x0c, 0x00, 0x39, 0xe5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0a, 0x08, 0xe5, 0xcd, 0x79, 0x08, 0xd1, 0xd1, + 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x2a, 0x64, 0x2b, 0xe5, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x71, 0x0f, 0xd1, + 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x22, 0x66, 0x2b, 0x21, 0x0c, 0x00, 0x39, 0xe5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x58, 0x08, 0xe5, 0xcd, 0x79, 0x08, 0xd1, + 0xd1, 0xd1, 0x44, 0x4d, 0x21, 0x00, 0x00, 0xe5, + 0x2a, 0x66, 0x2b, 0xd1, 0x73, 0x60, 0x69, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0x66, + 0x2b, 0x23, 0x22, 0x66, 0x2b, 0x2b, 0xd1, 0x73, + 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, 0x64, 0x27, + 0xc9, 0x11, 0x38, 0xff, 0xcd, 0xbe, 0x26, 0x21, + 0xd0, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x00, + 0x00, 0x22, 0x6c, 0x2b, 0x21, 0xd4, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x6a, 0x2b, 0x21, + 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x7c, + 0xb5, 0xca, 0x88, 0x0c, 0x2a, 0x68, 0x2b, 0x11, + 0x25, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x67, 0x0c, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x12, 0x00, 0x39, + 0x73, 0x21, 0x01, 0x00, 0x22, 0x6e, 0x2b, 0x21, + 0x20, 0x00, 0x22, 0x70, 0x2b, 0x21, 0x10, 0x27, + 0x22, 0x72, 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, + 0x22, 0x68, 0x2b, 0x11, 0x2d, 0x00, 0xcd, 0x8c, + 0x27, 0xca, 0x1a, 0x09, 0x21, 0x00, 0x00, 0x22, + 0x6e, 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, + 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, + 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, + 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, 0x30, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0x44, 0x09, 0x21, 0x30, + 0x00, 0x22, 0x70, 0x2b, 0x21, 0xd2, 0x00, 0x39, + 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, + 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, + 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, + 0x2a, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x7c, 0x09, + 0x2a, 0x6a, 0x2b, 0x23, 0x23, 0x22, 0x6a, 0x2b, + 0x2b, 0x2b, 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x74, + 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, + 0x2b, 0xc3, 0xc9, 0x09, 0x21, 0x00, 0x00, 0x22, + 0x74, 0x2b, 0xc3, 0x9d, 0x09, 0x21, 0xd2, 0x00, + 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, + 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, + 0x11, 0xdc, 0x2a, 0x19, 0x23, 0x5e, 0x16, 0x00, + 0x21, 0x04, 0x00, 0xcd, 0x64, 0x27, 0xca, 0xc9, + 0x09, 0x2a, 0x74, 0x2b, 0x11, 0x0a, 0x00, 0xcd, + 0x0d, 0x27, 0xeb, 0x2a, 0x68, 0x2b, 0x19, 0x11, + 0xd0, 0xff, 0x19, 0x22, 0x74, 0x2b, 0xc3, 0x85, + 0x09, 0x2a, 0x68, 0x2b, 0x11, 0x2e, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x6f, 0x0a, 0x21, 0xd2, 0x00, + 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, + 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x11, 0x2a, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0x22, 0x0a, 0x2a, 0x6a, + 0x2b, 0x23, 0x23, 0x22, 0x6a, 0x2b, 0x2b, 0x2b, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x72, 0x2b, 0x21, + 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0xc3, + 0x6f, 0x0a, 0x21, 0x00, 0x00, 0x22, 0x72, 0x2b, + 0xc3, 0x43, 0x0a, 0x21, 0xd2, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, + 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, 0xdc, + 0x2a, 0x19, 0x23, 0x5e, 0x16, 0x00, 0x21, 0x04, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0x6f, 0x0a, 0x2a, + 0x72, 0x2b, 0x11, 0x0a, 0x00, 0xcd, 0x0d, 0x27, + 0xeb, 0x2a, 0x68, 0x2b, 0x19, 0x11, 0xd0, 0xff, + 0x19, 0x22, 0x72, 0x2b, 0xc3, 0x2b, 0x0a, 0x21, + 0x02, 0x00, 0x22, 0x76, 0x2b, 0x2a, 0x68, 0x2b, + 0x11, 0x6c, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xa2, + 0x0a, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, + 0x2b, 0x21, 0x04, 0x00, 0x22, 0x76, 0x2b, 0xc3, + 0xc6, 0x0a, 0x2a, 0x68, 0x2b, 0x11, 0x68, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xc6, 0x0a, 0x21, 0xd2, + 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, + 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, + 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, + 0x2b, 0xc3, 0x56, 0x0b, 0x21, 0x08, 0x00, 0x22, + 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, 0x0a, 0x00, + 0x22, 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, 0x10, + 0x00, 0x22, 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, + 0xf6, 0xff, 0x22, 0x78, 0x2b, 0x2a, 0x76, 0x2b, + 0xe5, 0x21, 0x14, 0x00, 0x39, 0xe5, 0x2a, 0x78, + 0x2b, 0xe5, 0x2a, 0x6a, 0x2b, 0xe5, 0xcd, 0x8c, + 0x0c, 0xeb, 0x21, 0x08, 0x00, 0x39, 0xf9, 0xeb, + 0x22, 0x7a, 0x2b, 0x2a, 0x76, 0x2b, 0xeb, 0x2a, + 0x6a, 0x2b, 0x19, 0x22, 0x6a, 0x2b, 0xc3, 0x75, + 0x0b, 0x2a, 0x6a, 0x2b, 0x23, 0x23, 0x22, 0x6a, + 0x2b, 0x2b, 0x2b, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x7a, 0x2b, 0xe5, 0xcd, 0x15, 0x26, 0xd1, 0x22, + 0x76, 0x2b, 0xc3, 0x83, 0x0b, 0x2a, 0x6a, 0x2b, + 0x23, 0x23, 0x22, 0x6a, 0x2b, 0x2b, 0x2b, 0x5e, + 0x23, 0x56, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, + 0x2b, 0xe5, 0x21, 0x13, 0x00, 0x39, 0x22, 0x7a, + 0x2b, 0xd1, 0x73, 0xc3, 0x75, 0x0b, 0xcd, 0xf3, + 0x27, 0x06, 0x00, 0x63, 0x00, 0x35, 0x0b, 0x64, + 0x00, 0xe7, 0x0a, 0x6f, 0x00, 0xcc, 0x0a, 0x73, + 0x00, 0x19, 0x0b, 0x75, 0x00, 0xd5, 0x0a, 0x78, + 0x00, 0xde, 0x0a, 0x46, 0x0b, 0x21, 0x12, 0x00, + 0x39, 0xeb, 0x2a, 0x7a, 0x2b, 0xcd, 0xea, 0x27, + 0x22, 0x76, 0x2b, 0x2a, 0x76, 0x2b, 0xeb, 0x2a, + 0x72, 0x2b, 0xcd, 0xc7, 0x27, 0xca, 0x96, 0x0b, + 0x2a, 0x72, 0x2b, 0x22, 0x76, 0x2b, 0x2a, 0x6e, + 0x2b, 0x7c, 0xb5, 0xca, 0xd4, 0x0b, 0xc3, 0xa8, + 0x0b, 0x2a, 0x6c, 0x2b, 0x23, 0x22, 0x6c, 0x2b, + 0x2a, 0x74, 0x2b, 0x2b, 0x22, 0x74, 0x2b, 0x23, + 0xeb, 0x2a, 0x76, 0x2b, 0xcd, 0xc7, 0x27, 0xca, + 0xd4, 0x0b, 0x2a, 0x70, 0x2b, 0xe5, 0x60, 0x69, + 0xcd, 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0xd1, 0x0b, 0x21, 0xff, 0xff, + 0xc9, 0xc3, 0xa1, 0x0b, 0x21, 0x00, 0x00, 0x22, + 0x78, 0x2b, 0xc3, 0xe4, 0x0b, 0x2a, 0x78, 0x2b, + 0x23, 0x22, 0x78, 0x2b, 0x2a, 0x7a, 0x2b, 0x7e, + 0xb7, 0xca, 0x1b, 0x0c, 0x2a, 0x78, 0x2b, 0xeb, + 0x2a, 0x72, 0x2b, 0xcd, 0xc6, 0x27, 0xca, 0x1b, + 0x0c, 0x2a, 0x7a, 0x2b, 0x23, 0x22, 0x7a, 0x2b, + 0x2b, 0x5e, 0x16, 0x00, 0xd5, 0x60, 0x69, 0xcd, + 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, + 0x27, 0xca, 0x18, 0x0c, 0x21, 0xff, 0xff, 0xc9, + 0xc3, 0xdd, 0x0b, 0x2a, 0x78, 0x2b, 0xeb, 0x2a, + 0x6c, 0x2b, 0x19, 0x22, 0x6c, 0x2b, 0x2a, 0x6e, + 0x2b, 0x7c, 0xb5, 0xc2, 0x64, 0x0c, 0xc3, 0x38, + 0x0c, 0x2a, 0x6c, 0x2b, 0x23, 0x22, 0x6c, 0x2b, + 0x2a, 0x74, 0x2b, 0x2b, 0x22, 0x74, 0x2b, 0x23, + 0xeb, 0x2a, 0x76, 0x2b, 0xcd, 0xc7, 0x27, 0xca, + 0x64, 0x0c, 0x21, 0x20, 0x00, 0xe5, 0x60, 0x69, + 0xcd, 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0x61, 0x0c, 0x21, 0xff, 0xff, + 0xc9, 0xc3, 0x31, 0x0c, 0xc3, 0x85, 0x0c, 0x2a, + 0x68, 0x2b, 0xe5, 0x60, 0x69, 0xcd, 0x9c, 0x26, + 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, + 0x7e, 0x0c, 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x6c, + 0x2b, 0x23, 0x22, 0x6c, 0x2b, 0xc3, 0x97, 0x08, + 0x2a, 0x6c, 0x2b, 0xc9, 0xc5, 0x21, 0x00, 0x00, + 0x22, 0x42, 0x29, 0x22, 0x44, 0x29, 0x21, 0x0a, + 0x00, 0x39, 0x7e, 0x32, 0x40, 0x29, 0x47, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0xeb, 0x36, 0x00, 0x22, + 0x3e, 0x29, 0xeb, 0x2b, 0x4e, 0x2b, 0x56, 0x2b, + 0x5e, 0x21, 0x42, 0x29, 0x1a, 0x77, 0x13, 0x23, + 0x05, 0xc2, 0xb4, 0x0c, 0x79, 0xb7, 0xf2, 0xe4, + 0x0c, 0x2f, 0x3c, 0x4f, 0x2a, 0x40, 0x29, 0x11, + 0x41, 0x29, 0x19, 0x7e, 0xb7, 0xf5, 0xf2, 0xe5, + 0x0c, 0x3a, 0x40, 0x29, 0x47, 0x21, 0x42, 0x29, + 0x3e, 0x00, 0x9e, 0x77, 0x23, 0x05, 0xc2, 0xd8, + 0x0c, 0xc3, 0xe5, 0x0c, 0xf5, 0x21, 0x45, 0x29, + 0x16, 0x00, 0x3e, 0x04, 0xf5, 0x5e, 0xeb, 0x06, + 0x08, 0x29, 0x7c, 0x91, 0xda, 0xf9, 0x0c, 0x67, + 0x2c, 0x05, 0xc2, 0xf1, 0x0c, 0xeb, 0x73, 0x2b, + 0xf1, 0x3d, 0xc2, 0xec, 0x0c, 0x5a, 0x16, 0x00, + 0x21, 0x30, 0x0d, 0x19, 0x7e, 0x2a, 0x3e, 0x29, + 0x2b, 0x22, 0x3e, 0x29, 0x77, 0x21, 0x42, 0x29, + 0x06, 0x04, 0xaf, 0xbe, 0xc2, 0xe5, 0x0c, 0x23, + 0x05, 0xc2, 0x1b, 0x0d, 0x2a, 0x3e, 0x29, 0xf1, + 0xf2, 0x2e, 0x0d, 0x2b, 0x36, 0x2d, 0xc1, 0xc9, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0xcd, 0x2b, + 0x12, 0x44, 0x4d, 0x7c, 0xb5, 0xc2, 0x54, 0x0d, + 0x21, 0x00, 0x00, 0xc9, 0xc5, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x6c, 0x0d, + 0xd1, 0xd1, 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0xcd, 0x3a, 0x10, 0xd1, 0x21, 0x46, + 0x29, 0x44, 0x4d, 0xc3, 0x8e, 0x0d, 0x60, 0x69, + 0x11, 0x05, 0x00, 0x19, 0x44, 0x4d, 0x78, 0xb1, + 0xc2, 0x9d, 0x0d, 0x21, 0xfa, 0xff, 0x22, 0xc8, + 0x2e, 0x21, 0x00, 0x00, 0xc9, 0x21, 0x0a, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xc5, 0xcd, 0x84, + 0x25, 0xd1, 0xd1, 0xca, 0xb1, 0x0d, 0xc3, 0x86, + 0x0d, 0x21, 0x03, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0xeb, 0x15, 0xd1, 0xd1, 0x22, 0x7c, + 0x2b, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, + 0xd6, 0x0d, 0x21, 0x00, 0x00, 0xc9, 0x2a, 0x7c, + 0x2b, 0xe5, 0x21, 0x0e, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x07, 0x00, 0x19, 0xd1, 0x73, 0x21, + 0x01, 0x00, 0xe5, 0x21, 0x0e, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x00, + 0x00, 0x22, 0x7e, 0x2b, 0xc3, 0x1e, 0x0e, 0x2a, + 0x7e, 0x2b, 0x23, 0x22, 0x7e, 0x2b, 0x2a, 0x7e, + 0x2b, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, + 0x66, 0x6f, 0xcd, 0xc6, 0x27, 0xca, 0x7b, 0x0e, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x22, 0x82, 0x2b, 0xc3, 0x45, 0x0e, 0x2a, 0x82, + 0x2b, 0x2b, 0x22, 0x82, 0x2b, 0x2a, 0x82, 0x2b, + 0x7c, 0xb5, 0xca, 0x78, 0x0e, 0x21, 0x0e, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x7f, 0x0e, + 0xd1, 0x22, 0x80, 0x2b, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0x69, 0x0e, 0x2a, 0x7e, 0x2b, + 0xc9, 0x2a, 0x80, 0x2b, 0xe5, 0x60, 0x69, 0x23, + 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0x3e, 0x0e, + 0xc3, 0x17, 0x0e, 0x2a, 0x7e, 0x2b, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, + 0x56, 0xe1, 0xcd, 0x1a, 0x28, 0xca, 0x40, 0x0f, + 0x21, 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, + 0x18, 0x00, 0xcd, 0x64, 0x27, 0xca, 0xb4, 0x0e, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0xfb, 0xff, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0xcd, 0x64, 0x27, 0xeb, 0xe1, 0x73, 0x60, + 0x69, 0x11, 0x04, 0x00, 0x19, 0x7e, 0x23, 0xb6, + 0xc2, 0xd8, 0x0e, 0xc5, 0xcd, 0x74, 0x12, 0xd1, + 0x21, 0x09, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xd5, + 0xcd, 0x93, 0x19, 0xd1, 0xd1, 0xd1, 0x22, 0x84, + 0x2b, 0x11, 0x00, 0x00, 0xeb, 0xcd, 0xac, 0x27, + 0xca, 0x28, 0x0f, 0x2a, 0x84, 0x2b, 0x7c, 0xb5, + 0xc2, 0x11, 0x0f, 0x21, 0x08, 0x00, 0xc3, 0x14, + 0x0f, 0x21, 0x10, 0x00, 0xe5, 0x60, 0x69, 0x11, + 0x06, 0x00, 0x19, 0xd1, 0xe5, 0x6e, 0xcd, 0x74, + 0x27, 0xeb, 0xe1, 0x73, 0x21, 0xff, 0xff, 0xc9, + 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x60, + 0x69, 0x73, 0x23, 0x72, 0x2a, 0x84, 0x2b, 0x19, + 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x60, 0x69, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, + 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, + 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, 0x64, 0x27, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x7e, 0x29, 0xe5, 0x21, 0x0a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x71, 0x0f, 0xd1, 0xd1, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x60, 0x69, + 0x11, 0x0a, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xa7, + 0x0f, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x0d, 0x00, 0xe5, 0xcd, 0xb6, 0x0f, + 0xd1, 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, + 0xca, 0xa7, 0x0f, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xc5, + 0xcd, 0xb6, 0x0f, 0xd1, 0xd1, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, 0x00, 0x39, + 0x4e, 0x23, 0x46, 0x21, 0x02, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0xe1, 0xcd, 0x1a, 0x28, 0xca, 0xec, 0x0f, 0x21, + 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0xff, + 0x00, 0xcd, 0x64, 0x27, 0xe5, 0xc5, 0xcd, 0xb4, + 0x10, 0xd1, 0xd1, 0xc9, 0x21, 0x08, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, 0xe5, 0x7e, + 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, + 0x72, 0xeb, 0x2b, 0xd1, 0x73, 0x16, 0x00, 0x21, + 0xff, 0x00, 0xcd, 0x64, 0x27, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x73, 0x29, 0x44, + 0x4d, 0x60, 0x69, 0x11, 0xec, 0x29, 0xeb, 0xcd, + 0x28, 0x28, 0xca, 0x39, 0x10, 0x60, 0x69, 0x11, + 0x0b, 0x00, 0x19, 0x44, 0x4d, 0x11, 0xf5, 0xff, + 0x19, 0xe5, 0xcd, 0x3a, 0x10, 0xd1, 0xc3, 0x19, + 0x10, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x00, 0x00, 0x22, 0x86, 0x2b, 0x60, 0x69, 0x11, + 0x06, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0xa7, 0x10, + 0x21, 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, + 0x04, 0x00, 0xcd, 0x64, 0x27, 0xca, 0x75, 0x10, + 0x21, 0xff, 0xff, 0xe5, 0xc5, 0xcd, 0xb4, 0x10, + 0xd1, 0xd1, 0x22, 0x86, 0x2b, 0x21, 0x07, 0x00, + 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, 0x68, 0x17, + 0xd1, 0xeb, 0x2a, 0x86, 0x2b, 0xcd, 0x74, 0x27, + 0x22, 0x86, 0x2b, 0x21, 0x06, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0x21, 0x02, 0x00, 0xcd, 0x64, 0x27, + 0xca, 0xa7, 0x10, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x65, 0x23, 0xd1, 0x21, + 0x00, 0x00, 0xeb, 0x21, 0x06, 0x00, 0x09, 0x73, + 0x2a, 0x86, 0x2b, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, + 0x46, 0x21, 0x0e, 0x10, 0x22, 0x6e, 0x2a, 0x21, + 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, 0x10, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0xdb, 0x10, 0x21, + 0xff, 0xff, 0xc9, 0x21, 0x06, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0x21, 0x04, 0x00, 0xcd, 0x64, 0x27, + 0xca, 0x4c, 0x11, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0xe1, 0xcd, 0xea, 0x27, 0x22, 0x88, 0x2b, 0x2a, + 0x88, 0x2b, 0xe5, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x07, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0xd5, 0xcd, 0x88, 0x1c, 0xd1, 0xd1, + 0xd1, 0xeb, 0x2a, 0x88, 0x2b, 0xcd, 0x9b, 0x27, + 0xca, 0x4c, 0x11, 0x21, 0x10, 0x00, 0xe5, 0x60, + 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, 0x6e, + 0x26, 0x00, 0xcd, 0x74, 0x27, 0xeb, 0xe1, 0x73, + 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, 0x73, 0x23, + 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x21, 0xff, 0xff, 0xcd, 0x8c, + 0x27, 0xca, 0x85, 0x11, 0x21, 0xfb, 0xff, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0x26, 0x00, 0xcd, 0x64, 0x27, 0xeb, 0xe1, + 0x73, 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, 0x73, + 0x23, 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x21, 0x00, 0x00, 0xc9, 0x60, 0x69, 0x11, + 0x04, 0x00, 0x19, 0x7e, 0x23, 0xb6, 0xc2, 0x96, + 0x11, 0xc5, 0xcd, 0x74, 0x12, 0xd1, 0x21, 0x09, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0x21, 0x01, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xcf, 0x11, 0x21, 0x01, + 0x00, 0xe5, 0x21, 0x0c, 0x00, 0x39, 0xe5, 0x21, + 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, + 0x88, 0x1c, 0xd1, 0xd1, 0xd1, 0x11, 0x01, 0x00, + 0xcd, 0x9b, 0x27, 0xc2, 0x23, 0x11, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x21, + 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x60, 0x69, + 0x73, 0x23, 0x72, 0x21, 0x09, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xe1, 0x19, 0xeb, 0x21, 0x02, 0x00, + 0x09, 0x73, 0x23, 0x72, 0x21, 0x04, 0x00, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0x26, 0x00, 0xcd, 0x74, 0x27, 0xeb, 0xe1, + 0x73, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0x60, 0x69, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0xd1, 0x73, 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, + 0x64, 0x27, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x73, 0x29, 0x44, 0x4d, 0x60, 0x69, + 0x11, 0x06, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x5a, + 0x12, 0x60, 0x69, 0x11, 0x0b, 0x00, 0x19, 0x44, + 0x4d, 0x11, 0xec, 0x29, 0xeb, 0xcd, 0x1a, 0x28, + 0xca, 0x57, 0x12, 0x21, 0x00, 0x00, 0xc9, 0xc3, + 0x36, 0x12, 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, + 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, + 0x23, 0x72, 0x21, 0x04, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x60, 0x69, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, + 0x46, 0x21, 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, + 0xd5, 0xcd, 0x93, 0x20, 0xd1, 0xca, 0xaa, 0x12, + 0x21, 0x01, 0x00, 0xeb, 0x21, 0x09, 0x00, 0x09, + 0x73, 0x23, 0x72, 0x60, 0x69, 0x11, 0x08, 0x00, + 0x19, 0xeb, 0x21, 0x04, 0x00, 0x09, 0x73, 0x23, + 0x72, 0xc9, 0x21, 0x00, 0x04, 0xe5, 0xcd, 0xc0, + 0x21, 0xd1, 0x22, 0x8a, 0x2b, 0x7c, 0xb5, 0xca, + 0x90, 0x12, 0x21, 0x00, 0x04, 0xeb, 0x21, 0x09, + 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, + 0xe5, 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, + 0xe5, 0x6e, 0xcd, 0x74, 0x27, 0xeb, 0xe1, 0x73, + 0x2a, 0x8a, 0x2b, 0xeb, 0x21, 0x04, 0x00, 0x09, + 0x73, 0x23, 0x72, 0xc9, 0x21, 0x64, 0x2b, 0x01, + 0x6a, 0x03, 0x1e, 0x00, 0x73, 0x23, 0x0b, 0x79, + 0xb0, 0xc2, 0xec, 0x12, 0x2a, 0x06, 0x00, 0xf9, + 0x11, 0x00, 0xf8, 0x19, 0x22, 0xca, 0x2e, 0x2a, + 0xf4, 0x29, 0x22, 0xcc, 0x2e, 0xcd, 0x19, 0x13, + 0x0e, 0x11, 0x11, 0xf6, 0x29, 0xcd, 0x05, 0x00, + 0x01, 0x00, 0x00, 0xcd, 0x05, 0x00, 0xc3, 0x08, + 0x13, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x7f, 0x00, 0xe5, 0x21, 0xd4, 0x2b, 0xe5, 0x21, + 0x81, 0x00, 0xe5, 0xcd, 0x4a, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0xe5, 0x3a, 0x80, 0x00, + 0x6f, 0x26, 0x00, 0x11, 0x7f, 0x00, 0xcd, 0x64, + 0x27, 0x11, 0xd4, 0x2b, 0x19, 0xd1, 0x73, 0x21, + 0xfd, 0x14, 0x22, 0x98, 0x2b, 0x21, 0xd4, 0x2b, + 0x44, 0x4d, 0x21, 0x01, 0x00, 0x22, 0x54, 0x2c, + 0x2a, 0x54, 0x2c, 0x11, 0x1e, 0x00, 0xeb, 0xcd, + 0xc6, 0x27, 0xca, 0xe7, 0x14, 0x60, 0x69, 0x5e, + 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, 0x27, + 0xc2, 0x81, 0x13, 0x60, 0x69, 0x5e, 0x16, 0x00, + 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x89, + 0x13, 0x60, 0x69, 0x23, 0x44, 0x4d, 0xc3, 0x65, + 0x13, 0x60, 0x69, 0x7e, 0xb7, 0xca, 0xe7, 0x14, + 0x60, 0x69, 0x5e, 0x16, 0x00, 0x21, 0x3e, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xa7, 0x13, 0x21, 0x01, + 0x00, 0x22, 0x58, 0x2c, 0xc3, 0xbb, 0x13, 0x60, + 0x69, 0x5e, 0x16, 0x00, 0x21, 0x3c, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x98, 0x14, 0x21, 0x00, 0x00, + 0x22, 0x58, 0x2c, 0x60, 0x69, 0x23, 0x44, 0x4d, + 0x5e, 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, + 0x27, 0xc2, 0xda, 0x13, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, + 0xdd, 0x13, 0xc3, 0xbb, 0x13, 0x60, 0x69, 0x22, + 0x56, 0x2c, 0x60, 0x69, 0x23, 0x44, 0x4d, 0x7e, + 0xb7, 0xca, 0x1a, 0x14, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, 0x27, 0xc2, + 0x08, 0x14, 0x60, 0x69, 0x5e, 0x16, 0x00, 0x21, + 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x17, 0x14, + 0x21, 0x00, 0x00, 0xe5, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0x1a, 0x14, 0xc3, + 0xe2, 0x13, 0x2a, 0x58, 0x2c, 0xe5, 0xcd, 0x68, + 0x17, 0xd1, 0x2a, 0x58, 0x2c, 0x7c, 0xb5, 0xca, + 0x3d, 0x14, 0x21, 0xb6, 0x01, 0xe5, 0x2a, 0x56, + 0x2c, 0xe5, 0xcd, 0xca, 0x15, 0xd1, 0xd1, 0x22, + 0x58, 0x2c, 0xc3, 0x4d, 0x14, 0x21, 0x00, 0x00, + 0xe5, 0x2a, 0x56, 0x2c, 0xe5, 0xcd, 0xeb, 0x15, + 0xd1, 0xd1, 0x22, 0x58, 0x2c, 0x2a, 0x58, 0x2c, + 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, 0x95, + 0x14, 0x21, 0xfe, 0x14, 0xe5, 0x21, 0x80, 0x00, + 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, 0x2a, 0x56, + 0x2c, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0xcd, 0xd8, + 0x25, 0xd1, 0xd1, 0x21, 0x20, 0x15, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0xcd, 0xd8, 0x25, 0xd1, 0xd1, + 0x21, 0x80, 0x00, 0xe5, 0x21, 0x09, 0x00, 0xe5, + 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x21, 0x0a, 0x00, + 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0xc3, 0xe4, 0x14, + 0x60, 0x69, 0xe5, 0x2a, 0x54, 0x2c, 0x23, 0x22, + 0x54, 0x2c, 0x2b, 0x29, 0x11, 0x98, 0x2b, 0x19, + 0xd1, 0x73, 0x23, 0x72, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x7e, 0xb7, 0xca, 0xe4, 0x14, 0x60, 0x69, + 0x5e, 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, + 0x27, 0xc2, 0xd2, 0x14, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, + 0xe1, 0x14, 0x21, 0x00, 0x00, 0xe5, 0x60, 0x69, + 0x23, 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0xe4, + 0x14, 0xc3, 0xac, 0x14, 0xc3, 0x58, 0x13, 0x21, + 0x98, 0x2b, 0xe5, 0x2a, 0x54, 0x2c, 0xe5, 0xcd, + 0x82, 0x02, 0xd1, 0xd1, 0x21, 0x00, 0x00, 0xe5, + 0xcd, 0x22, 0x15, 0xd1, 0xc9, 0x00, 0x43, 0x61, + 0x6e, 0x27, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x00, + 0x24, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x2a, 0x6e, 0x2a, 0xcd, 0x9c, 0x26, 0x21, 0x00, + 0x00, 0x44, 0x4d, 0x60, 0x69, 0x11, 0x0b, 0x00, + 0xeb, 0xcd, 0xc6, 0x27, 0xca, 0x4d, 0x15, 0x60, + 0x69, 0x23, 0x44, 0x4d, 0x2b, 0xe5, 0xcd, 0x68, + 0x17, 0xd1, 0xc3, 0x33, 0x15, 0x21, 0x08, 0x00, + 0x39, 0x7e, 0x23, 0xb6, 0xca, 0x70, 0x15, 0x21, + 0x18, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0x11, + 0x01, 0x00, 0xcd, 0x64, 0x27, 0xca, 0x70, 0x15, + 0x21, 0x74, 0x15, 0xe5, 0xcd, 0x08, 0x21, 0xd1, + 0xcd, 0x08, 0x13, 0xc9, 0x41, 0x3a, 0x24, 0x24, + 0x24, 0x2e, 0x53, 0x55, 0x42, 0x00, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0xfd, 0xff, 0x22, + 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, 0xc9, + 0x63, 0x6f, 0x6e, 0x3a, 0x00, 0x43, 0x4f, 0x4e, + 0x3a, 0x00, 0x6c, 0x73, 0x74, 0x3a, 0x00, 0x4c, + 0x53, 0x54, 0x3a, 0x00, 0x70, 0x72, 0x6e, 0x3a, + 0x00, 0x50, 0x52, 0x4e, 0x3a, 0x00, 0x70, 0x75, + 0x6e, 0x3a, 0x00, 0x50, 0x55, 0x4e, 0x3a, 0x00, + 0x72, 0x64, 0x72, 0x3a, 0x00, 0x52, 0x44, 0x52, + 0x3a, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x01, 0x03, 0xe5, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xeb, 0x15, 0xd1, + 0xd1, 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x16, 0x2a, 0x22, 0x5a, 0x2c, 0x21, + 0x00, 0x00, 0x22, 0x5e, 0x2c, 0xc3, 0x11, 0x16, + 0x2a, 0x5a, 0x2c, 0x11, 0x08, 0x00, 0x19, 0x22, + 0x5a, 0x2c, 0x2a, 0x5e, 0x2c, 0x23, 0x22, 0x5e, + 0x2c, 0x2a, 0x5e, 0x2c, 0x11, 0x0b, 0x00, 0xeb, + 0xcd, 0xc6, 0x27, 0xca, 0x34, 0x16, 0x2a, 0x5a, + 0x2c, 0x11, 0x04, 0x00, 0x19, 0x5e, 0x23, 0x56, + 0x21, 0x7e, 0x15, 0xcd, 0x8c, 0x27, 0xc2, 0x3e, + 0x16, 0xc3, 0x00, 0x16, 0x21, 0xf8, 0xff, 0x22, + 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, 0x88, + 0x2a, 0x44, 0x4d, 0xc3, 0x4e, 0x16, 0x60, 0x69, + 0x11, 0x06, 0x00, 0x19, 0x44, 0x4d, 0x60, 0x69, + 0x7e, 0x23, 0xb6, 0xca, 0x6f, 0x16, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x84, 0x25, 0xd1, + 0xd1, 0xca, 0x6f, 0x16, 0xc3, 0x46, 0x16, 0x21, + 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x5c, 0x2c, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x03, 0x00, 0xcd, 0x64, 0x27, 0x23, + 0x22, 0x60, 0x2c, 0x2a, 0x60, 0x2c, 0x11, 0x01, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0xb0, 0x16, 0x2a, + 0x5c, 0x2c, 0x5e, 0xd5, 0x2a, 0x5a, 0x2c, 0xd1, + 0x73, 0x7b, 0xb3, 0xc2, 0xb0, 0x16, 0x21, 0xf6, + 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, + 0x2a, 0x60, 0x2c, 0x11, 0x02, 0x00, 0xcd, 0x64, + 0x27, 0xca, 0xd7, 0x16, 0x2a, 0x5c, 0x2c, 0x23, + 0x5e, 0xd5, 0x2a, 0x5a, 0x2c, 0x23, 0xd1, 0x73, + 0x7b, 0xb3, 0xc2, 0xd7, 0x16, 0x21, 0xf6, 0xff, + 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, + 0x5a, 0x2c, 0x11, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x23, 0x72, 0x2a, 0x5c, 0x2c, 0x23, 0x23, 0x5e, + 0xd5, 0x2a, 0x5a, 0x2c, 0x23, 0x23, 0xd1, 0x73, + 0x2a, 0x5c, 0x2c, 0x23, 0x23, 0x23, 0x5e, 0xd5, + 0x2a, 0x5a, 0x2c, 0x23, 0x23, 0x23, 0xd1, 0x73, + 0x21, 0x8e, 0x15, 0xe5, 0x2a, 0x5a, 0x2c, 0x11, + 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, 0x72, 0xc5, + 0x2a, 0x5a, 0x2c, 0xe5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0x5c, 0x2c, 0x11, + 0x04, 0x00, 0x19, 0x5e, 0x23, 0x56, 0xeb, 0xcd, + 0x9c, 0x26, 0xeb, 0x21, 0x0a, 0x00, 0x39, 0xf9, + 0x21, 0x00, 0x00, 0xcd, 0xc6, 0x27, 0xca, 0x64, + 0x17, 0x21, 0x7e, 0x15, 0xe5, 0x2a, 0x5a, 0x2c, + 0x11, 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, 0x72, + 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x5e, 0x2c, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, 0x00, + 0xcd, 0xc6, 0x27, 0xc2, 0x8e, 0x17, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x0b, 0x00, + 0xcd, 0xc7, 0x27, 0xca, 0x98, 0x17, 0x21, 0xfd, + 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, + 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x29, 0x29, 0x29, 0x11, 0x16, 0x2a, 0x19, 0x44, + 0x4d, 0x21, 0x06, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xeb, 0xcd, 0x9c, 0x26, 0xd1, 0xeb, 0x21, 0x08, + 0x00, 0x39, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, + 0xeb, 0x21, 0x03, 0x00, 0x09, 0x73, 0x21, 0x02, + 0x00, 0x09, 0x73, 0x21, 0x01, 0x00, 0x09, 0x73, + 0x60, 0x69, 0x73, 0x21, 0x7e, 0x15, 0xeb, 0x21, + 0x04, 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x62, 0x2c, + 0x44, 0x4d, 0xc3, 0x05, 0x18, 0x60, 0x69, 0x11, + 0x27, 0x00, 0x19, 0x44, 0x4d, 0x60, 0x69, 0x11, + 0x9a, 0x2d, 0xeb, 0xcd, 0x28, 0x28, 0xca, 0x1f, + 0x18, 0x60, 0x69, 0x11, 0x25, 0x00, 0x19, 0x7e, + 0xb7, 0xca, 0x29, 0x18, 0xc3, 0xfd, 0x17, 0x21, + 0xf9, 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, + 0xc9, 0xc5, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0xcd, 0x2d, 0x24, 0xd1, 0xd1, 0x22, + 0x9a, 0x2d, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, + 0xca, 0x4d, 0x18, 0x21, 0xfa, 0xff, 0x22, 0xc8, + 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x9a, 0x2d, + 0x11, 0xff, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x5f, + 0x18, 0xcd, 0x50, 0x25, 0x22, 0x9a, 0x2d, 0x2a, + 0x9a, 0x2d, 0xe5, 0xcd, 0x5f, 0x25, 0xd1, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, + 0x02, 0xcd, 0x64, 0x27, 0xca, 0x81, 0x18, 0xc5, + 0x21, 0x13, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, + 0xd1, 0xc5, 0x21, 0x0f, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0x11, 0xff, 0x00, 0xcd, 0x8c, + 0x27, 0xca, 0xc7, 0x18, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x21, 0x00, 0x03, 0xcd, 0x64, + 0x27, 0xca, 0xb7, 0x18, 0xc5, 0x21, 0x16, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x11, 0xff, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xc4, 0x18, 0x21, + 0xff, 0xff, 0x22, 0xc8, 0x2e, 0xcd, 0x78, 0x25, + 0x21, 0xff, 0xff, 0xc9, 0xc3, 0xea, 0x18, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, + 0x05, 0xcd, 0x64, 0x27, 0x11, 0x00, 0x05, 0xcd, + 0x8c, 0x27, 0xca, 0xea, 0x18, 0x21, 0xfb, 0xff, + 0x22, 0xc8, 0x2e, 0xcd, 0x78, 0x25, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x21, + 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x23, 0x00, + 0x09, 0x73, 0x21, 0x24, 0x00, 0x09, 0x73, 0x2a, + 0x9a, 0x2d, 0xeb, 0x21, 0x26, 0x00, 0x09, 0x73, + 0x60, 0x69, 0xe5, 0x21, 0x10, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x23, 0x72, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x03, 0x00, 0xcd, 0x64, 0x27, 0x23, + 0xeb, 0x21, 0x25, 0x00, 0x09, 0x73, 0x21, 0x5d, + 0x19, 0xe5, 0x21, 0x10, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, + 0x72, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x21, 0x00, 0x08, 0xcd, 0x64, 0x27, 0xca, 0x56, + 0x19, 0xc5, 0xcd, 0x37, 0x1f, 0xd1, 0xcd, 0x78, + 0x25, 0x21, 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, + 0x23, 0x46, 0xcd, 0xed, 0x1f, 0x21, 0x26, 0x00, + 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, 0x5f, 0x25, + 0xd1, 0xc5, 0x21, 0x10, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xcd, 0x78, 0x25, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x25, 0x00, 0x09, 0x73, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0x29, 0x29, 0x29, 0x11, 0x16, 0x2a, 0x19, + 0x44, 0x4d, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x06, 0x00, 0x09, 0x5e, 0x23, + 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x16, 0x00, 0xeb, + 0x29, 0x11, 0xca, 0x2a, 0x19, 0x5e, 0x23, 0x56, + 0xeb, 0xcd, 0x9c, 0x26, 0xd1, 0xd1, 0xd1, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, + 0x00, 0x44, 0x4d, 0x21, 0x08, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xeb, 0x22, 0x9c, 0x2d, 0x2a, 0x9c, + 0x2d, 0x11, 0x26, 0x00, 0x19, 0x5e, 0x16, 0x00, + 0xd5, 0xcd, 0x5f, 0x25, 0xd1, 0x2a, 0x9c, 0x2d, + 0x11, 0x24, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x53, + 0x1a, 0x2a, 0x9c, 0x2d, 0x11, 0x24, 0x00, 0x19, + 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x80, 0x00, 0xd1, + 0xeb, 0xcd, 0xea, 0x27, 0x44, 0x4d, 0xeb, 0x21, + 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, + 0x29, 0x28, 0xca, 0x36, 0x1a, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, + 0x9c, 0x2d, 0xe5, 0xcd, 0xfe, 0x1a, 0xd1, 0xd1, + 0xd1, 0xca, 0x53, 0x1a, 0xcd, 0x78, 0x25, 0x21, + 0x00, 0x00, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0x11, + 0x07, 0x00, 0xeb, 0xcd, 0x4f, 0x27, 0x22, 0x9e, + 0x2d, 0x7c, 0xb5, 0xca, 0xa7, 0x1a, 0x2a, 0x9e, + 0x2d, 0xe5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x60, 0x69, 0x19, 0xe5, 0x2a, 0x9c, 0x2d, + 0xe5, 0xcd, 0xad, 0x20, 0xd1, 0xd1, 0xd1, 0x22, + 0xa0, 0x2d, 0x7c, 0xb5, 0xca, 0xa7, 0x1a, 0xcd, + 0x78, 0x25, 0x2a, 0x9e, 0x2d, 0xeb, 0x2a, 0xa0, + 0x2d, 0xcd, 0xea, 0x27, 0x11, 0x07, 0x00, 0xeb, + 0xcd, 0x3f, 0x27, 0x50, 0x59, 0x19, 0xc9, 0x2a, + 0x9e, 0x2d, 0x11, 0x07, 0x00, 0xeb, 0xcd, 0x3f, + 0x27, 0x50, 0x59, 0x19, 0x44, 0x4d, 0x60, 0x69, + 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, + 0x6f, 0xcd, 0x28, 0x28, 0xca, 0xf2, 0x1a, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x60, 0x69, + 0xcd, 0xea, 0x27, 0xe5, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x60, 0x69, 0x19, 0xe5, 0x2a, + 0x9c, 0x2d, 0xe5, 0xcd, 0xfe, 0x1a, 0xd1, 0xd1, + 0xd1, 0xca, 0xf2, 0x1a, 0xcd, 0x78, 0x25, 0x60, + 0x69, 0xc9, 0xcd, 0x78, 0x25, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, + 0x4e, 0x23, 0x46, 0xc5, 0xcd, 0xfa, 0x1f, 0xd1, + 0xca, 0x17, 0x1b, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x24, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, 0x80, + 0x00, 0x19, 0xe5, 0xcd, 0x4a, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, 0x00, + 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0x19, 0x11, 0x7f, 0x00, 0xcd, 0x64, 0x27, 0xeb, + 0x21, 0x24, 0x00, 0x09, 0x73, 0x7b, 0xb3, 0xc2, + 0x6b, 0x1b, 0x60, 0x69, 0x11, 0x21, 0x00, 0x19, + 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, + 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x3a, 0xa3, 0x2d, + 0xb7, 0xc2, 0xdf, 0x1b, 0x21, 0xff, 0x00, 0x7d, + 0x32, 0xa2, 0x2d, 0x21, 0x00, 0x00, 0x7d, 0x32, + 0xa4, 0x2d, 0x7d, 0x32, 0xa3, 0x2d, 0x21, 0xa2, + 0x2d, 0xe5, 0x21, 0x0a, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0x21, 0x0a, 0x00, 0xe5, 0x21, + 0x02, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, + 0x3a, 0xa4, 0x2d, 0x6f, 0x26, 0x00, 0x11, 0x1a, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xc2, 0x1b, 0x21, + 0x00, 0x00, 0x7d, 0x32, 0xa3, 0x2d, 0x21, 0x00, + 0x00, 0xc9, 0x3a, 0xd2, 0x2a, 0x6f, 0xe5, 0x3a, + 0xa3, 0x2d, 0x6f, 0x23, 0x7d, 0x32, 0xa3, 0x2d, + 0x26, 0x00, 0x11, 0xa2, 0x2d, 0x19, 0x23, 0xd1, + 0x73, 0x21, 0x02, 0x00, 0x22, 0xa4, 0x2e, 0x3a, + 0xa3, 0x2d, 0x6f, 0x26, 0x00, 0x44, 0x4d, 0xeb, + 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0xcd, 0xc7, 0x27, 0xca, 0xff, 0x1b, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x2a, 0xa4, 0x2e, 0x11, 0xa2, 0x2d, 0x19, 0xe5, + 0xcd, 0x4a, 0x26, 0xd1, 0xd1, 0xd1, 0x60, 0x69, + 0xeb, 0x2a, 0xa4, 0x2e, 0x19, 0x22, 0xa4, 0x2e, + 0x60, 0x69, 0xeb, 0x3a, 0xa3, 0x2d, 0x6f, 0xeb, + 0xcd, 0xea, 0x27, 0x7d, 0x32, 0xa3, 0x2d, 0x60, + 0x69, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x0a, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x00, 0x00, 0x22, 0xa6, 0x2e, 0xc3, 0x4f, 0x1c, + 0x2a, 0xa6, 0x2e, 0x23, 0x22, 0xa6, 0x2e, 0x2a, + 0xa6, 0x2e, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0xcd, 0xc6, 0x27, 0xca, 0x84, + 0x1c, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0x19, 0x24, 0xd1, 0xe5, 0x60, 0x69, + 0x23, 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0x16, 0x00, + 0x21, 0x1a, 0x00, 0xcd, 0x8c, 0x27, 0xc2, 0x84, + 0x1c, 0xc3, 0x48, 0x1c, 0x2a, 0xa6, 0x2e, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, 0x29, + 0x29, 0x11, 0x16, 0x2a, 0x19, 0x44, 0x4d, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x06, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x01, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xeb, 0x29, + 0x11, 0xd3, 0x2a, 0x19, 0x5e, 0x23, 0x56, 0xeb, + 0xcd, 0x9c, 0x26, 0xd1, 0xd1, 0xd1, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, + 0x44, 0x4d, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xeb, 0x22, 0xa8, 0x2e, 0x2a, 0xa8, 0x2e, + 0x11, 0x26, 0x00, 0x19, 0x5e, 0x16, 0x00, 0xd5, + 0xcd, 0x5f, 0x25, 0xd1, 0x2a, 0xa8, 0x2e, 0x11, + 0x24, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x4a, 0x1d, + 0x2a, 0xa8, 0x2e, 0x11, 0x24, 0x00, 0x19, 0x5e, + 0x16, 0x00, 0xd5, 0x21, 0x80, 0x00, 0xd1, 0xeb, + 0xcd, 0xea, 0x27, 0x44, 0x4d, 0xeb, 0x21, 0x0c, + 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x29, + 0x28, 0xca, 0x2d, 0x1d, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xa8, + 0x2e, 0xe5, 0xcd, 0x02, 0x1e, 0xd1, 0xd1, 0xd1, + 0xca, 0x4a, 0x1d, 0xcd, 0x78, 0x25, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0x11, 0x07, + 0x00, 0xeb, 0xcd, 0x4f, 0x27, 0x22, 0xaa, 0x2e, + 0x7c, 0xb5, 0xca, 0xab, 0x1d, 0x2a, 0xaa, 0x2e, + 0xe5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x60, 0x69, 0x19, 0xe5, 0x2a, 0xa8, 0x2e, 0xe5, + 0xcd, 0xb5, 0x20, 0xd1, 0xd1, 0xd1, 0x22, 0xac, + 0x2e, 0x7c, 0xb5, 0xca, 0xab, 0x1d, 0xcd, 0x78, + 0x25, 0x2a, 0xaa, 0x2e, 0xeb, 0x2a, 0xac, 0x2e, + 0xcd, 0xea, 0x27, 0x11, 0x07, 0x00, 0xeb, 0xcd, + 0x3f, 0x27, 0x50, 0x59, 0x19, 0x44, 0x4d, 0x7c, + 0xb5, 0xc2, 0xa8, 0x1d, 0x21, 0xff, 0xff, 0xc9, + 0x60, 0x69, 0xc9, 0x2a, 0xaa, 0x2e, 0x11, 0x07, + 0x00, 0xeb, 0xcd, 0x3f, 0x27, 0x50, 0x59, 0x19, + 0x44, 0x4d, 0x60, 0x69, 0xeb, 0x21, 0x0c, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x28, 0x28, + 0xca, 0xf6, 0x1d, 0x21, 0x0c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0xe5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x60, + 0x69, 0x19, 0xe5, 0x2a, 0xa8, 0x2e, 0xe5, 0xcd, + 0x02, 0x1e, 0xd1, 0xd1, 0xd1, 0xca, 0xf6, 0x1d, + 0xcd, 0x78, 0x25, 0x60, 0x69, 0xc9, 0xcd, 0x78, + 0x25, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0xc5, + 0xcd, 0xfa, 0x1f, 0xd1, 0x11, 0x00, 0x00, 0xeb, + 0xcd, 0xc6, 0x27, 0xca, 0x22, 0x1e, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, + 0x00, 0x21, 0x80, 0x00, 0x19, 0xe5, 0x21, 0x0e, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x4a, + 0x26, 0xd1, 0xd1, 0xd1, 0xc5, 0x21, 0x22, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x22, 0xc8, + 0x2e, 0x7c, 0xb5, 0xca, 0x5a, 0x1e, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, + 0x00, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, + 0x6f, 0x19, 0x11, 0x7f, 0x00, 0xcd, 0x64, 0x27, + 0xeb, 0x21, 0x24, 0x00, 0x09, 0x73, 0x7b, 0xb3, + 0xc2, 0x8c, 0x1e, 0x60, 0x69, 0x11, 0x21, 0x00, + 0x19, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, + 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xae, 0x2e, + 0x2a, 0xae, 0x2e, 0x2b, 0x22, 0xae, 0x2e, 0x23, + 0x7c, 0xb5, 0xca, 0xe6, 0x1e, 0x60, 0x69, 0x5e, + 0x16, 0x00, 0x21, 0x0a, 0x00, 0xcd, 0x8c, 0x27, + 0xca, 0xd0, 0x1e, 0x21, 0x0d, 0x00, 0xe5, 0x21, + 0x02, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, + 0x60, 0x69, 0x23, 0x44, 0x4d, 0x2b, 0x5e, 0x16, + 0x00, 0xd5, 0x21, 0x02, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xc3, 0xa8, 0x1e, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xb0, 0x2e, 0x2a, + 0xb0, 0x2e, 0x2b, 0x22, 0xb0, 0x2e, 0x23, 0x7c, + 0xb5, 0xca, 0x2e, 0x1f, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x2b, 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xc3, 0x07, 0x1f, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0xc5, 0x21, 0x23, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x60, 0x69, + 0x11, 0x21, 0x00, 0x19, 0x7e, 0x23, 0xb6, 0xc2, + 0x67, 0x1f, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, + 0x00, 0x09, 0x73, 0x21, 0x00, 0x00, 0xc9, 0x60, + 0x69, 0x11, 0x21, 0x00, 0x19, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x2b, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xc5, 0xcd, 0xfa, 0x1f, 0xd1, 0xca, 0x84, 0x1f, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0x00, 0x01, 0x22, + 0xb2, 0x2e, 0x2a, 0xb2, 0x2e, 0x11, 0x80, 0x00, + 0xeb, 0xcd, 0x29, 0x28, 0xca, 0xb7, 0x1f, 0x2a, + 0xb2, 0x2e, 0x2b, 0x22, 0xb2, 0x2e, 0x5e, 0x16, + 0x00, 0x21, 0x1a, 0x00, 0xcd, 0x9b, 0x27, 0xca, + 0xb4, 0x1f, 0x2a, 0xb2, 0x2e, 0x23, 0x22, 0xb2, + 0x2e, 0xc3, 0xb7, 0x1f, 0xc3, 0x8a, 0x1f, 0x2a, + 0xb2, 0x2e, 0x11, 0x80, 0xff, 0x19, 0xeb, 0x21, + 0x24, 0x00, 0x09, 0x73, 0x16, 0x00, 0x21, 0x80, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xe9, 0x1f, 0x60, + 0x69, 0x11, 0x21, 0x00, 0x19, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, 0x00, 0x09, + 0x73, 0x21, 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, 0x22, 0xb4, + 0x2e, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x80, 0x00, 0xe5, 0x21, 0x1a, 0x00, 0xe5, 0xcd, + 0x19, 0x24, 0xd1, 0xd1, 0x2a, 0xb4, 0x2e, 0x50, + 0x59, 0xcd, 0x9b, 0x27, 0xc2, 0x2f, 0x20, 0x21, + 0x21, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x2a, 0xb6, + 0x2e, 0xcd, 0x9b, 0x27, 0xca, 0x8f, 0x20, 0xc5, + 0x21, 0x21, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, + 0xd1, 0x22, 0xc8, 0x2e, 0x11, 0x01, 0x00, 0xcd, + 0x8c, 0x27, 0xc2, 0x51, 0x20, 0x2a, 0xc8, 0x2e, + 0x11, 0x04, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x73, + 0x20, 0x21, 0x00, 0x00, 0x22, 0xc8, 0x2e, 0x21, + 0x1a, 0x00, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0xcd, 0x2e, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0x22, 0xb4, 0x2e, 0x21, + 0x01, 0x00, 0xc9, 0x2a, 0xc8, 0x2e, 0x7c, 0xb5, + 0xca, 0x7f, 0x20, 0x21, 0xff, 0xff, 0xc9, 0x60, + 0x69, 0x22, 0xb4, 0x2e, 0x21, 0x21, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xb6, 0x2e, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0x29, 0x29, 0x29, 0x11, 0x18, 0x2a, 0x19, + 0x5e, 0x16, 0x00, 0xeb, 0xc9, 0xcd, 0xdc, 0x26, + 0x0e, 0x21, 0xc3, 0xba, 0x20, 0xcd, 0xdc, 0x26, + 0x0e, 0x22, 0xc5, 0x2a, 0x5f, 0x2b, 0xeb, 0x21, + 0x80, 0x00, 0x19, 0x22, 0x5f, 0x2b, 0x0e, 0x1a, + 0xcd, 0x05, 0x00, 0xc1, 0xc5, 0x2a, 0x5d, 0x2b, + 0xeb, 0xcd, 0x05, 0x00, 0xb7, 0xc2, 0xf3, 0x20, + 0x2a, 0x5d, 0x2b, 0x11, 0x21, 0x00, 0x19, 0x34, + 0xc2, 0xe5, 0x20, 0x23, 0x34, 0x2a, 0x61, 0x2b, + 0x2b, 0x22, 0x61, 0x2b, 0x7d, 0xb4, 0xc2, 0xbb, + 0x20, 0xc1, 0xc9, 0xfe, 0x01, 0xca, 0x03, 0x21, + 0xfe, 0x04, 0xca, 0x03, 0x21, 0x6f, 0x26, 0x00, + 0x22, 0xc8, 0x2e, 0xc1, 0x2a, 0x61, 0x2b, 0xc9, + 0x11, 0xd8, 0xff, 0xcd, 0xbe, 0x26, 0x21, 0x04, + 0x00, 0x39, 0xe5, 0x21, 0x32, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x2d, 0x24, 0xd1, 0xd1, + 0x44, 0x4d, 0xc5, 0xcd, 0x5f, 0x25, 0xd1, 0x21, + 0x04, 0x00, 0x39, 0xe5, 0x21, 0x13, 0x00, 0xe5, + 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x44, 0x4d, 0xcd, + 0x78, 0x25, 0x60, 0x69, 0x11, 0xff, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x4f, 0x21, 0x21, 0xff, 0xff, + 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, + 0x21, 0xfc, 0xff, 0x09, 0x5e, 0x23, 0x56, 0xeb, + 0x2b, 0x29, 0x29, 0x22, 0xc0, 0x2e, 0xc5, 0xcd, + 0x65, 0x23, 0xd1, 0x21, 0x0a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0xc0, 0x21, 0xd1, 0x22, + 0xbe, 0x2e, 0x7c, 0xb5, 0xca, 0xbc, 0x21, 0x2a, + 0xbe, 0x2e, 0x50, 0x59, 0xcd, 0x9b, 0x27, 0xca, + 0xbc, 0x21, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x2a, 0xc0, 0x2e, 0xcd, 0x29, 0x28, 0xca, + 0xa8, 0x21, 0x2a, 0xc0, 0x2e, 0xc3, 0xb0, 0x21, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0xe5, 0x2a, 0xbe, 0x2e, 0xe5, 0xc5, 0xcd, 0x4a, + 0x26, 0xd1, 0xd1, 0xd1, 0x2a, 0xbe, 0x2e, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, + 0x23, 0x11, 0x02, 0x00, 0xeb, 0xcd, 0x4f, 0x27, + 0x23, 0x22, 0xc4, 0x2e, 0x2a, 0xbc, 0x2e, 0x22, + 0xc2, 0x2e, 0x7c, 0xb5, 0xc2, 0xf3, 0x21, 0x21, + 0xb8, 0x2e, 0x22, 0xc2, 0x2e, 0x22, 0xba, 0x2e, + 0x22, 0xbc, 0x2e, 0x2a, 0xc2, 0x2e, 0x23, 0x23, + 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc3, 0x0e, 0x22, + 0x60, 0x69, 0x22, 0xc2, 0x2e, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, + 0xd1, 0xcd, 0x9b, 0x27, 0xca, 0x8d, 0x22, 0x21, + 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x60, + 0x69, 0x5e, 0x23, 0x56, 0xeb, 0x29, 0x29, 0x50, + 0x59, 0x19, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0x8d, + 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x2a, 0xbc, 0x2e, 0xd1, 0xcd, 0x8c, 0x27, + 0xca, 0x5c, 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xeb, 0x23, 0x23, 0x5e, 0x23, 0x56, + 0xeb, 0x22, 0xbc, 0x2e, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xeb, 0x5e, 0x23, 0x56, 0xd5, + 0x60, 0x69, 0xd1, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x19, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, + 0x5e, 0x23, 0x56, 0x21, 0x02, 0x00, 0x09, 0x73, + 0x23, 0x72, 0xc3, 0x0e, 0x22, 0x60, 0x69, 0x5e, + 0x23, 0x56, 0x2a, 0xc4, 0x2e, 0xcd, 0x1a, 0x28, + 0xca, 0x1a, 0x23, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0x2a, 0xc4, 0x2e, 0xcd, 0x8c, 0x27, 0xca, 0xbd, + 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x2a, 0xc2, 0x2e, 0x23, 0x23, 0xd1, 0x73, + 0x23, 0x72, 0xc3, 0x02, 0x23, 0x2a, 0xc4, 0x2e, + 0x29, 0x29, 0x50, 0x59, 0x19, 0x22, 0xbc, 0x2e, + 0x2a, 0xbc, 0x2e, 0xe5, 0x2a, 0xc2, 0x2e, 0x23, + 0x23, 0xd1, 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xbc, 0x2e, + 0x23, 0x23, 0xd1, 0x73, 0x23, 0x72, 0x60, 0x69, + 0x5e, 0x23, 0x56, 0x2a, 0xc4, 0x2e, 0xcd, 0xea, + 0x27, 0xe5, 0x2a, 0xbc, 0x2e, 0xd1, 0x73, 0x23, + 0x72, 0x2a, 0xc4, 0x2e, 0xeb, 0x60, 0x69, 0x73, + 0x23, 0x72, 0x2a, 0xc2, 0x2e, 0x22, 0xbc, 0x2e, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x02, 0x00, 0x09, + 0x73, 0x23, 0x72, 0x60, 0x69, 0x11, 0x04, 0x00, + 0x19, 0xc9, 0x60, 0x69, 0xeb, 0x2a, 0xbc, 0x2e, + 0xcd, 0x8c, 0x27, 0xca, 0x61, 0x23, 0x21, 0x00, + 0x04, 0xe5, 0xcd, 0x16, 0x25, 0xd1, 0x44, 0x4d, + 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, 0x3d, + 0x23, 0x21, 0x00, 0x00, 0xc9, 0x21, 0x00, 0x01, + 0xeb, 0x60, 0x69, 0x73, 0x23, 0x72, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x60, 0x69, 0x11, 0x04, 0x00, 0x19, 0xe5, + 0xcd, 0x65, 0x23, 0xd1, 0x2a, 0xbc, 0x2e, 0x44, + 0x4d, 0xc3, 0x00, 0x22, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0xfc, 0xff, 0x19, 0x22, 0xc6, + 0x2e, 0x2a, 0xc6, 0x2e, 0x23, 0x23, 0x7e, 0x23, + 0xb6, 0xca, 0x88, 0x23, 0x21, 0xff, 0xff, 0xc9, + 0x2a, 0xbc, 0x2e, 0x44, 0x4d, 0xc3, 0x99, 0x23, + 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x42, + 0x4b, 0x60, 0x69, 0xeb, 0x2a, 0xc6, 0x2e, 0xcd, + 0x29, 0x28, 0xc2, 0xb8, 0x23, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, 0x2e, + 0xd1, 0xeb, 0xcd, 0x29, 0x28, 0xca, 0xec, 0x23, + 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x60, 0x69, 0xd1, 0xeb, 0xcd, 0x1a, 0x28, 0xca, + 0xe9, 0x23, 0x2a, 0xc6, 0x2e, 0x50, 0x59, 0xeb, + 0xcd, 0x29, 0x28, 0xc2, 0xec, 0x23, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, + 0x2e, 0xd1, 0xeb, 0xcd, 0x28, 0x28, 0xc2, 0xec, + 0x23, 0xc3, 0x90, 0x23, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, 0x2e, 0x23, + 0x23, 0xd1, 0x73, 0x23, 0x72, 0x2a, 0xc6, 0x2e, + 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x60, 0x69, 0x22, 0xbc, 0x2e, 0x21, 0x00, 0x00, + 0xc9, 0xcd, 0xdc, 0x26, 0xcd, 0x1c, 0x24, 0xeb, + 0xc9, 0xcd, 0xdc, 0x26, 0x2a, 0x5d, 0x2b, 0x44, + 0x4d, 0x2a, 0x5f, 0x2b, 0xeb, 0xcd, 0x05, 0x00, + 0xeb, 0x6f, 0xaf, 0x67, 0xc9, 0xc5, 0x21, 0x04, + 0x00, 0x39, 0x4e, 0x23, 0x46, 0x23, 0x5e, 0x23, + 0x56, 0x6b, 0x62, 0x36, 0x00, 0x23, 0x3e, 0x0b, + 0x36, 0x20, 0x23, 0x3d, 0xc2, 0x40, 0x24, 0x3e, + 0x04, 0x36, 0x00, 0x23, 0x3d, 0xc2, 0x49, 0x24, + 0xeb, 0x79, 0xb0, 0xca, 0xf1, 0x24, 0x0a, 0xfe, + 0x20, 0xca, 0x61, 0x24, 0xfe, 0x09, 0xc2, 0x65, + 0x24, 0x03, 0xc3, 0x56, 0x24, 0xc5, 0x16, 0x00, + 0x0a, 0xcd, 0x0a, 0x25, 0xda, 0x7e, 0x24, 0xd6, + 0x30, 0x5f, 0x7a, 0x87, 0x87, 0x87, 0x82, 0x82, + 0x83, 0x57, 0x03, 0xc3, 0x68, 0x24, 0xfe, 0x2f, + 0xc2, 0x88, 0x24, 0x03, 0xf1, 0xc3, 0x8b, 0x24, + 0xc1, 0x16, 0xff, 0x03, 0x0a, 0xfe, 0x3a, 0x0b, + 0x3e, 0x00, 0xc2, 0xb6, 0x24, 0x0a, 0xe6, 0x7f, + 0xfe, 0x41, 0xda, 0xf1, 0x24, 0xfe, 0x5b, 0xd2, + 0xa7, 0x24, 0xd6, 0x40, 0xc3, 0xb3, 0x24, 0xfe, + 0x61, 0xda, 0xf1, 0x24, 0xfe, 0x7b, 0xd2, 0xf1, + 0x24, 0xd6, 0x60, 0x77, 0x03, 0x03, 0x23, 0x1e, + 0x08, 0x1c, 0x0a, 0x03, 0xfe, 0x2e, 0xca, 0xd1, + 0x24, 0xb7, 0xca, 0xea, 0x24, 0x1d, 0xca, 0xb9, + 0x24, 0xcd, 0xf8, 0x24, 0x77, 0x23, 0xc3, 0xba, + 0x24, 0x1d, 0x7b, 0x85, 0x6f, 0x7c, 0xce, 0x00, + 0x67, 0x1e, 0x03, 0x0a, 0x03, 0xb7, 0xca, 0xea, + 0x24, 0xcd, 0xf8, 0x24, 0x77, 0x23, 0x1d, 0xc2, + 0xdb, 0x24, 0x26, 0x00, 0x6a, 0x7a, 0xb7, 0xc1, + 0xc9, 0x21, 0xff, 0xff, 0x7c, 0xb7, 0xc1, 0xc9, + 0xfe, 0x2a, 0xc2, 0x01, 0x25, 0x0b, 0x3e, 0x3f, + 0xc9, 0xfe, 0x61, 0xd8, 0xfe, 0x7b, 0xd0, 0xd6, + 0x20, 0xc9, 0xfe, 0x30, 0xd8, 0xfe, 0x3a, 0xd2, + 0x14, 0x25, 0xb7, 0xc9, 0x37, 0xc9, 0x21, 0x02, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x2a, 0xf4, 0x29, + 0x19, 0xda, 0x3a, 0x25, 0xeb, 0x2a, 0xca, 0x2e, + 0x7d, 0x93, 0x7c, 0x9a, 0xda, 0x3a, 0x25, 0x2a, + 0xf4, 0x29, 0xeb, 0x22, 0xf4, 0x29, 0xeb, 0x7c, + 0xb5, 0xc9, 0x21, 0xff, 0xff, 0xaf, 0x3d, 0xc9, + 0x21, 0x02, 0x00, 0x39, 0x7d, 0x96, 0x5f, 0x7c, + 0x23, 0x9e, 0x57, 0xeb, 0x22, 0xca, 0x2e, 0xc9, + 0xcd, 0xdc, 0x26, 0x0e, 0x20, 0x1e, 0xff, 0xcd, + 0x05, 0x00, 0x6f, 0x26, 0x00, 0xb7, 0xc9, 0xcd, + 0xdc, 0x26, 0x0e, 0x20, 0x1e, 0xff, 0xcd, 0x05, + 0x00, 0x32, 0xdb, 0x2a, 0x3a, 0x5d, 0x2b, 0xfe, + 0xff, 0xc8, 0x0e, 0x20, 0x5f, 0xc3, 0x05, 0x00, + 0xcd, 0xdc, 0x26, 0x0e, 0x20, 0x3a, 0xdb, 0x2a, + 0x5f, 0xc3, 0x05, 0x00, 0x21, 0x05, 0x00, 0x39, + 0xc5, 0x01, 0xff, 0x7f, 0xc3, 0x98, 0x25, 0x21, + 0x07, 0x00, 0x39, 0xc5, 0x46, 0x2b, 0x4e, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x2b, 0x6e, 0x67, + 0xeb, 0x78, 0xb1, 0xca, 0xb6, 0x25, 0x1a, 0x96, + 0xc2, 0xb6, 0x25, 0x1a, 0xb7, 0xca, 0xb6, 0x25, + 0x13, 0x23, 0x0b, 0xc3, 0xa1, 0x25, 0xc1, 0x6f, + 0x9f, 0x67, 0xb5, 0xc9, 0x21, 0x05, 0x00, 0x39, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x2b, 0x6e, 0x67, + 0xe5, 0x1a, 0x77, 0xb7, 0xca, 0xd4, 0x25, 0x13, + 0x23, 0xc3, 0xc9, 0x25, 0xe1, 0x7c, 0xb5, 0xc9, + 0x21, 0x05, 0x00, 0x39, 0xc5, 0x01, 0xff, 0x7f, + 0xc3, 0xec, 0x25, 0x21, 0x07, 0x00, 0x39, 0xc5, + 0x46, 0x2b, 0x4e, 0x2b, 0x56, 0x2b, 0x5e, 0x2b, + 0x7e, 0x2b, 0x6e, 0x67, 0xe5, 0xaf, 0xbe, 0xca, + 0xfe, 0x25, 0x23, 0xc3, 0xf6, 0x25, 0x78, 0xb1, + 0xca, 0x0f, 0x26, 0x1a, 0x77, 0xb7, 0xca, 0x0f, + 0x26, 0x13, 0x23, 0x0b, 0xc3, 0xfe, 0x25, 0x77, + 0xe1, 0xc1, 0x7c, 0xb5, 0xc9, 0x21, 0x02, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0x11, 0x00, 0x00, + 0xaf, 0xbe, 0xca, 0x2a, 0x26, 0x13, 0x23, 0xc3, + 0x21, 0x26, 0xeb, 0x7d, 0xb4, 0xc9, 0xc5, 0x21, + 0x04, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x23, 0x4e, + 0x23, 0x46, 0x23, 0x6e, 0xeb, 0x78, 0xb1, 0xca, + 0x48, 0x26, 0x73, 0x23, 0x0b, 0xc3, 0x3d, 0x26, + 0xc1, 0xc9, 0xc5, 0x21, 0x09, 0x00, 0x39, 0x46, + 0x2b, 0x4e, 0x2b, 0x56, 0x2b, 0x5e, 0x2b, 0x7e, + 0x2b, 0x6e, 0x67, 0xba, 0xda, 0x86, 0x26, 0xc2, + 0x6a, 0x26, 0x7d, 0xbb, 0xda, 0x86, 0x26, 0xca, + 0x9a, 0x26, 0x09, 0xeb, 0x09, 0xaf, 0xc6, 0x03, + 0xea, 0x7a, 0x26, 0xeb, 0x1b, 0x2b, 0xed, 0xb8, + 0xc1, 0xc9, 0x1b, 0x2b, 0x1a, 0x77, 0x0b, 0x78, + 0xb1, 0xc2, 0x7a, 0x26, 0xc1, 0xc9, 0xaf, 0xc6, + 0x03, 0xea, 0x90, 0x26, 0xed, 0xb0, 0xc1, 0xc9, + 0x7e, 0x12, 0x13, 0x23, 0x0b, 0x78, 0xb1, 0xc2, + 0x90, 0x26, 0xc1, 0xc9, 0xe9, 0xe1, 0xc5, 0x44, + 0x4d, 0x21, 0x00, 0x00, 0x39, 0xeb, 0x39, 0xf9, + 0xd5, 0xdd, 0xe5, 0xfd, 0xe5, 0x60, 0x69, 0xcd, + 0x9c, 0x26, 0xfd, 0xe1, 0xdd, 0xe1, 0xeb, 0xe1, + 0xf9, 0xc1, 0xeb, 0x7c, 0xb5, 0xc9, 0xe1, 0xc5, + 0x44, 0x4d, 0x21, 0x00, 0x00, 0x39, 0xeb, 0x39, + 0xf9, 0xd5, 0x21, 0xb6, 0x26, 0xe5, 0x60, 0x69, + 0xe9, 0x7e, 0x12, 0x23, 0x13, 0x0b, 0x78, 0xb1, + 0xc2, 0xd1, 0x26, 0xc9, 0xd1, 0x21, 0x02, 0x00, + 0x39, 0xaf, 0xc6, 0x03, 0xea, 0xeb, 0x26, 0xdd, + 0xe5, 0xfd, 0xe5, 0xc5, 0xd5, 0x11, 0x5d, 0x2b, + 0x06, 0x06, 0x7e, 0x12, 0x23, 0x13, 0x05, 0xc2, + 0xf2, 0x26, 0x21, 0xff, 0x26, 0xe3, 0xe9, 0xc1, + 0xaf, 0xc6, 0x03, 0xea, 0x0a, 0x27, 0xfd, 0xe1, + 0xdd, 0xe1, 0x7c, 0xb5, 0xc9, 0xc5, 0x44, 0x4d, + 0x21, 0x00, 0x00, 0x3e, 0x10, 0x29, 0xeb, 0x29, + 0xeb, 0xd2, 0x1d, 0x27, 0x09, 0x3d, 0xc2, 0x15, + 0x27, 0xc1, 0x7d, 0xb4, 0xc9, 0xeb, 0x7b, 0xe6, + 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x7c, 0xb4, 0xf2, + 0x57, 0x27, 0x7c, 0x37, 0x1f, 0x67, 0x7d, 0x1f, + 0x6f, 0x1d, 0xc2, 0x32, 0x27, 0xb4, 0xc9, 0xeb, + 0x7b, 0xe6, 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x29, + 0x1d, 0xc2, 0x47, 0x27, 0x7d, 0xb4, 0xc9, 0xeb, + 0x7b, 0xe6, 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x7c, + 0xb7, 0x1f, 0x67, 0x7d, 0x1f, 0x6f, 0x1d, 0xc2, + 0x57, 0x27, 0xb4, 0xc9, 0x7c, 0xa2, 0x67, 0x7d, + 0xa3, 0x6f, 0xb4, 0xc9, 0x7c, 0x2f, 0x67, 0x7d, + 0x2f, 0x6f, 0xb4, 0xc9, 0x7c, 0xb2, 0x67, 0x7d, + 0xb3, 0x6f, 0xb4, 0xc9, 0x7c, 0xaa, 0x67, 0x7d, + 0xab, 0x6f, 0xb4, 0xc9, 0x7c, 0xb5, 0xca, 0xa5, + 0x27, 0xc3, 0x96, 0x27, 0x7d, 0x93, 0xc2, 0x96, + 0x27, 0x7c, 0x92, 0xca, 0xa5, 0x27, 0x21, 0x00, + 0x00, 0xaf, 0xc9, 0x7d, 0x93, 0xc2, 0xa5, 0x27, + 0x7c, 0x92, 0xca, 0x96, 0x27, 0x21, 0x01, 0x00, + 0x7d, 0xb4, 0xc9, 0xeb, 0x7c, 0xaa, 0xfa, 0xbe, + 0x27, 0x7d, 0x93, 0x7c, 0x9a, 0x3f, 0x3e, 0x00, + 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, 0x7a, 0x07, + 0xe6, 0x01, 0x6f, 0x26, 0x00, 0xc9, 0xeb, 0x7c, + 0xaa, 0xfa, 0xd8, 0x27, 0x7d, 0x93, 0x7c, 0x9a, + 0x3e, 0x00, 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, + 0x7c, 0x07, 0xe6, 0x01, 0x6f, 0x26, 0x00, 0xc9, + 0x7d, 0x2f, 0x6f, 0x7c, 0x2f, 0x67, 0x23, 0x7d, + 0xb4, 0xc9, 0xeb, 0x7d, 0x93, 0x6f, 0x7c, 0x9a, + 0x67, 0xb5, 0xc9, 0xeb, 0xe1, 0xc5, 0x42, 0x4b, + 0x5e, 0x23, 0x56, 0x1b, 0x7a, 0xb7, 0xfa, 0x13, + 0x28, 0x23, 0x79, 0xbe, 0xca, 0x0d, 0x28, 0x23, + 0x23, 0x23, 0xc3, 0xfb, 0x27, 0x23, 0x78, 0xbe, + 0xc2, 0x08, 0x28, 0x23, 0x7e, 0x23, 0x66, 0x6f, + 0xc1, 0xe9, 0xeb, 0x7d, 0x93, 0x7c, 0x9a, 0x3e, + 0x00, 0x3f, 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, + 0xeb, 0x7d, 0x93, 0x7c, 0x9a, 0x3e, 0x00, 0xce, + 0x00, 0x6f, 0x26, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x05, + 0xb4, 0x05, 0xdd, 0x05, 0x06, 0x06, 0x42, 0xd6, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, + 0x00, 0x00, 0x00, 0x72, 0x2b, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x01, 0x03, 0x77, 0x2b, 0x00, + 0x02, 0x03, 0x61, 0x00, 0x00, 0x01, 0x09, 0x61, + 0x2b, 0x00, 0x02, 0x09, 0x78, 0x00, 0x00, 0x01, + 0x05, 0x78, 0x2b, 0x00, 0x02, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x29, 0x01, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x00, 0xe5, 0x31, 0xd2, 0x32, + 0xd2, 0x2e, 0x07, 0x03, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xce, 0x36, 0x00, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x5d, 0x19, 0x62, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x0e, 0x10, + 0x02, 0x02, 0x01, 0x00, 0x8e, 0x15, 0x00, 0x03, + 0x00, 0x00, 0x8e, 0x15, 0x03, 0x00, 0x00, 0x00, + 0x8e, 0x15, 0x01, 0x01, 0x00, 0x01, 0xef, 0x17, + 0x98, 0x15, 0x70, 0x2a, 0x02, 0x00, 0x9d, 0x15, + 0x70, 0x2a, 0x02, 0x00, 0xa2, 0x15, 0x76, 0x2a, + 0x05, 0x00, 0xa7, 0x15, 0x76, 0x2a, 0x05, 0x00, + 0xac, 0x15, 0x76, 0x2a, 0x05, 0x00, 0xb1, 0x15, + 0x76, 0x2a, 0x05, 0x00, 0xb6, 0x15, 0x76, 0x2a, + 0x04, 0x00, 0xbb, 0x15, 0x76, 0x2a, 0x04, 0x00, + 0xc0, 0x15, 0x7c, 0x2a, 0x03, 0x00, 0xc5, 0x15, + 0x7c, 0x2a, 0x03, 0x00, 0x00, 0x00, 0x82, 0x2a, + 0x00, 0x00, 0x7e, 0x15, 0xd8, 0x19, 0x6f, 0x1b, + 0x32, 0x1c, 0x0a, 0x7e, 0x15, 0xcf, 0x1c, 0xef, + 0x1e, 0xef, 0x1e, 0x00, 0x00, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x90, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x40, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x40, 0x40, 0x40, 0x40, 0x20, 0xb6, 0x26, 0xeb, + 0xd5, 0x2e, 0x2a, 0x00, 0x94, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x15, 0xd7, 0x06, 0x00, 0x01, 0x00, + 0x30, 0x00, 0x10, 0x27, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x43, 0xd6, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0xd2, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0x14, 0xd5, 0x2b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x53, 0x54, 0x44, + 0x4c, 0x49, 0x42, 0x2e, 0x48, 0x00, 0x4d, 0x01, + 0x00, 0x00, 0x34, 0x04, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4d, 0x59, 0x44, 0x55, + 0x4d, 0x50, 0x20, 0x20, 0x43, 0x4f, 0x4d, 0x00, + 0x00, 0x00, 0x3b, 0x0a, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4c, 0x49, 0x42, 0x01, + 0x00, 0x00, 0x80, 0x10, 0x00, 0x11, 0x00, 0x12, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, + 0x00, 0x17, 0x00, 0x00, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4c, 0x49, 0x42, 0x02, + 0x00, 0x00, 0x15, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2e, 0x2a, 0x82, 0x2a, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x44, 0x55, 0x4d, 0x50, 0x43, + 0x4f, 0x4d, 0x20, 0x48, 0x20, 0x20, 0x04, 0x00, + 0x00, 0x28, 0x80, 0x02, 0x81, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x27, 0x28, 0x02, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x2c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd2, 0x32, 0xb8, 0x2e, 0x00, 0x00, + 0x00, 0x00, 0xb8, 0x2e, 0x01, 0x01, 0xce, 0x32, + 0x00, 0x00, 0x06, 0xd0, 0xce, 0x2e, 0x01, 0x01, + 0x00, 0x00, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x30, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x62, 0x38, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x65, 0x2c, 0x20, 0x30, + 0x78, 0x30, 0x31, 0x2c, 0x20, 0x30, 0x78, 0x30, + 0x31, 0x2c, 0x20, 0x30, 0x78, 0x63, 0x65, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x30, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x36, 0x2c, 0x20, 0x30, 0x78, 0x64, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x63, 0x65, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x65, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x31, 0x2c, 0x20, 0x30, 0x78, 0x30, 0x31, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x30, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x37, 0x38, 0x2c, 0x20, 0x0d, 0x0a, 0x09, + 0x30, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x32, + 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, + 0x32, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, + 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x33, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x33, 0x37, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x33, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x32, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x32, + 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, + 0x33, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, + 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x32, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x30, 0x64, 0x2c, 0x20, + 0x30, 0x78, 0x30, 0x61, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x39, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x36, + 0x34, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x36, 0x31, + 0x2c, 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x33, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x39, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, + 0x78, 0x32, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, 0x33, + 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x33, 0x2c, + +}; + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/DUMPMAC.ASM b/branches/wbw/Apps/crossdev/DUMPMAC.ASM new file mode 100644 index 00000000..103e7c82 --- /dev/null +++ b/branches/wbw/Apps/crossdev/DUMPMAC.ASM @@ -0,0 +1,108 @@ +; dumpmac.asm 2/1/2012 dwg - dump macro, declaration and implementation + + maclib portab + maclib globals + maclib hardware + maclib z80 + maclib cpmbdos + maclib printers + + cseg + +; e=char on entry + public x$pr$vis +x$pr$vis: + enter + lxi h,x$visibool + mvi d,0 + dad d + mov a,m + cpi 0 + jz do$dot + mvi c,2 + call BDOS + jmp x$pr$fini +do$dot: + conout '.' +x$pr$fini: + leave + ret + + public x$dump +x$dump: shld x$dump$tmp + call pr$h$word + conout ':' + conout ' ' + mvi b,16 +x$d$lp1: + mov a,m + inx h + xchg + mov l,a + call pr$h$byte + conout ' ' + xchg + dcr b + jnz x$d$lp1 + conout ' ' + conout ' ' + mvi b,16 + lhld x$dump$tmp +x$d$lp2: + mov a,m + inx h + mov e,a + call x$pr$vis + dcr b + jnz x$d$lp2 + conout CR + conout LF + lhld x$dump$tmp + ret + + +; display a number of lines of sixteen bytes in hex with leading address +; and ascii + public x$dump$multi +x$dump$multi: + push h ; save display address in case x$dump changes it + call x$dump ; call actual dump routine for 16 bytes + pop h ; restore display address + lxi d,16 ; get ready to increment it by 16 bytes + dad d ; here we go, HL = new load address + dcr c ; decrement line counter + jnz x$dump$multi ; do more as necessary + ret + + + dseg + +x$dump$tmp ds 2 + + public x$visibool +x$visibool: +; 0 1 2 3 4 5 6 7 8 9 A B C D E F +; - - - - - - - - - - - - - - - - +vb$00 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$10 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$20 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; "#$%&'()*+,-./ +vb$30 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;0123456789:;<=>? +vb$40 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;@ABCDEFGHIJKLMNO +vb$50 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;PQRSTUVWXYZ[\]^_ +vb$60 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;`abcdefghijklmno +vb$70 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 ;pqrstuvwxyz{|}~ +vb$80 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$90 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$a0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$b0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$c0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$d0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$e0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$f0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + +; eof - dumpmac.asm + + + + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/EDITOR.ASM b/branches/wbw/Apps/crossdev/EDITOR.ASM new file mode 100644 index 00000000..89cab224 --- /dev/null +++ b/branches/wbw/Apps/crossdev/EDITOR.ASM @@ -0,0 +1,367 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC vdaini_ +vdaini_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16384 + CALL .or + SHLD hregbc_ + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hregde_ + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + RET +.2 EQU 0 + PUBLIC bitlook_ +bitlook_: lxi d,.3 + call csave + LXI H,-32768 + XCHG + LXI H,2-.3 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .5 +.4: + LXI H,0-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.5: + LXI H,0-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,256 + CALL .lt + JZ .6 + LXI H,0-.3 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-2-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,-2-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.8: + LXI H,-2-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + CALL .lt + JZ .9 + LXI H,2-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+16 + PUSH H + CALL printf_ + POP D + POP D + JMP .7 +.9: + LXI H,.1+24 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + RET +.3 EQU -6 +.1: + DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32 + DB 0,48,120,37,48,50,120,32,0,10,0 + PUBLIC vdaqry_ +vdaqry_: lxi d,.11 + call csave + LXI H,8-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16640 + CALL .or + SHLD hregbc_ + LXI H,10-.11 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + RET +.11 EQU 0 + PUBLIC flip_ +flip_: lxi d,.12 + call csave + LXI H,-32768 + PUSH H + LXI H,64 + PUSH H + CALL vdaqry_ + POP D + POP D + XCHG + LXI H,-3-.12 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-32768 + XCHG + LXI H,2-.12 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-1-.12 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .14 +.13: + LXI H,-1-.12 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.14: + LXI H,-1-.12 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2048 + CALL .lt + JZ .15 + LXI H,2-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + MOV E,M + LXI H,1-.12 + DAD SP + MOV M,E + LXI H,1-.12 + DAD SP + MOV E,M + MVI D,0 + LXI H,255 + CALL .xr + XCHG + LXI H,1-.12 + DAD SP + MOV M,E + LXI H,1-.12 + DAD SP + MOV E,M + PUSH D + LXI H,4-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + POP D + MOV M,E + LXI H,2-.12 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + JMP .13 +.15: + LXI H,-32768 + PUSH H + LXI H,0 + PUSH H + LXI H,64 + PUSH H + CALL vdaini_ + POP D + POP D + POP D + RET +.12 EQU -7 + PUBLIC main_ +main_: lxi d,.16 + call csave + LXI H,1 + XCHG + LXI H,2-.16 + DAD SP + MOV M,E + INX H + MOV M,D +.17: + LXI H,1 + XCHG + LXI H,2-.16 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .eq + JZ .18 + LXI H,1 + SHLD dregbc_ + CALL bdoscall_ + LDA drega_ + MOV L,A + MVI H,0 + JMP .19 +.21: + CALL flip_ + JMP .20 +.22: + LXI H,0 + XCHG + LXI H,2-.16 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .20 +.23: + LXI H,7 + PUSH H + LXI H,.10+0 + PUSH H + CALL printf_ + POP D + POP D + JMP .20 +.19: + CALL .swt + DW 2 + DW 3,.22 + DW 102,.21 + DW .23 +.20: + JMP .17 +.18: + CALL flip_ + RET +.16 EQU -2 +.10: + DB 37,99,0 + extrn printf_ + extrn bdoscall_ + extrn dregbc_ + extrn drega_ + extrn diagnose_ + extrn hreghl_ + extrn hregde_ + extrn hregbc_ + extrn hrega_ + extrn .or + extrn .xr + extrn .eq + extrn .lt + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/EDITOR.C b/branches/wbw/Apps/crossdev/EDITOR.C new file mode 100644 index 00000000..7f3d0d15 --- /dev/null +++ b/branches/wbw/Apps/crossdev/EDITOR.C @@ -0,0 +1,103 @@ +/* editor.c 11/18/2012 dwg - */ + + +#include "std.h" +#include "applvers.h" +#include "diagnose.h" +#include "cpmbdos.h" +#include "cpmbios.h" +#include "bdoscall.h" + + +#define VDA_N8 4 +#define VDAINI 0x40 +#define VDAQRY 0x41 +#define VDARES 0x42 +#define VDASCS 0x43 + + +int vdaini(devunit,vidmode,bitmapp) + unsigned int devunit; + unsigned int vidmode; + unsigned int bitmapp; +{ + hregbc = (VDAINI << 8) | devunit; + hregde = vidmode; + hreghl = bitmapp; + diagnose(); + return hrega; +} + + +bitlook() +{ + unsigned char *p; + int ascii,row; + + p = 0x8000; + for(ascii=0;ascii<256;ascii++) { + printf("ascii = 0x%02x ",ascii); + for(row=0l;row<8;row++) { + printf("0x%02x ",*p++); + } + printf("\n"); + } +} + + +int vdaqry(devunit,bitmapp) + unsigned int devunit; + unsigned int bitmapp; +{ + hregbc = (VDAQRY << 8) | devunit; + hreghl = bitmapp; + diagnose(); + return hrega; +} + + +flip() +{ + unsigned char * p; + unsigned char byte; + int offs; + int retcode; + + retcode = vdaqry(VDA_N8 << 4,0x8000); + + p = 0x8000; + for(offs=0;offs<256*8;offs++) { + byte = *p; + byte = byte ^ 255; + *p = byte; + p++; + } + +/* bitlook(); */ + + vdaini(VDA_N8 << 4, 0, 0x8000); +} + + +int main(argc,argv) + int argc; + char *argv[]; +{ + int bRunning; + + bRunning = 1; + while(1 == bRunning) { + + crtlc ( + dregbc = 1; + bdoscall(); + switch(drega) { + case 'f': flip(); break; + case 3: bRunning = 0; break; + default: printf("%c",7); break; + } + } + + flip(); +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/EDITOR.SUB b/branches/wbw/Apps/crossdev/EDITOR.SUB new file mode 100644 index 00000000..9b86c7f7 --- /dev/null +++ b/branches/wbw/Apps/crossdev/EDITOR.SUB @@ -0,0 +1,6 @@ +cc editor +as editor +as bdoscall +as diagnose +ln editor.o bdoscall.o diagnose.o -lc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/EXTRACT.SUB b/branches/wbw/Apps/crossdev/EXTRACT.SUB new file mode 100644 index 00000000..f069ac44 --- /dev/null +++ b/branches/wbw/Apps/crossdev/EXTRACT.SUB @@ -0,0 +1 @@ +nulu submits.lbr -e $1.sub -x \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FAST.SUB b/branches/wbw/Apps/crossdev/FAST.SUB new file mode 100644 index 00000000..bc12d4ed --- /dev/null +++ b/branches/wbw/Apps/crossdev/FAST.SUB @@ -0,0 +1,4 @@ +cc remote +as remote +ln remote.o bdoscall.o ctermcap.o n8chars.o tms9918.o diagnose.o -lc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FCNTL.H b/branches/wbw/Apps/crossdev/FCNTL.H new file mode 100644 index 00000000..7918b125 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FCNTL.H @@ -0,0 +1,8 @@ +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 +#define O_CREAT 0x0100 +#define O_TRUNC 0x0200 +#define O_EXCL 0x0400 +#define O_APPEND 0x0800 + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FFGETLU.LIB b/branches/wbw/Apps/crossdev/FFGETLU.LIB new file mode 100644 index 00000000..24dad41d --- /dev/null +++ b/branches/wbw/Apps/crossdev/FFGETLU.LIB @@ -0,0 +1,12 @@ +; ffsetlu.lib 1/24/2012 dwg - +ffgetlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2 + dad d + mov a,m + endm +; eof - ffsetlu + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FFHASLU.LIB b/branches/wbw/Apps/crossdev/FFHASLU.LIB new file mode 100644 index 00000000..e9e84b31 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FFHASLU.LIB @@ -0,0 +1,25 @@ +; ffhaslu.lib 1/22/2012 dwg - macro to detect drive with logical unit support + +ffhaslu macro + local ret$false,fini + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m ; pick up first sig byte which s/b 'L' + cpi 'L' + jnz ret$false ; if it wasn't, indicate to caller no LU + inx h ; bump ptr to 2nd signature byte + mov a,m ; pick up second sig byte which s/b 'U' + cpi 'U' + jnz ret$false ; if it wasn't, indicate to caller no LU + mvi a,TRUE ; otherwise indicate presence of LU support + jmp fini ; finish up macro +ret$false: + mvi a,FALSE ; prepare negative response for caller +fini: + endm + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FFNUMLU.LIB b/branches/wbw/Apps/crossdev/FFNUMLU.LIB new file mode 100644 index 00000000..1f1048a5 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FFNUMLU.LIB @@ -0,0 +1,13 @@ +; ffnumlu.lib 1/22/2012 dwg - macro to get number of logical units + +ffnumlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2+2 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m + endm + +; eof - ffnumlu.lib diff --git a/branches/wbw/Apps/crossdev/FFSETLU.LIB b/branches/wbw/Apps/crossdev/FFSETLU.LIB new file mode 100644 index 00000000..fe1db586 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FFSETLU.LIB @@ -0,0 +1,22 @@ +; ffsetlu.lib 2/12/2012 dwg - review for use in superfmt +; ffsetlu.lib 1/24/2012 dwg - + +; enter with desired LU in A reg +ffsetlu macro + enter + push psw + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK ; uses c parameter (drive) + lxi d,16+2 + dad d + pop psw + mov m,a ; put slice into CURRENT + mvi c,13 + call BDOS + leave + endm + +; eof - ffsetlu + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FINDFILE.ASM b/branches/wbw/Apps/crossdev/FINDFILE.ASM new file mode 100644 index 00000000..d8ceb21a --- /dev/null +++ b/branches/wbw/Apps/crossdev/FINDFILE.ASM @@ -0,0 +1,1088 @@ +; findfile.asm 7/21/2012 dwg - added keystroke scan terminate +; findfile.asm 7/19/2012 dwg - for 2.0.0.0 B22 +; findfile.asm 2/20.2012 dwg - add RESET$DISK before exit for ZDOS +; findfile.asm 2/17/2012 dwg - review for release 1.5.1.0 +; findfile.asm 2/11/2012 dwg - make ident compliant +; findfile.asm 1/30/2012 dwg - use new do$start and do$end macros +; findfile.asm 1/22/2012 dwg - find a file on any slice + +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . + + maclib portab + maclib globals + maclib stdlib + maclib cpmbios + maclib cpmbdos + maclib bioshdr + maclib printers + maclib banner + maclib terminal + maclib applvers + maclib version +; maclib ffhaslu +; maclib ffnumlu +; maclib ffsetlu +; maclib ffgetlu +; maclib z80 +; maclib memory +; maclib cpmappl +; maclib identity + +; identity.lib 2/19/2012 dwg - add ify macro +; identity.lib 2/17/2012 dwg - Program Identity Declarations + + extrn x$ident + +ident macro file1fcb + lxi h,file1fcb + call x$ident + endm + +ify macro progname,bool + local done + local file + local fini + ident file + jmp fini + newfcb file,0,progname +fini: mvi a,bool + cpi TRUE + jnz done + conout CR + conout LF +done: + endm + + +identx macro file1fcb + local openok + local identend + + local ldrive,lcolon,lname,ldot,lext,lterm + + mvi c,FOPEN + lxi d,file1fcb + call BDOS + cpi 255 + jnz openok + + memcpy lname,file1fcb+1,8 + mvi a,',' + sta ldot + memcpy lext,file1fcb+9,3 + mvi a,'$' + sta lterm + print lname + printf ' -- File Not Found' + jmp identend +openok: + + mvi c,SETDMA + lxi d,buffer + call BDOS + + mvi c,READSEQ + lxi d,file1fcb + call BDOS + + mvi c,FCLOSE + lxi d,file1fcb + call BDOS + + lxi d,d$prog + mvi c,9 + call BDOS + + conout ',' + conout ' ' + lda p$rmj + mov l,a + mvi h,0 + call pr$d$word + conout '.' + lda p$rmn + mov l,a + call pr$d$word + conout '.' + lda p$rup + mov l,a + call pr$d$word + conout '.' + lda p$rtp + mov l,a + call pr$d$word + conout ',' + conout ' ' + + lda p$mon + mov l,a + call pr$d$word + conout '/' + lda p$day + mov l,a + call pr$d$word + conout '/' + lhld p$year + call pr$d$word + conout ',' + conout ' ' + + lxi d,d$prod + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$orig + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$ser + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$name + mvi c,9 + call BDOS + jmp identend + +ldrive ds 1 +lcolon ds 1 +lname ds 8 +ldot ds 1 +lext ds 3 +lterm ds 1 + +identend: + endm + +idata macro + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'IDENT.COM $' + date + serial + product + originator + oriname +uuid db '777A67C2-4A92-42D4-80FE-C96FD6483BD2$' + db 'buffer-->' + public buffer,p$start,p$hexrf,p$sig + public p$rmj,p$rmn,p$rup,p$rtp + public p$mon,p$day,p$year +buffer ds 1 +p$start ds 2 +p$hexrf ds 16 +p$sig ds 2 +p$rmj ds 1 +p$rmn ds 1 +p$rup ds 1 +p$rtp ds 1 +p$mon ds 1 +p$day ds 1 +p$year ds 2 +p$argv ds 2 +p$e5 ds 1 +p$pr$st ds 2 +p$code1 ds 3 ; begin: lxi h,0 +p$code2 ds 1 ; dad sp +p$code3 ds 3 ; shld pre$stk +p$code4 ds 3 ; lxi sp,stack$top +p$code5 ds 1 ; nop +p$code6 ds 3 ; jmp around$bandata +p$prog ds 2 ; dw prog +p$dat ds 2 ; dw dat +p$prod ds 2 ; dw prod +p$orig ds 2 ; dw orig +p$ser ds 2 ; dw ser +p$nam ds 2 ; dw nam +p$term ds 2 ; dw 0 +d$prog ds 8+1+3+1 ; db '12345678.123$' +d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$' +d$ser ds 6+1 ; db '654321$' +d$prod ds 5+1 ; db 'CPM80$' +d$orig ds 3+1 ; db 'DWG$' +d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$' +d$uuid ds 37 ; unique user identification +d$term2 ds 1 ; can be set to zero or dollar sign +p$len equ $-buffer +p$rsvd ds 128-p$len + db '<--buffer' +crlf db CR,LF,'$' +around$bandata: + + endm + +; eof - identity.lib + + + +; cpmappl.lib 2/10/2012 dwg - begin 1.6 development +; cpmappl.lib 2/04/2012 dwg - fix typo mov becomes mvi +; cpmappl.lib 2/ 2/2012 dwg - initial version + +; +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . +; + +do$start macro + +start: jmp begin + + public hexref +hexref db '0123456789ABCDEF' + + public id$sig,id$rmj,id$rmn,id$rup,id$rtp,id$mon,id$day,id$yr +id$sig db 'ID' +id$rmj db A$RMJ +id$rmn db A$RMN +id$rup db A$RUP +id$rtp db A$RTP +id$mon db A$MONTH +id$day db A$DAY +id$yr dw A$YEAR +id$argv dw argv + db 0e5h + + + public pre$stk +pre$stk ds 2 + + public begin +begin: lxi h,0 + dad sp + shld pre$stk + lxi sp,stack$top + nop + endm + + +;--------------------------------- + + +do$end macro + lhld pre$stk + sphl + + mvi c,13 + call BDOS + + ret + ds stack$size +stack$top: + + endm + +movfcb macro destn,source + lxi d,destn + lxi h,source + lxi b,LENFCB + ldir + endm + +copyfcb macro fcbname,source + local around + jmp around +fcbname ds 32 +around: + endm + + +; memory.lib 2/17/2012 dwg - review for release 1.5.1.0 +; memory.lib 2/11/2012 dwg - review for release 1.5 +; memory.lib 2/04/2012 dwg - adjust for new macros +; memory.lib 1/13/2012 dwg - POSIX memcpy and memset + + extrn x$memcpy + extrn x$memset + +memcpy macro dst,src,siz + lxi d,dst ; load 1st positional parameter into reg + lxi h,src ; load 2nd positional parameter into reg + lxi b,siz ; load 3rd positional parameter into reg + call x$memcpy ; call actual routine in see memory.asm + endm + +memset macro dst,data,siz + lxi h,dst ; load 1st positional parameter into reg + mvi a,data ; load 2nd positional parameter into reg + lxi b,siz ; load 3rd positional parameter into reg + call x$memset ; call actual routine in see memory.asm + endm + +; eof - memory.lib + + +; @CHK MACRO USED FOR CHECKING 8 BIT DISPLACMENTS +; +@CHK MACRO ?DD ;; USED FOR CHECKING RANGE OF 8-BIT DISP.S + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + 'DISPLACEMENT RANGE ERROR - Z80 LIB' + ENDIF + ENDM +LDX MACRO ?R,?D + @CHK ?D + DB 0DDH,?R*8+46H,?D + ENDM +LDY MACRO ?R,?D + @CHK ?D + DB 0FDH,?R*8+46H,?D + ENDM +STX MACRO ?R,?D + @CHK ?D + DB 0DDH,70H+?R,?D + ENDM +STY MACRO ?R,?D + @CHK ?D + DB 0FDH,70H+?R,?D + ENDM +MVIX MACRO ?N,?D + @CHK ?D + DB 0DDH,36H,?D,?N + ENDM +MVIY MACRO ?N,?D + @CHK ?D + DB 0FDH,36H,?D,?N + ENDM +LDAI MACRO + DB 0EDH,57H + ENDM +LDAR MACRO + DB 0EDH,5FH + ENDM +STAI MACRO + DB 0EDH,47H + ENDM +STAR MACRO + DB 0EDH,4FH + ENDM + +LXIX MACRO ?NNNN + DB 0DDH,21H + DW ?NNNN + ENDM +LXIY MACRO ?NNNN + DB 0FDH,21H + DW ?NNNN + ENDM +LDED MACRO ?NNNN + DB 0EDH,5BH + DW ?NNNN + ENDM +LBCD MACRO ?NNNN + DB 0EDH,4BH + DW ?NNNN + ENDM +LSPD MACRO ?NNNN + DB 0EDH,07BH + DW ?NNNN + ENDM +LIXD MACRO ?NNNN + DB 0DDH,2AH + DW ?NNNN + ENDM +LIYD MACRO ?NNNN + DB 0FDH,2AH + DW ?NNNN + ENDM +SBCD MACRO ?NNNN + DB 0EDH,43H + DW ?NNNN + ENDM +SDED MACRO ?NNNN + DB 0EDH,53H + DW ?NNNN + ENDM +SSPD MACRO ?NNNN + DB 0EDH,73H + DW ?NNNN + ENDM +SIXD MACRO ?NNNN + DB 0DDH,22H + DW ?NNNN + ENDM +SIYD MACRO ?NNNN + DB 0FDH,22H + DW ?NNNN + ENDM +SPIX MACRO + DB 0DDH,0F9H + ENDM +SPIY MACRO + DB 0FDH,0F9H + ENDM +PUSHIX MACRO + DB 0DDH,0E5H + ENDM +PUSHIY MACRO + DB 0FDH,0E5H + ENDM +POPIX MACRO + DB 0DDH,0E1H + ENDM +POPIY MACRO + DB 0FDH,0E1H + ENDM +EXAF MACRO + DB 08H + ENDM +EXX MACRO + DB 0D9H + ENDM +XTIX MACRO + DB 0DDH,0E3H + ENDM +XTIY MACRO + DB 0FDH,0E3H + ENDM + +LDI MACRO + DB 0EDH,0A0H + ENDM +LDIR MACRO + DB 0EDH,0B0H + ENDM +LDD MACRO + DB 0EDH,0A8H + ENDM +LDDR MACRO + DB 0EDH,0B8H + ENDM +CCI MACRO + DB 0EDH,0A1H + ENDM +CCIR MACRO + DB 0EDH,0B1H + ENDM +CCD MACRO + DB 0EDH,0A9H + ENDM +CCDR MACRO + DB 0EDH,0B9H + ENDM + +ADDX MACRO ?D + @CHK ?D + DB 0DDH,86H,?D + ENDM +ADDY MACRO ?D + @CHK ?D + DB 0FDH,86H,?D + ENDM +ADCX MACRO ?D + @CHK ?D + DB 0DDH,8EH,?D + ENDM +ADCY MACRO ?D + @CHK ?D + DB 0FDH,8EH,?D + ENDM +SUBX MACRO ?D + @CHK ?D + DB 0DDH,96H,?D + ENDM +SUBY MACRO ?D + @CHK ?D + DB 0FDH,96H,?D + ENDM +SBCX MACRO ?D + @CHK ?D + DB 0DDH,9EH,?D + ENDM +SBCY MACRO ?D + @CHK ?D + DB 0FDH,9EH,?D + ENDM +ANDX MACRO ?D + @CHK ?D + DB 0DDH,0A6H,?D + ENDM +ANDY MACRO ?D + @CHK ?D + DB 0FDH,0A6H,?D + ENDM +XORX MACRO ?D + @CHK ?D + DB 0DDH,0AEH,?D + ENDM +XORY MACRO ?D + @CHK ?D + DB 0FDH,0AEH,?D + ENDM +ORX MACRO ?D + @CHK ?D + DB 0DDH,0B6H,?D + ENDM +ORY MACRO ?D + @CHK ?D + DB 0FDH,0B6H,?D + ENDM +CMPX MACRO ?D + @CHK ?D + DB 0DDH,0BEH,?D + ENDM +CMPY MACRO ?D + @CHK ?D + DB 0FDH,0BEH,?D + ENDM +INRX MACRO ?D + @CHK ?D + DB 0DDH,34H,?D + ENDM +INRY MACRO ?D + @CHK ?D + DB 0FDH,34H,?D + ENDM +DCRX MACRO ?D + @CHK ?D + DB 0DDH,035H,?D + ENDM +DCRY MACRO ?D + @CHK ?D + DB 0FDH,35H,?D + ENDM + +NEG MACRO + DB 0EDH,44H + ENDM +IM0 MACRO + DB 0EDH,46H + ENDM +IM1 MACRO + DB 0EDH,56H + ENDM +IM2 MACRO + DB 0EDH,5EH + ENDM + + +BC EQU 0 +DE EQU 2 +HL EQU 4 +IX EQU 4 +IY EQU 4 +DADC MACRO ?R + DB 0EDH,?R*8+4AH + ENDM +DSBC MACRO ?R + DB 0EDH,?R*8+42H + ENDM +DADX MACRO ?R + DB 0DDH,?R*8+09H + ENDM +DADY MACRO ?R + DB 0FDH,?R*8+09H + ENDM +INXIX MACRO + DB 0DDH,23H + ENDM +INXIY MACRO + DB 0FDH,23H + ENDM +DCXIX MACRO + DB 0DDH,2BH + ENDM +DCXIY MACRO + DB 0FDH,2BH + ENDM + +BIT MACRO ?N,?R + DB 0CBH,?N*8+?R+40H + ENDM +SETB MACRO ?N,?R + DB 0CBH,?N*8+?R+0C0H + ENDM +RES MACRO ?N,?R + DB 0CBH,?N*8+?R+80H + ENDM + +BITX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+46H + ENDM +BITY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+46H + ENDM +SETX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+0C6H + ENDM +SETY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+0C6H + ENDM +RESX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+86H + ENDM +RESY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+86H + ENDM + +JR MACRO ?N + DB 18H,?N-$-1 + ENDM +JRC MACRO ?N + DB 38H,?N-$-1 + ENDM +JRNC MACRO ?N + DB 30H,?N-$-1 + ENDM +JRZ MACRO ?N + DB 28H,?N-$-1 + ENDM +JRNZ MACRO ?N + DB 20H,?N-$-1 + ENDM +DJNZ MACRO ?N + DB 10H,?N-$-1 + ENDM + +PCIX MACRO + DB 0DDH,0E9H + ENDM +PCIY MACRO + DB 0FDH,0E9H + ENDM + +RETI MACRO + DB 0EDH,4DH + ENDM +RETN MACRO + DB 0EDH,45H + ENDM + +INP MACRO ?R + DB 0EDH,?R*8+40H + ENDM +OUTP MACRO ?R + DB 0EDH,?R*8+41H + ENDM +INI MACRO + DB 0EDH,0A2H + ENDM +INIR MACRO + DB 0EDH,0B2H + ENDM +IND MACRO + DB 0EDH,0AAH + ENDM +INDR MACRO + DB 0EDH,0BAH + ENDM +OUTI MACRO + DB 0EDH,0A3H + ENDM +OUTIR MACRO + DB 0EDH,0B3H + ENDM +OUTD MACRO + DB 0EDH,0ABH + ENDM +OUTDR MACRO + DB 0EDH,0BBH + ENDM + + +RLCR MACRO ?R + DB 0CBH, 00H + ?R + ENDM +RLCX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 06H + ENDM +RLCY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 06H + ENDM +RALR MACRO ?R + DB 0CBH, 10H+?R + ENDM +RALX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 16H + ENDM +RALY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 16H + ENDM +RRCR MACRO ?R + DB 0CBH, 08H + ?R + ENDM +RRCX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 0EH + ENDM +RRCY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 0EH + ENDM +RARR MACRO ?R + DB 0CBH, 18H + ?R + ENDM +RARX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 1EH + ENDM +RARY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 1EH + ENDM +SLAR MACRO ?R + DB 0CBH, 20H + ?R + ENDM +SLAX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 26H + ENDM +SLAY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 26H + ENDM +SRAR MACRO ?R + DB 0CBH, 28H+?R + ENDM +SRAX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 2EH + ENDM +SRAY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 2EH + ENDM +SRLR MACRO ?R + DB 0CBH, 38H + ?R + ENDM +SRLX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 3EH + ENDM +SRLY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 3EH + ENDM +RLD MACRO + DB 0EDH, 6FH + ENDM +RRD MACRO + DB 0EDH, 67H + ENDM + +; ffsetlu.lib 1/24/2012 dwg - +ffgetlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2 + dad d + mov a,m + endm +; eof - ffsetlu + + +; ffsetlu.lib 2/12/2012 dwg - review for use in superfmt +; ffsetlu.lib 1/24/2012 dwg - + +; enter with desired LU in A reg +ffsetlu macro + enter + push psw + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK ; uses c parameter (drive) + lxi d,16+2 + dad d + pop psw + mov m,a ; put slice into CURRENT + mvi c,13 + call BDOS + leave + endm + +; eof - ffsetlu + + +; ffhaslu.lib 1/22/2012 dwg - macro to detect drive with logical unit support + +ffhaslu macro + local ret$false,fini + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m ; pick up first sig byte which s/b 'L' + cpi 'L' + jnz ret$false ; if it wasn't, indicate to caller no LU + inx h ; bump ptr to 2nd signature byte + mov a,m ; pick up second sig byte which s/b 'U' + cpi 'U' + jnz ret$false ; if it wasn't, indicate to caller no LU + mvi a,TRUE ; otherwise indicate presence of LU support + jmp fini ; finish up macro +ret$false: + mvi a,FALSE ; prepare negative response for caller +fini: + endm + + + +; ffnumlu.lib 1/22/2012 dwg - macro to get number of logical units + +ffnumlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2+2 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m + endm + +; eof - ffnumlu.lib + + + +prfilnam macro fcb + local fnbuf,fnext,prfnfini + memcpy fnbuf,fcb+1,8 + memcpy fnext,fcb+9,3 + + lda fnext + ani 07fh + sta fnext + + lda fnext+1 + ani 07fh + sta fnext+1 + + lda fnext+2 + ani 07fh + sta fnext+2 + + mvi c,9 + lxi d,fnbuf + call BDOS + + jmp prfnfini + +fnbuf db 0,0,0,0,0,0,0,0 + db '.' +fnext db 0,0,0,' $' +prfnfini: + endm + + + do$start + + + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'FINDFILE.COM$' + date + serial + product + originator + oriname +uuid db '107CDD27-2E4D-4340-A324-BEB13054E67B$' +around$bandata: + + + crtinit + crtclr + crtlc 1,1 + sbanner argv +; version wrnmsg,errmsg + + lda 80h + cpi 0 + jnz no$usage + print crlf + printf 'usage - findfile ' + jmp all$done +no$usage: + + + memcpy work$fcb,PRIFCB,32 + + printf 'Finding: ' + memcpy PRIFCB,work$fcb,16 + + mvi a,'$' + sta PRIFCB+9 + print PRIFCB+1 + conout '.' + memcpy PRIFCB,work$fcb,16 + mvi a,'$' + sta PRIFCB+12 + print PRIFCB+9 + print crlf + + ffhaslu + cpi TRUE + jz do$lu + memcpy PRIFCB,work$fcb,32 + mvi c,FOPEN + lxi d,PRIFCB + call BDOS + cpi 255 + jnz single$true + jmp all$done +single$true: + printf 'Found' + jmp all$done + +do$lu: + ffgetlu + sta entry$lu + ; + ffnumlu + sta lu$cnt + ; + mov l,a + mvi h,0 + call pr$d$word + printf ' Logical Units Detected' + print crlf + + mvi a,0 + sta lu$num +loop: + printf 'Scanning Logical Unit ' + lda lu$num + mov l,a + mvi h,0 + call pr$d$word + conout ' ' + + ; set the Logical Unit + lda lu$num + ffsetlu + + ; test for the target file + memcpy PRIFCB,work$fcb,32 + mvi c,FOPEN + lxi d,PRIFCB + call BDOS + sta retcode + + lda retcode + cpi 255 + jz not$yet + conout CR + prfilnam PRIFCB + printf ' ' + printf 'Found on Logical Unit ' + lda lu$num + mov l,a + mvi h,0 + call pr$d$word + conout ',' + conout '(' + lda drv$num + mov c,a + call BISELDSK + lxi b,0 + call BISETTRK + lxi b,11 + call BISETSEC + lxi b,buffer + call BISETDMA + call BIREAD + + mvi a,'$' + sta buffer+128-8-1 + print buffer+128-8-1-16 + conout ')' + + mvi c,FCLOSE + lxi d,PRIFCB + call BDOS + conout LF +not$yet: + conout CR + + ; Check for key hit interrupt scan + mvi c,11 ; get console status + caLL BDOS + cpi 0 + jz nyok ; jump if no key hit + jmp abort ; gracefully exit loop +nyok: + + + lda lu$num + inr a + sta lu$num + ; + lda lu$cnt + dcr a + sta lu$cnt + cpi 0 + jnz loop + + printf ' ' + +abort: conout cr + printf 'Scan Completed ' + +all$done: + lda entry$lu + ffsetlu + + mvi c,RESET$DRIVE ; call to logout drive + lxi d,0ffh + call BDOS + + do$end + + +wrnmsg db 'By the way, this program is newer than the BIOS$' + +errmsg db 'Sorry, this program requires a newer BIOS$' + +crlf db CR,LF +term db '$' + +drv$num ds 1 ; drive code of current drive +lu$cnt ds 1 ; number of slices on drive +lu$num ds 1 ; slice index +entry$lu ds 1 +retcode ds 1 + +work$fcb ds 64 +buffer ds 80h + + + end start diff --git a/branches/wbw/Apps/crossdev/FINDFILE.BAK b/branches/wbw/Apps/crossdev/FINDFILE.BAK new file mode 100644 index 00000000..7d480a47 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FINDFILE.BAK @@ -0,0 +1,12 @@ +rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +if not exist findfile.rel z80mu rmac findfile +if not exist printers.rel z80mu rmac printers +if not exist terminal.rel z80mu rmac terminal +if not exist memory.rel z80mu rmac memory +if not exist banner.rel z80mu rmac banner +if not exist identity.rel z80mu rmac identity +if not exist hbios.rel z80mu rmac hbios +if not exist findfile.cpm z80mu link findfile,hbios,identity,banner,memory,printers,terminal +if not exist findfile.cpm copy findfile.com findfile.cpm +dir findfile.cpm + diff --git a/branches/wbw/Apps/crossdev/FINDFILE.BAT b/branches/wbw/Apps/crossdev/FINDFILE.BAT new file mode 100644 index 00000000..7d480a47 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FINDFILE.BAT @@ -0,0 +1,12 @@ +rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +if not exist findfile.rel z80mu rmac findfile +if not exist printers.rel z80mu rmac printers +if not exist terminal.rel z80mu rmac terminal +if not exist memory.rel z80mu rmac memory +if not exist banner.rel z80mu rmac banner +if not exist identity.rel z80mu rmac identity +if not exist hbios.rel z80mu rmac hbios +if not exist findfile.cpm z80mu link findfile,hbios,identity,banner,memory,printers,terminal +if not exist findfile.cpm copy findfile.com findfile.cpm +dir findfile.cpm + diff --git a/branches/wbw/Apps/crossdev/FINDFILE.COM b/branches/wbw/Apps/crossdev/FINDFILE.COM new file mode 100644 index 00000000..44f2a480 Binary files /dev/null and b/branches/wbw/Apps/crossdev/FINDFILE.COM differ diff --git a/branches/wbw/Apps/crossdev/FINDFILE.CPM b/branches/wbw/Apps/crossdev/FINDFILE.CPM new file mode 100644 index 00000000..44f2a480 Binary files /dev/null and b/branches/wbw/Apps/crossdev/FINDFILE.CPM differ diff --git a/branches/wbw/Apps/crossdev/FINDFILE.REL b/branches/wbw/Apps/crossdev/FINDFILE.REL new file mode 100644 index 00000000..cc901d12 Binary files /dev/null and b/branches/wbw/Apps/crossdev/FINDFILE.REL differ diff --git a/branches/wbw/Apps/crossdev/FINDFILE.SUB b/branches/wbw/Apps/crossdev/FINDFILE.SUB new file mode 100644 index 00000000..f5e8e754 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FINDFILE.SUB @@ -0,0 +1,13 @@ +e:rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +era *.bak +era *.prn +rasm80 findfile +rasm80 printers +rasm80 terminal +rasm80 memory +rasm80 banner +rasm80 identity +rasm80 hbios +link80 findfile,hbios,identity,banner,memory,printers,terminal + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FINDFILE.SYM b/branches/wbw/Apps/crossdev/FINDFILE.SYM new file mode 100644 index 00000000..1fb9e6ac --- /dev/null +++ b/branches/wbw/Apps/crossdev/FINDFILE.SYM @@ -0,0 +1,10 @@ +0103 HEXREF 0113 IDSIG 0115 IDRMJ 0116 IDRMN +0117 IDRUP 0118 IDRTP 0119 IDMON 011A IDDAY +011B IDYR 0120 PRESTK 0122 BEGIN 10A6 PRDWOR +107E PRHBYT 1093 PRHWOR 0C2B XBANNE 0ED6 XSBANN +1117 XCRTIN 11B1 XCRTLC 1122 XCRTCL 08EE XIDENT +105A XMEMCP 105B XMEMSE 08E2 XGETSC 1068 PRHNYB +10B2 PDEC 10D4 PDEC1 10D6 PDEC2 10F2 PDEC3 +146C PDEC4 146D PDEC5 1109 XPRDEC 1271 DR + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FLIP.ASM b/branches/wbw/Apps/crossdev/FLIP.ASM new file mode 100644 index 00000000..bfd5cb5b --- /dev/null +++ b/branches/wbw/Apps/crossdev/FLIP.ASM @@ -0,0 +1,428 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC vdaini_ +vdaini_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16384 + CALL .or + SHLD hregbc_ + LHLD hregbc_ + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hregde_ + LHLD hregde_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + LHLD hreghl_ + PUSH H + LXI H,.1+34 + PUSH H + CALL printf_ + POP D + POP D + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,.1+51 + PUSH H + CALL printf_ + POP D + POP D + LDA hrega_ + MOV L,A + MVI H,0 + RET +.2 EQU 0 +.1: + DB 104,114,101,103,98,99,32,61,32,48,120,37,48,52,120 + DB 10,0,104,114,101,103,100,101,32,61,32,48,120,37,48 + DB 52,120,10,0,104,114,101,103,104,108,32,61,32,48,120 + DB 37,48,52,120,10,0,86,68,65,73,78,73,32,99,97 + DB 108,108,101,100,44,32,114,101,116,117,114,110,32,99,111 + DB 100,101,32,119,97,115,32,48,120,37,48,50,120,10,0 + PUBLIC bitlook_ +bitlook_: lxi d,.4 + call csave + LXI H,-32768 + XCHG + LXI H,2-.4 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .6 +.5: + LXI H,0-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.6: + LXI H,0-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,256 + CALL .lt + JZ .7 + LXI H,0-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.3+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-2-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .9 +.8: + LXI H,-2-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.9: + LXI H,-2-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + CALL .lt + JZ .10 + LXI H,2-.4 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,.3+16 + PUSH H + CALL printf_ + POP D + POP D + JMP .8 +.10: + LXI H,.3+24 + PUSH H + CALL printf_ + POP D + JMP .5 +.7: + RET +.4 EQU -6 +.3: + DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32 + DB 0,48,120,37,48,50,120,32,0,10,0 + PUBLIC vdaqry_ +vdaqry_: lxi d,.12 + call csave + LXI H,8-.12 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16640 + CALL .or + SHLD hregbc_ + LHLD hregbc_ + PUSH H + LXI H,.11+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,10-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + LHLD hreghl_ + LXI D,-32768 + CALL .ne + JZ .13 + LXI H,.11+17 + PUSH H + CALL printf_ + POP D +.13: + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,.11+43 + PUSH H + CALL printf_ + POP D + POP D + LHLD hregbc_ + LXI D,255 + CALL .an + PUSH H + LXI H,.11+83 + PUSH H + CALL printf_ + POP D + POP D + LHLD hregde_ + LXI D,8 + XCHG + CALL .ur + PUSH H + LHLD hregde_ + LXI D,8 + XCHG + CALL .ur + PUSH H + LXI H,.11+123 + PUSH H + CALL printf_ + POP D + POP D + POP D + LHLD hregde_ + LXI D,255 + CALL .an + PUSH H + LHLD hregde_ + LXI D,255 + CALL .an + PUSH H + LXI H,.11+167 + PUSH H + CALL printf_ + POP D + POP D + POP D + LDA hrega_ + MOV L,A + MVI H,0 + RET +.12 EQU 0 +.11: + DB 104,114,101,103,98,99,32,61,32,48,120,37,48,52,120 + DB 10,0,118,100,97,113,114,121,32,115,97,121,115,32,104 + DB 108,32,33,61,32,48,120,56,48,48,48,10,0,86,68 + DB 65,81,82,89,32,99,97,108,108,101,100,44,32,115,116 + DB 97,116,117,115,32,32,32,32,32,32,32,119,97,115,32 + DB 48,120,37,48,50,120,10,0,32,32,32,32,32,32,32 + DB 32,32,32,32,32,32,32,32,118,105,100,101,111,32,109 + DB 111,100,101,32,32,32,119,97,115,32,48,120,37,48,50 + DB 120,10,0,32,32,32,32,32,32,32,32,32,32,32,32 + DB 32,32,32,114,111,119,32,99,111,117,110,116,32,32,32 + DB 32,119,97,115,32,48,120,37,48,50,120,40,37,100,41 + DB 10,0,32,32,32,32,32,32,32,32,32,32,32,32,32 + DB 32,32,99,111,108,117,109,110,32,99,111,117,110,116,32 + DB 119,97,115,32,48,120,37,48,50,120,40,37,100,41,10 + DB 0 + PUBLIC main_ +main_: lxi d,.15 + call csave + LXI H,.14+0 + PUSH H + CALL printf_ + POP D + LXI H,-32768 + PUSH H + LXI H,64 + PUSH H + CALL vdaqry_ + POP D + POP D + XCHG + LXI H,-3-.15 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-32768 + XCHG + LXI H,2-.15 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-1-.15 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .17 +.16: + LXI H,-1-.15 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.17: + LXI H,-1-.15 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2048 + CALL .lt + JZ .18 + LXI H,2-.15 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + MOV E,M + LXI H,1-.15 + DAD SP + MOV M,E + LXI H,1-.15 + DAD SP + MOV E,M + MVI D,0 + LXI H,255 + CALL .xr + XCHG + LXI H,1-.15 + DAD SP + MOV M,E + LXI H,1-.15 + DAD SP + MOV E,M + PUSH D + LXI H,4-.15 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + POP D + MOV M,E + LXI H,2-.15 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D + JMP .16 +.18: + LXI H,-32768 + PUSH H + LXI H,0 + PUSH H + LXI H,64 + PUSH H + CALL vdaini_ + POP D + POP D + POP D + RET +.15 EQU -7 +.14: + DB 102,108,105,112,46,99,111,109,40,99,41,32,49,49,47 + DB 49,53,47,50,48,49,50,32,100,119,103,32,45,32,10 + DB 10,0 + extrn printf_ + extrn diagnose_ + extrn hreghl_ + extrn hregde_ + extrn hregbc_ + extrn hrega_ + extrn .or + extrn .xr + extrn .an + extrn .ne + extrn .lt + extrn .ur + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FLIP.C b/branches/wbw/Apps/crossdev/FLIP.C new file mode 100644 index 00000000..bb740907 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FLIP.C @@ -0,0 +1,98 @@ +/* flip.c 11/17/2012 dwg - reverse the contrast */ + +#include "std.h" +#include "applvers.h" +#include "diagnose.h" + +#define VDA_N8 4 +#define VDAINI 0x40 +#define VDAQRY 0x41 +#define VDARES 0x42 +#define VDASCS 0x43 + +int vdaini(devunit,vidmode,bitmapp) + unsigned int devunit; + unsigned int vidmode; + unsigned int bitmapp; +{ + hregbc = (VDAINI << 8) | devunit; + printf("hregbc = 0x%04x\n",hregbc); + hregde = vidmode; + printf("hregde = 0x%04x\n",hregde); + hreghl = bitmapp; + printf("hreghl = 0x%04x\n",hreghl); + diagnose(); + printf("VDAINI called, return code was 0x%02x\n",hrega); + return hrega; +} + +bitlook() +{ + unsigned char *p; + int ascii,row; + + p = 0x8000; + for(ascii=0;ascii<256;ascii++) { + printf("ascii = 0x%02x ",ascii); + for(row=0l;row<8;row++) { + printf("0x%02x ",*p++); + } + printf("\n"); + } +} + +int vdaqry(devunit,bitmapp) + unsigned int devunit; + unsigned int bitmapp; +{ + hregbc = (VDAQRY << 8) | devunit; + printf("hregbc = 0x%04x\n",hregbc); + hreghl = bitmapp; + + if(hreghl != 0x8000) printf("vdaqry says hl != 0x8000\n"); + + diagnose(); + printf("VDAQRY called, status was 0x%02x\n",hrega); + printf(" video mode was 0x%02x\n",hregbc & 255); + printf(" row count was 0x%02x(%d)\n", + (hregde >> 8),(hregde >> 8) ); + printf(" column count was 0x%02x(%d)\n", + hregde & 255, hregde & 255); + +/* if(0 != bitmapp) { + printf("vdaqry called with bitmap pointer\n"); + bitlook(); + } +*/ + + return hrega; +} + + +int main(argc,argv) + int argc; + char *argv[]; +{ + unsigned char * p; + unsigned char byte; + int offs; + int retcode; + + printf("flip.com(c) 11/15/2012 dwg - \n\n"); + + retcode = vdaqry(VDA_N8 << 4,0x8000); + + p = 0x8000; + for(offs=0;offs<256*8;offs++) { + byte = *p; + byte = byte ^ 255; + *p = byte; + p++; + } + +/* bitlook(); */ + + vdaini(VDA_N8 << 4, 0, 0x8000); +} + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FLIP.SUB b/branches/wbw/Apps/crossdev/FLIP.SUB new file mode 100644 index 00000000..ab25bd36 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FLIP.SUB @@ -0,0 +1,5 @@ +cc flip +as flip +as diagnose +ln flip.o diagnose.o -lc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FORM.ASM b/branches/wbw/Apps/crossdev/FORM.ASM new file mode 100644 index 00000000..e2f63568 --- /dev/null +++ b/branches/wbw/Apps/crossdev/FORM.ASM @@ -0,0 +1,646 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pDPHMAP_,2 + global pDPHVEC_,16 + DSEG + public pSYSCFG_ +pSYSCFG_: + DW -16384 + CSEG + DSEG + public form_ +form_: + DW 6 + DW 3 + DW 6 + DB 102 + DB 105 + DB 101 + DB 108 + DB 100 + DB 49 + DB 0 + DW 6 + DW 13 + DB 100 + DB 101 + DB 102 + DB 97 + DB 117 + DB 108 + DB 116 + DB 49 + DB 0 + ds 24 + DW 7 + DW 3 + DW 6 + DB 102 + DB 105 + DB 101 + DB 108 + DB 100 + DB 50 + DB 0 + DW 7 + DW 13 + DB 100 + DB 101 + DB 102 + DB 97 + DB 117 + DB 108 + DB 116 + DB 50 + DB 0 + ds 24 + CSEG + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,.1+0 + PUSH H + CALL banner_ + POP D + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,2-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.4: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .5 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+2 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_ + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+6 + DAD D + PUSH H + LXI H,.1+5 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .7 +.6: + LXI H,0-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.7: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strlen_ + POP D + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .lt + JZ .8 + LXI H,.1+8 + PUSH H + CALL printf_ + POP D + JMP .6 +.8: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + LXI H,.1+10 + PUSH H + CALL printf_ + POP D + POP D + JMP .3 +.5: + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .10 +.9: + LXI H,2-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.10: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .11 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,34 + PUSH H + LXI H,0 + PUSH H + LXI H,-30-.2 + DAD SP + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,10 + SHLD dregbc_ + LXI H,-34-.2 + DAD SP + SHLD dregde_ + LXI H,31 + XCHG + LXI H,-34-.2 + DAD SP + MOV M,E + LXI H,0 + XCHG + LXI H,-33-.2 + DAD SP + MOV M,E + CALL bdoscall_ + LXI H,-33-.2 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,0 + POP D + XCHG + CALL .lt + JZ .12 + LXI H,32 + PUSH H + LXI H,0 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,-32-.2 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strcpy_ + POP D + POP D +.12: + JMP .9 +.11: + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .14 +.13: + LXI H,2-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.14: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .15 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+2 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_ + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+6 + DAD D + PUSH H + LXI H,.1+13 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .17 +.16: + LXI H,0-.2 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.17: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strlen_ + POP D + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .lt + JZ .18 + LXI H,.1+16 + PUSH H + CALL printf_ + POP D + JMP .16 +.18: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + LXI H,.1+18 + PUSH H + CALL printf_ + POP D + POP D + JMP .13 +.15: + RET +.2 EQU -38 +.1: + DB 70,79,82,77,0,37,115,0,95,0,37,115,0,37,115 + DB 0,32,0,37,115,0 + extrn strcpy_ + extrn memset_ + extrn strlen_ + extrn printf_ + extrn banner_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn bdoscall_ + extrn dregde_ + extrn dregbc_ + extrn .lt + extrn .ml + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FORM.C b/branches/wbw/Apps/crossdev/FORM.C new file mode 100644 index 00000000..8bae233c --- /dev/null +++ b/branches/wbw/Apps/crossdev/FORM.C @@ -0,0 +1,107 @@ +/* form.c 8/21/2012 dwg - */ + + +#define MAXDRIVE 8 +#include "cpm80.h" +#include "cpmbdos.h" +#include "bdoscall.h" +#include "cpmappl.h" +#include "applvers.h" +#include "cnfgdata.h" +#include "syscfg.h" + + +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + + +struct SYSCFG * pSYSCFG = HIGHSEG; + +#define FRMFLDS 2 +#define FRSTLIN 6 +#define VISCOL 3 +#define VISSIZ 6 +#define VALCOL (VISCOL+VISSIZ+4) +#define VALSIZ 32 + +struct FORM { + int visline; + int viscol; + int vissize; + char visible[VISSIZ+1]; + int valline; + int valcol; + char value[VALSIZ+1]; +} form[FRMFLDS] = { + { FRSTLIN, VISCOL, VISSIZ, "field1", FRSTLIN, VALCOL, "default1" }, + { FRSTLIN+1, VISCOL, VISSIZ, "field2", FRSTLIN+1, VALCOL, "default2" } +}; + + +int main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + char buffer[VALSIZ+2]; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + + banner("FORM"); + + for(i=0;i +#include "ascii.h" + +main() +{ + printf("%c",ASCII_FF); +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/FORMFEED.SUB b/branches/wbw/Apps/crossdev/FORMFEED.SUB new file mode 100644 index 00000000..67b4bbec --- /dev/null +++ b/branches/wbw/Apps/crossdev/FORMFEED.SUB @@ -0,0 +1,4 @@ +cc formfeed +as formfeed +ln formfeed.o -lc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/GETCFG.ASM b/branches/wbw/Apps/crossdev/GETCFG.ASM new file mode 100644 index 00000000..5d88ce09 --- /dev/null +++ b/branches/wbw/Apps/crossdev/GETCFG.ASM @@ -0,0 +1,219 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + DSEG + public pPriFcb_ +pPriFcb_: + DW 92 + CSEG + DSEG + public pSecFcb_ +pSecFcb_: + DW 108 + CSEG + DSEG + public pDefBuf_ +pDefBuf_: + DW 128 + CSEG + DSEG + public pBIOS_ +pBIOS_: + DW -6656 + CSEG + global pDPB_,2 + global pDPH_,2 + global pINFOLIS_,2 + global pCNFGDAT_,2 + DSEG + public pSYSCFG_ +pSYSCFG_: + DW -16384 + CSEG + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LHLD pBIOS_ + LXI D,78 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,77 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,76 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,75 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,2012 + PUSH H + LXI H,23 + PUSH H + LXI H,7 + PUSH H + LXI H,.1+10 + PUSH H + CALL printf_ + XCHG + LXI H,16 + DAD SP + SPHL + LXI H,.1+93 + PUSH H + LXI H,.1+82 + PUSH H + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,256 + PUSH H + LXI H,1 + PUSH H + LXI H,-16384 + PUSH H + CALL fwrite_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,-6596 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + SHLD pINFOLIS_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,25 + PUSH H + LXI H,5 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LDA xrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,-6629 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + SHLD pDPH_ + LHLD pDPH_ + LXI D,10 + DAD D + MOV E,M + INX H + MOV D,M + XCHG + SHLD pDPB_ + RET +.2 EQU -2 +.1: + DB 84,84,32,105,115,32,37,100,10,0,71,69,84,67,70 + DB 71,46,67,79,77,32,37,100,47,37,100,47,37,100,32 + DB 37,100,46,37,100,46,37,100,46,37,100,32,100,119,103 + DB 32,45,32,69,108,101,103,97,110,116,108,121,32,69,120 + DB 112,114,101,115,115,101,100,32,67,80,47,77,32,80,114 + DB 111,103,114,97,109,10,0,115,121,115,99,102,103,46,98 + DB 105,110,0,119,0 + extrn fclose_ + extrn fwrite_ + extrn printf_ + extrn asmif_ + extrn xreghl_ + extrn xrega_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn fopen_ + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/GETCFG.C b/branches/wbw/Apps/crossdev/GETCFG.C new file mode 100644 index 00000000..72fa186d --- /dev/null +++ b/branches/wbw/Apps/crossdev/GETCFG.C @@ -0,0 +1,333 @@ +/* test.c 7/23/2012 dwg - */ + +#include "stdio.h" +#include "applvers.h" +#include "ctermcap.h" + +/* declarations for HBIOS access */ +extern char hrega; +extern unsigned int hregbc; +extern unsigned int hregde; +extern unsigned int hreghl; +extern diagnose(); + +/* declaration dir BIOS and BDOS and low level calls */ +extern char xrega; +extern unsigned int xregbc; +extern unsigned int xregde; +extern unsigned int xreghl; +extern asmif(); /* asmif(0x0E6**,bc,de,hl); */ + +#define BDOS 5 /* memory address of BDOS invocation */ +#define PRIFCB 0x5C /* memory address of primary FCB */ +#define SECFCB 0x6C /* memory address of secondary FCB */ +#define DEFBUF 0x80 /* memory address of default buffer */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +#define TERMCPM 0 /* BDOS function for System Reset */ +#define CONIN 1 /* BDOS function for Console Input */ +#define CWRITE 2 /* BDOS function for Console Output */ +#define DIRCONIO 6 /* BDOS function for Direct Console I/O */ +#define PRINTSTR 9 /* BDOS function for Print String */ +#define RDCONBUF 10 /* BDOS function for Buffered Console Read */ +#define GETCONST 11 /* BDOS function for Get Console Status */ +#define RETVERNUM 12 /* BDOS function for Return Version Number */ +#define RESDISKSYS 13 /* BDOS function for Reset Disk System */ +#define SELECTDISK 14 /* BDOS function for Select Disk */ +#define FOPEN 15 /* BDOS function for File Open */ +#define FCLOSE 16 /* BDOS function for File Close */ +#define SEARCHFIRST 17 /* BDOS function for Search First */ +#define SEARCHNEXT 18 /* BDOS function for Search Next */ +#define FDELETE 19 /* BDOS function for File Delete */ +#define FREADSEQ 20 /* BDOS function for File Read Sequential */ +#define FWRITESEQ 21 /* BDOS function for File Write Sequential */ +#define FMAKEFILE 22 /* BDOS function for File Make */ +#define FRENAME 23 /* BDOS function for File Rename */ +#define RETLOGINVEC 24 /* BDOS function for Return Login Vector */ +#define RETCURRDISK 25 /* BDOS function for Return Current Disk */ +#define SETDMAADDR 26 /* BDOS function for Set DMA Address */ +#define GETALLOCVEC 27 /* BDOS function for Get Allocation Vector */ +#define WRPROTDISK 28 /* BDOS function for Write Protect Disk */ +#define GETROVECTOR 29 /* BDOS function for Get Read Only Vector */ +#define FSETATTRIB 30 /* BDOS function for File Set Attribute */ +#define GETDPBADDR 31 /* BDOS function for Get DPB Address */ +#define SETGETUSER 32 /* BDOS function for Set & Get User Number */ +#define FREADRANDOM 33 /* BDOS function for File Read Random */ +#define FWRITERAND 34 /* BDOS function for File Write Random */ +#define FCOMPSIZE 35 /* BDOS function for File Compare Size */ +#define SETRANDREC 36 /* BDOS function for Set Random Record # */ +#define RESETDRIVE 37 /* BDOS function for Reset Drive */ +#define WRRANDFILL 38 /* BDOS function for Write Random w/ Fill */ + +#define BDOSDEFDR 0 /* BDOS Default (current) Drive Number */ +#define BDOSDRA 1 /* BDOS Drive A: number */ +#define BDOSDRB 2 /* BDOS Drive B: number */ +#define BDOSDRC 3 /* BDOS Drive C: number */ +#define BDOSDRD 4 /* BDOS Drive D: number */ +#define BDOSDRE 5 /* BDOS Drive E: number */ +#define BDOSDRF 6 /* BDOS Drive F: number */ +#define BDOSDRG 7 /* BDOS Drive G: number */ +#define BDOSDRH 8 /* BDOS Drive H: number */ + +#define BIOSDRA 0 /* BIOS Drive A: number */ +#define BIOSDRB 1 /* BIOS Drive B: number */ +#define BIOSDRC 2 /* BIOS Drive C: number */ +#define BIOSDRD 3 /* BIOS Drive D: number */ +#define BIOSDRE 4 /* BIOS Drive E: number */ +#define BIOSDRF 5 /* BIOS Drive F: number */ +#define BIOSDRG 6 /* BIOS Drive G: number */ +#define BIOSDRH 7 /* BIOS Drive H: number */ + +struct FCB { + char drive; /* BDOS Drive Code */ + char filename[8]; /* space padded file name */ + char filetype[3]; /* space padded file extension */ + char filler[24]; /* remainder of FCB */ +}; + +struct FCB * pPriFcb = PRIFCB; /* pointer to Primary FCB structure */ + +struct FCB * pSecFcb = SECFCB; /* pointer to secondary FCB structure */ + +struct { + char length; /* length of commad tail */ + char tail[127]; /* command tail */ +} * pDefBuf = DEFBUF; + + +#define CURDRV 0x00004 +#define BIOSAD 0x0e600 /* base address of BIOS jumps */ + +/* addresses of BIOS jumps */ +#define pBOOT 0x0E600 +#define pWBOOT 0x0E603 +#define pCONST 0x0E606 +#define pCONIN 0x0E609 +#define pCONOUT 0x0E60C +#define pLIST 0x0E60F +#define pPUNCH 0x0E612 +#define pREADER 0x0E615 +#define pHOME 0x0E618 +#define pSELDSK 0x0E61B +#define pSETTRK 0x0E61E +#define pSETSEC 0x0E621 +#define pSETDMA 0x0E624 +#define pREAD 0x0E627 +#define pWRITE 0x0E62A +#define pLISTST 0x0E62D +#define pSECTRN 0x0E630 +#define pBNKSEL 0x0E633 +#define pGETLU 0x0E636 +#define pSETLU 0x0E639 +#define pGETINFO 0x0E63C + +struct JMP { + unsigned char opcode; /* JMP opcode */ + unsigned int address; /* JMP address */ +}; + +struct BIOS { + struct JMP boot; + struct JMP wboot; + struct JMP const; + struct JMP conin; + struct JMP conout; + struct JMP list; + struct JMP punch; + struct JMP reader; + struct JMP home; + struct JMP seldsk; + struct JMP settrk; + struct JMP setsec; + struct JMP setdma; + struct JMP read; + struct JMP write; + struct JMP listst; + struct JMP sectrn; + struct JMP bnksel; + struct JMP getlu; + struct JMP setlu; + struct JMP getinfo; + struct JMP rsvd1; + struct JMP rsvd2; + struct JMP rsvd3; + struct JMP rsvd4; + + char rmj; + char rmn; + char rup; + char rtp; + +} * pBIOS = 0xe600; + +/* pointer based Disk Parameter Block structure */ +struct DPB { + unsigned int spt; + unsigned char bsh; + unsigned char blm; + unsigned char exm; + unsigned int dsm; + unsigned int drm; + unsigned char al0; + unsigned int cks; + unsigned int off; +} * pDPB; + +/* pointer based Disk Parameter Header structure */ +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + struct DPB * pDpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +} * pDPH; + +/* pointer based Information List structure */ +struct INFOLIST { + int version; + void * banptr; + void * varloc; + void * tstloc; + void * dpbmap; + void * dphmap; + void * ciomap; +} * pINFOLIST; + +/* pointer based Configuration Data structure */ +struct CNFGDATA { + unsigned char rmj; + unsigned char rmn; + unsigned char rup; + unsigned char rtp; + unsigned char diskboot; + unsigned char devunit; + unsigned int bootlu; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned char month; + unsigned char day; + unsigned char year; + unsigned char freq; + unsigned char platform; + unsigned char dioplat; + unsigned char vdumode; + unsigned int romsize; + unsigned int ramsize; + unsigned char clrramdk; + unsigned char dskyenable; + unsigned char uartenable; + unsigned char vduenable; + unsigned char fdenable; + unsigned char fdtrace; + unsigned char fdmedia; + unsigned char fdmediaalt; + unsigned char fdmauto; + unsigned char ideenable; + unsigned char idetrace; + unsigned char ide8bit; + unsigned int idecapacity; + unsigned char ppideenable; + unsigned char ppidetrace; + unsigned char ppide8bit; + unsigned int ppidecapacity; + unsigned char ppideslow; + unsigned char boottype; + unsigned char boottimeout; + unsigned char bootdefault; + unsigned int baudrate; + unsigned char ckdiv; + unsigned char memwait; + unsigned char iowait; + unsigned char cntlb0; + unsigned char cntlb1; + unsigned char sdenable; + unsigned char sdtrace; + unsigned int sdcapacity; + unsigned char sdcsio; + unsigned char sdcsiofast; + unsigned char defiobyte; + unsigned char termtype; + unsigned int revision; + unsigned char prpsdenable; + unsigned char prpsdtrace; + unsigned int prpsdcapacity; + unsigned char prpconenable; + unsigned int biossize; + unsigned char pppenable; + unsigned char pppsdenable; + unsigned char pppsdtrace; + unsigned int pppsdcapacity; + unsigned char pppconenable; + unsigned char prpenable; +} * pCNFGDATA; + + +struct JMP_TAG { + unsigned char opcode; + unsigned int address; +}; + + +/* pointer based System Configuration structure */ +struct SYSCFG { + struct JMP_TAG jmp; + void * cnfloc; + void * tstloc; + void * varloc; + struct CNFGDATA cnfgdata; + char filler[256-3-2-2-2-sizeof(struct CNFGDATA)]; +} * pSYSCFG = HIGHSEG; + + +main(argc,argv) + int argc; + char *argv[]; +{ + FILE * fd; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + + printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + + printf( + "GETCFG.COM %d/%d/%d %d.%d.%d.%d dwg - Elegantly Expressed CP/M Program\n", + A_MONTH,A_DAY,A_YEAR, + pBIOS->rmj,pBIOS->rmn,pBIOS->rup,pBIOS->rtp); + + fd = fopen("syscfg.bin","w"); + fwrite(HIGHSEG,1,256,fd); + fclose(fd); + + + + asmif(pGETINFO,0,0,0); /* get addr of the information list */ + pINFOLIST = xreghl; /* set base pointer of the structure */ + + asmif(BDOS,RETCURRDISK,0,0); /* get current drive into xrega */ + asmif(pSELDSK,xrega,0,0); /* get DPH of current drive */ + pDPH = xreghl; /* establish addressability to DPH */ + pDPB = pDPH->pDpb; /* establish addressability to DPB */ + +/* printf("spt is %d\n",pDPB->spt); */ /* demonstrate DPB access */ + + + +} + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/GLOBALS.H b/branches/wbw/Apps/crossdev/GLOBALS.H index 672b4a07..58976394 100644 --- a/branches/wbw/Apps/crossdev/GLOBALS.H +++ b/branches/wbw/Apps/crossdev/GLOBALS.H @@ -1,4 +1,5 @@ /****************************************************************/ +/* globals.h 9/4/2012 dwg - increase MAXDRIVE to 12 */ /* globals.h 3/11/2012 dwg - add BIOS_ADDR */ /* globals.h 3/11/2012 dwg - declarations common to all modules */ /****************************************************************/ @@ -10,8 +11,8 @@ #define BIOSAD 0x0e600 #define INFLSTV 1 -#define MAXDRIVE 8 +#define MAXDRIVE 12 /*******************/ /* eof - globals.h */ -/*******************/ \ No newline at end of file +/*******************/ \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/GLOBALS.LIB b/branches/wbw/Apps/crossdev/GLOBALS.LIB new file mode 100644 index 00000000..152e55f4 --- /dev/null +++ b/branches/wbw/Apps/crossdev/GLOBALS.LIB @@ -0,0 +1,18 @@ +; globals.lib 7/19/2012 dwg - update for 2.0.0.0 B22 +; globals.lib 1/18/2012 dwg - program globals + +ENGLISH equ TRUE +SPANISH equ FALSE + +MAX$LABEL equ 16 +STACK$SIZE equ 512 + +COLON equ ':' + +stack macro + ds STACK$SIZE +stack$top: + endm + +; eof - globals.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HARDWARE.LIB b/branches/wbw/Apps/crossdev/HARDWARE.LIB new file mode 100644 index 00000000..3503e99e --- /dev/null +++ b/branches/wbw/Apps/crossdev/HARDWARE.LIB @@ -0,0 +1,16 @@ +; hardware.lib 1/18/2012 dwg - hardware declarations +HASZ80 equ TRUE + +; I/O address of Zeta RTC +zeta$rtc equ 70h +; write bit definitions +z$rtc$ce equ 10h +z$rtc$we equ 20h +z$rtc$clk equ 40h +z$rtc$inp equ 80h +; read bit definitions +z$rtc$out equ 01h +z$rtc$cfg equ 40h + +; eof - hardware.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HBIOS.ASM b/branches/wbw/Apps/crossdev/HBIOS.ASM new file mode 100644 index 00000000..50d43a0f --- /dev/null +++ b/branches/wbw/Apps/crossdev/HBIOS.ASM @@ -0,0 +1,18 @@ +; hbios.asm 7/19/2012 dwg - + +CFGVERS equ 0 + + public xgetsc +xgetsc: + enter + mvi b,0F0h + mvi c,CFGVERS + lxi d,8000h + db 0cfh ; rst 8 + lxi h,8000h + leave + ret + + + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HBIOS.H b/branches/wbw/Apps/crossdev/HBIOS.H new file mode 100644 index 00000000..e56562c8 --- /dev/null +++ b/branches/wbw/Apps/crossdev/HBIOS.H @@ -0,0 +1,48 @@ +/* hbios.h 7/4/2012 dgw - */ + +/* CIO */ + +/* Character Input (CIOIN) */ + +/* Character Output (CIOOUT) */ + +/* Character Input Status (CIOIST) */ + +/* Character Output Status (CIOOST) */ + +/* DIO */ + +/* Disk Read (DIORD) */ + +/* Disk Write (DIOWR) */ + +/* Disk Status (DIOST) */ + +/* Disk Media (DIOMED) */ + +/* Disk Idetify (DIOID) */ + +/* Disk Get Buffer Address (DIOGBA) */ + + + + +/* + extern char hrega; + extern unsigned int hregbc; + extern unsigned int hregde; + extern unsigned int hreghl; + extern diagnose(); +*/ + + + + + +/*****************/ +/* eof - hbios.h */ +/*****************/ + + + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HBIOS.LIB b/branches/wbw/Apps/crossdev/HBIOS.LIB new file mode 100644 index 00000000..166327be --- /dev/null +++ b/branches/wbw/Apps/crossdev/HBIOS.LIB @@ -0,0 +1,3 @@ +; hbios.lib 7/19/2012 dwg - + extrn xgetsc + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HBIOS.REL b/branches/wbw/Apps/crossdev/HBIOS.REL new file mode 100644 index 00000000..b47b7c7d Binary files /dev/null and b/branches/wbw/Apps/crossdev/HBIOS.REL differ diff --git a/branches/wbw/Apps/crossdev/HBIOS.SYM b/branches/wbw/Apps/crossdev/HBIOS.SYM new file mode 100644 index 00000000..4285f164 --- /dev/null +++ b/branches/wbw/Apps/crossdev/HBIOS.SYM @@ -0,0 +1,2 @@ +0000 CFGVERS 0000 ENTER 000B LEAVE 0000 XGETSC + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HELLO.C b/branches/wbw/Apps/crossdev/HELLO.C new file mode 100644 index 00000000..daff6af1 --- /dev/null +++ b/branches/wbw/Apps/crossdev/HELLO.C @@ -0,0 +1,333 @@ +/* test.c 7/21/2012 dwg - */ + +#include "stdio.h" +#include "applvers.h" + +/* declarations for HBIOS access */ +extern char hrega; +extern unsigned int hregbc; +extern unsigned int hregde; +extern unsigned int hreghl; +extern diagnose(); + +/* declaration dir BIOS and BDOS and low level calls */ +extern char xrega; +extern unsigned int xregbc; +extern unsigned int xregde; +extern unsigned int xreghl; +extern asmif(); /* asmif(0x0E6**,bc,de,hl); */ + +#define BDOS 5 /* memory address of BDOS invocation */ +#define PRIFCB 0x5C /* memory address of primary FCB */ +#define SECFCB 0x6C /* memory address of secondary FCB */ +#define DEFBUF 0x80 /* memory address of default buffer */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +#define TERMCPM 0 /* BDOS function for System Reset */ +#define CONIN 1 /* BDOS function for Console Input */ +#define CWRITE 2 /* BDOS function for Console Output */ +#define DIRCONIO 6 /* BDOS function for Direct Console I/O */ +#define PRINTSTR 9 /* BDOS function for Print String */ +#define RDCONBUF 10 /* BDOS function for Buffered Console Read */ +#define GETCONST 11 /* BDOS function for Get Console Status */ +#define RETVERNUM 12 /* BDOS function for Return Version Number */ +#define RESDISKSYS 13 /* BDOS function for Reset Disk System */ +#define SELECTDISK 14 /* BDOS function for Select Disk */ +#define FOPEN 15 /* BDOS function for File Open */ +#define FCLOSE 16 /* BDOS function for File Close */ +#define SEARCHFIRST 17 /* BDOS function for Search First */ +#define SEARCHNEXT 18 /* BDOS function for Search Next */ +#define FDELETE 19 /* BDOS function for File Delete */ +#define FREADSEQ 20 /* BDOS function for File Read Sequential */ +#define FWRITESEQ 21 /* BDOS function for File Write Sequential */ +#define FMAKEFILE 22 /* BDOS function for File Make */ +#define FRENAME 23 /* BDOS function for File Rename */ +#define RETLOGINVEC 24 /* BDOS function for Return Login Vector */ +#define RETCURRDISK 25 /* BDOS function for Return Current Disk */ +#define SETDMAADDR 26 /* BDOS function for Set DMA Address */ +#define GETALLOCVEC 27 /* BDOS function for Get Allocation Vector */ +#define WRPROTDISK 28 /* BDOS function for Write Protect Disk */ +#define GETROVECTOR 29 /* BDOS function for Get Read Only Vector */ +#define FSETATTRIB 30 /* BDOS function for File Set Attribute */ +#define GETDPBADDR 31 /* BDOS function for Get DPB Address */ +#define SETGETUSER 32 /* BDOS function for Set & Get User Number */ +#define FREADRANDOM 33 /* BDOS function for File Read Random */ +#define FWRITERAND 34 /* BDOS function for File Write Random */ +#define FCOMPSIZE 35 /* BDOS function for File Compare Size */ +#define SETRANDREC 36 /* BDOS function for Set Random Record # */ +#define RESETDRIVE 37 /* BDOS function for Reset Drive */ +#define WRRANDFILL 38 /* BDOS function for Write Random w/ Fill */ + +#define BDOSDEFDR 0 /* BDOS Default (current) Drive Number */ +#define BDOSDRA 1 /* BDOS Drive A: number */ +#define BDOSDRB 2 /* BDOS Drive B: number */ +#define BDOSDRC 3 /* BDOS Drive C: number */ +#define BDOSDRD 4 /* BDOS Drive D: number */ +#define BDOSDRE 5 /* BDOS Drive E: number */ +#define BDOSDRF 6 /* BDOS Drive F: number */ +#define BDOSDRG 7 /* BDOS Drive G: number */ +#define BDOSDRH 8 /* BDOS Drive H: number */ + +#define BIOSDRA 0 /* BIOS Drive A: number */ +#define BIOSDRB 1 /* BIOS Drive B: number */ +#define BIOSDRC 2 /* BIOS Drive C: number */ +#define BIOSDRD 3 /* BIOS Drive D: number */ +#define BIOSDRE 4 /* BIOS Drive E: number */ +#define BIOSDRF 5 /* BIOS Drive F: number */ +#define BIOSDRG 6 /* BIOS Drive G: number */ +#define BIOSDRH 7 /* BIOS Drive H: number */ + +struct FCB { + char drive; /* BDOS Drive Code */ + char filename[8]; /* space padded file name */ + char filetype[3]; /* space padded file extension */ + char filler[24]; /* remainder of FCB */ +}; + +struct FCB * pPriFcb = PRIFCB; /* pointer to Primary FCB structure */ + +struct FCB * pSecFcb = SECFCB; /* pointer to secondary FCB structure */ + +struct { + char length; /* length of commad tail */ + char tail[127]; /* command tail */ +} * pDefBuf = DEFBUF; + + +#define CURDRV 0x00004 +#define BIOSAD 0x0e600 /* base address of BIOS jumps */ + +/* addresses of BIOS jumps */ +#define pBOOT 0x0E600 +#define pWBOOT 0x0E603 +#define pCONST 0x0E606 +#define pCONIN 0x0E609 +#define pCONOUT 0x0E60C +#define pLIST 0x0E60F +#define pPUNCH 0x0E612 +#define pREADER 0x0E615 +#define pHOME 0x0E618 +#define pSELDSK 0x0E61B +#define pSETTRK 0x0E61E +#define pSETSEC 0x0E621 +#define pSETDMA 0x0E624 +#define pREAD 0x0E627 +#define pWRITE 0x0E62A +#define pLISTST 0x0E62D +#define pSECTRN 0x0E630 +#define pBNKSEL 0x0E633 +#define pGETLU 0x0E636 +#define pSETLU 0x0E639 +#define pGETINFO 0x0E63C + +struct JMP { + unsigned char opcode; /* JMP opcode */ + unsigned int address; /* JMP address */ +}; + +struct BIOS { + struct JMP boot; + struct JMP wboot; + struct JMP const; + struct JMP conin; + struct JMP conout; + struct JMP list; + struct JMP punch; + struct JMP reader; + struct JMP home; + struct JMP seldsk; + struct JMP settrk; + struct JMP setsec; + struct JMP setdma; + struct JMP read; + struct JMP write; + struct JMP listst; + struct JMP sectrn; + struct JMP bnksel; + struct JMP getlu; + struct JMP setlu; + struct JMP getinfo; + struct JMP rsvd1; + struct JMP rsvd2; + struct JMP rsvd3; + struct JMP rsvd4; + + char rmj; + char rmn; + char rup; + char rtp; + +} * pBIOS = 0xe600; + +/* pointer based Disk Parameter Block structure */ +struct DPB { + unsigned int spt; + unsigned char bsh; + unsigned char blm; + unsigned char exm; + unsigned int dsm; + unsigned int drm; + unsigned char al0; + unsigned int cks; + unsigned int off; +} * pDPB; + +/* pointer based Disk Parameter Header structure */ +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + struct DPB * pDpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +} * pDPH; + +/* pointer based Information List structure */ +struct INFOLIST { + int version; + void * banptr; + void * varloc; + void * tstloc; + void * dpbmap; + void * dphmap; + void * ciomap; +} * pINFOLIST; + +/* pointer based Configuration Data structure */ +struct CNFGDATA { + unsigned char rmj; + unsigned char rmn; + unsigned char rup; + unsigned char rtp; + unsigned char diskboot; + unsigned char devunit; + unsigned int bootlu; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned char month; + unsigned char day; + unsigned char year; + unsigned char freq; + unsigned char platform; + unsigned char dioplat; + unsigned char vdumode; + unsigned int romsize; + unsigned int ramsize; + unsigned char clrramdk; + unsigned char dskyenable; + unsigned char uartenable; + unsigned char vduenable; + unsigned char fdenable; + unsigned char fdtrace; + unsigned char fdmedia; + unsigned char fdmediaalt; + unsigned char fdmauto; + unsigned char ideenable; + unsigned char idetrace; + unsigned char ide8bit; + unsigned int idecapacity; + unsigned char ppideenable; + unsigned char ppidetrace; + unsigned char ppide8bit; + unsigned int ppidecapacity; + unsigned char ppideslow; + unsigned char boottype; + unsigned char boottimeout; + unsigned char bootdefault; + unsigned int baudrate; + unsigned char ckdiv; + unsigned char memwait; + unsigned char iowait; + unsigned char cntlb0; + unsigned char cntlb1; + unsigned char sdenable; + unsigned char sdtrace; + unsigned int sdcapacity; + unsigned char sdcsio; + unsigned char sdcsiofast; + unsigned char defiobyte; + unsigned char termtype; + unsigned int revision; + unsigned char prpsdenable; + unsigned char prpsdtrace; + unsigned int prpsdcapacity; + unsigned char prpconenable; + unsigned int biossize; + unsigned char pppenable; + unsigned char pppsdenable; + unsigned char pppsdtrace; + unsigned int pppsdcapacity; + unsigned char pppconenable; + unsigned char prpenable; +} * pCNFGDATA; + + +struct JMP_TAG { + unsigned char opcode; + unsigned int address; +}; + + +/* pointer based System Configuration structure */ +struct SYSCFG { + struct JMP_TAG jmp; + void * cnfloc; + void * tstloc; + void * varloc; + struct CNFGDATA cnfgdata; + char filler[256-3-2-2-2-sizeof(struct CNFGDATA)]; +} * pSYSCFG = HIGHSEG; + + +main(argc,argv) + int argc; + char *argv[]; +{ + + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + +/* printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); */ + + + printf( + "TEST.COM %d/%d/%d %d.%d.%d.%d dwg - Elegantly Expressed CP/M Program\n", + A_MONTH,A_DAY,A_YEAR, + pBIOS->rmj,pBIOS->rmn,pBIOS->rup,pBIOS->rtp); + + asmif(pGETINFO,0,0,0); /* get addr of the information list */ + pINFOLIST = xreghl; /* set base pointer of the structure */ + + asmif(BDOS,RETCURRDISK,0,0); /* get current drive into xrega */ + asmif(pSELDSK,xrega,0,0); /* get DPH of current drive */ + pDPH = xreghl; /* establish addressability to DPH */ + pDPB = pDPH->pDpb; /* establish addressability to DPB */ + +/* printf("spt is %d\n",pDPB->spt); */ /* demonstrate DPB access */ + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + +/* printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); */ + + +} + + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HELP.ASM b/branches/wbw/Apps/crossdev/HELP.ASM new file mode 100644 index 00000000..00f63941 --- /dev/null +++ b/branches/wbw/Apps/crossdev/HELP.ASM @@ -0,0 +1,17 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + LXI H,0 + RET +.2 EQU 0 +.1: + DB 72,101,108,112,32,87,111,114,108,100,33,33,10,0 + extrn printf_ + END + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/HELP.C b/branches/wbw/Apps/crossdev/HELP.C new file mode 100644 index 00000000..0541cc1e --- /dev/null +++ b/branches/wbw/Apps/crossdev/HELP.C @@ -0,0 +1,11 @@ +#include +#include + +int main(argc,argv) + int argc; + char * argv[]; +{ + printf("Help World!!\n"); + return 0; +} + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/IDENT.ASM b/branches/wbw/Apps/crossdev/IDENT.ASM new file mode 100644 index 00000000..9840c850 --- /dev/null +++ b/branches/wbw/Apps/crossdev/IDENT.ASM @@ -0,0 +1,64 @@ + title 'Ident - Display Program Identification' + +; ident.asm 2/21/2012 dwg - review for release 2.0.0.0 +; ident.asm 2/19.2012 dwg - review for release 1.5.1.0 +; ident.asm 2/19/2012 dwg - remove test* & analyse & ws-shim +; ident.asm 2/18/2012 dwg - drives,map and slice become map +; ident.asm 2/14/2012 dwg - superfmt becomes multifmt +; ident.asm 2/13/2012 dwg - add disk +; ident.asm 2/12/2012 dwg - add cleardir and superfmt +; ident.asm 2/11/2012 dwg - Display the Ident of a program file + +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . + + maclib portab + maclib globals + maclib cpmbdos + maclib cpmappl + maclib applvers + maclib banner + maclib printers + maclib dumpmac + maclib memory + maclib identity + + do$start + + idata + + sbanner argv + + ify 'ACCESS COM',TRUE +; ify 'ASSIGN COM',TRUE +; ify 'CPMNAME COM',TRUE +; ify 'ERASE COM',TRUE + ify 'FINDFILECOM',TRUE +; ify 'HEADER COM',TRUE + ify 'IDENT COM',TRUE + ify 'SETLABELCOM',TRUE +; ify 'MAP COM',TRUE +; ify 'METAVIEWCOM',TRUE +; ify 'MULTIFMTCOM',TRUE + ify 'NOACCESSCOM',TRUE +; ify 'PAUSE COM',TRUE +; ify 'REM COM',TRUE +; ify 'REQ1PARMCOM',TRUE +; ify 'STOP COM',TRUE +; ify 'TERMTYPECOM',TRUE +; ify 'WRITESYSCOM',FALSE + + do$end + + end + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/IDENTITY.ASM b/branches/wbw/Apps/crossdev/IDENTITY.ASM new file mode 100644 index 00000000..858d7727 --- /dev/null +++ b/branches/wbw/Apps/crossdev/IDENTITY.ASM @@ -0,0 +1,196 @@ +; identity.asm 2/17/2012 dwg - Program Identity Declarations + + maclib portab + maclib globals + maclib stdlib + maclib cpmbios + maclib cpmbdos + maclib memory + maclib printers + + public x$ident +x$ident: + shld lfcbptr ; save pointer to fcb + + mvi c,FOPEN + lhld lfcbptr + xchg + call BDOS + cpi 255 + jnz openok + +;;; memcpy lname,file1fcb+1,8 + mvi c,8 + lxi d,lname + lhld lfcbptr + inx h + call x$memcpy + + mvi a,',' + sta ldot + +;;; memcpy lext,file1fcb+9,3 + mvi c,3 + lhld lfcbptr + lxi d,9 + dad d + lxi d,lext + call x$memcpy + + + mvi a,'$' + sta lterm + print lname + printf ' -- File Not Found' + mvi a,FAILURE + jmp fini +openok: + + mvi c,SETDMA + lxi d,buffer + call BDOS + + mvi c,READSEQ + lhld lfcbptr + xchg + call BDOS + + + mvi c,SETDMA + lxi d,buffer+128 + call BDOS + + mvi c,READSEQ + lhld lfcbptr + xchg + call BDOS + + mvi c,FCLOSE + lhld lfcbptr + xchg + call BDOS + + lxi d,d$prog + mvi c,9 + call BDOS + + conout ',' + conout ' ' + lda p$rmj + mov l,a + mvi h,0 + call pr$d$word + conout '.' + lda p$rmn + mov l,a + call pr$d$word + conout '.' + lda p$rup + mov l,a + call pr$d$word + conout '.' + lda p$rtp + mov l,a + call pr$d$word + conout ',' + conout ' ' + + lda p$mon + mov l,a + call pr$d$word + conout '/' + lda p$day + mov l,a + call pr$d$word + conout '/' + lhld p$year + call pr$d$word + conout ',' + conout ' ' + + lxi d,d$prod + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$orig + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$ser + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lda d$term2 + cpi '$' + jnz do$name + conout ' ' + lxi d,d$uuid+19 + jmp do$any +do$name: + lxi d,d$name +do$any: + mvi c,9 + call BDOS + + mvi a,SUCCESS ; set return code +fini: + ret + +lfcbptr ds 2 +ldrive ds 1 +lcolon ds 1 +lname ds 8 +ldot ds 1 +lext ds 3 +lterm ds 1 + + db 'buffer-->' +buffer ds 1 +p$start ds 2 +p$hexrf ds 16 +p$sig ds 2 +p$rmj ds 1 +p$rmn ds 1 +p$rup ds 1 +p$rtp ds 1 +p$mon ds 1 +p$day ds 1 +p$year ds 2 +p$argv ds 2 +p$e5 ds 1 +p$pr$st ds 2 +p$code1 ds 3 ; begin: lxi h,0 +p$code2 ds 1 ; dad sp +p$code3 ds 3 ; shld pre$stk +p$code4 ds 3 ; lxi sp,stack$top +p$code5 ds 1 ; nop +p$code6 ds 3 ; jmp around$bandata +p$prog ds 2 ; dw prog +p$dat ds 2 ; dw dat +p$prod ds 2 ; dw prod +p$orig ds 2 ; dw orig +p$ser ds 2 ; dw ser +p$nam ds 2 ; dw nam +p$term ds 2 ; dw 0 +d$prog ds 8+1+3+1 ; db '12345678.123$' +d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$' +d$ser ds 6+1 ; db '654321$' +d$prod ds 5+1 ; db 'CPM80$' +d$orig ds 3+1 ; db 'DWG$' +d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$' +d$uuid ds 36 ; unique user identification +d$term2 ds 1 ; can be set to zero or dollar sign +p$len equ $-buffer +p$rsvd ds 256-p$len + db '<--buffer' + dw p$len +crlf db CR,LF,'$' + +; eof - identity.asm + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/IDENTITY.LIB b/branches/wbw/Apps/crossdev/IDENTITY.LIB new file mode 100644 index 00000000..b66e6c3e --- /dev/null +++ b/branches/wbw/Apps/crossdev/IDENTITY.LIB @@ -0,0 +1,191 @@ +; identity.lib 2/19/2012 dwg - add ify macro +; identity.lib 2/17/2012 dwg - Program Identity Declarations + + extrn x$ident + +ident macro file1fcb + lxi h,file1fcb + call x$ident + endm + +ify macro progname,bool + local done + local file + local fini + ident file + jmp fini + newfcb file,0,progname +fini: mvi a,bool + cpi TRUE + jnz done + conout CR + conout LF +done: + endm + + +identx macro file1fcb + local openok + local identend + + local ldrive,lcolon,lname,ldot,lext,lterm + + mvi c,FOPEN + lxi d,file1fcb + call BDOS + cpi 255 + jnz openok + + memcpy lname,file1fcb+1,8 + mvi a,',' + sta ldot + memcpy lext,file1fcb+9,3 + mvi a,'$' + sta lterm + print lname + printf ' -- File Not Found' + jmp identend +openok: + + mvi c,SETDMA + lxi d,buffer + call BDOS + + mvi c,READSEQ + lxi d,file1fcb + call BDOS + + mvi c,FCLOSE + lxi d,file1fcb + call BDOS + + lxi d,d$prog + mvi c,9 + call BDOS + + conout ',' + conout ' ' + lda p$rmj + mov l,a + mvi h,0 + call pr$d$word + conout '.' + lda p$rmn + mov l,a + call pr$d$word + conout '.' + lda p$rup + mov l,a + call pr$d$word + conout '.' + lda p$rtp + mov l,a + call pr$d$word + conout ',' + conout ' ' + + lda p$mon + mov l,a + call pr$d$word + conout '/' + lda p$day + mov l,a + call pr$d$word + conout '/' + lhld p$year + call pr$d$word + conout ',' + conout ' ' + + lxi d,d$prod + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$orig + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$ser + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$name + mvi c,9 + call BDOS + jmp identend + +ldrive ds 1 +lcolon ds 1 +lname ds 8 +ldot ds 1 +lext ds 3 +lterm ds 1 + +identend: + endm + +idata macro + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'IDENT.COM $' + date + serial + product + originator + oriname +uuid db '777A67C2-4A92-42D4-80FE-C96FD6483BD2$' + db 'buffer-->' + public buffer,p$start,p$hexrf,p$sig + public p$rmj,p$rmn,p$rup,p$rtp + public p$mon,p$day,p$year +buffer ds 1 +p$start ds 2 +p$hexrf ds 16 +p$sig ds 2 +p$rmj ds 1 +p$rmn ds 1 +p$rup ds 1 +p$rtp ds 1 +p$mon ds 1 +p$day ds 1 +p$year ds 2 +p$argv ds 2 +p$e5 ds 1 +p$pr$st ds 2 +p$code1 ds 3 ; begin: lxi h,0 +p$code2 ds 1 ; dad sp +p$code3 ds 3 ; shld pre$stk +p$code4 ds 3 ; lxi sp,stack$top +p$code5 ds 1 ; nop +p$code6 ds 3 ; jmp around$bandata +p$prog ds 2 ; dw prog +p$dat ds 2 ; dw dat +p$prod ds 2 ; dw prod +p$orig ds 2 ; dw orig +p$ser ds 2 ; dw ser +p$nam ds 2 ; dw nam +p$term ds 2 ; dw 0 +d$prog ds 8+1+3+1 ; db '12345678.123$' +d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$' +d$ser ds 6+1 ; db '654321$' +d$prod ds 5+1 ; db 'CPM80$' +d$orig ds 3+1 ; db 'DWG$' +d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$' +d$uuid ds 37 ; unique user identification +d$term2 ds 1 ; can be set to zero or dollar sign +p$len equ $-buffer +p$rsvd ds 128-p$len + db '<--buffer' +crlf db CR,LF,'$' +around$bandata: + + endm + +; eof - identity.lib + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/IDENTITY.REL b/branches/wbw/Apps/crossdev/IDENTITY.REL new file mode 100644 index 00000000..b451b042 Binary files /dev/null and b/branches/wbw/Apps/crossdev/IDENTITY.REL differ diff --git a/branches/wbw/Apps/crossdev/IDENTITY.SYM b/branches/wbw/Apps/crossdev/IDENTITY.SYM new file mode 100644 index 00000000..5ecad124 --- /dev/null +++ b/branches/wbw/Apps/crossdev/IDENTITY.SYM @@ -0,0 +1,35 @@ +0009 AL0OFS 000A AL1OFS 000E ALVOFS 0005 BDOS E600 BIBOOT +E609 BICONIN E60C BICONOUT E606 BICONST 0000 BIDRVA 0001 BIDRVB +0002 BIDRVC 0003 BIDRVD 0004 BIDRVE 0005 BIDRVF 0006 BIDRVG +0007 BIDRVH E618 BIHOME E60F BILIST E62D BILISTST E612 BIPUNCH +E627 BIREAD E615 BIREADER E630 BISECTRN E61B BISELDSK E624 BISETDMA +E621 BISETSEC E61E BISETTRK E603 BIWBOOT E62A BIWRITE 0003 BLMOFS +0002 BSHOFS 022F BUFFER 0001 BYTESIZE 000B CKSOFS 003A COLON +000D CR 0001 CREAD 033A CRLF 0020 CROFS 000C CSVOFS +0012 CUROFS 0002 CWRITE 0010 D0OFS 0008 DBFOFS 027A DDATE +0080 DEFBUF 0296 DNAME 020D DOANY 020A DONAME 0292 DORIG +000F DPBLEN 000A DPBOFS 0010 DPHLEN 028C DPROD 026D DPROG +0007 DRMOFS 0000 DROFS 0285 DSER 000D DSKRESET 0005 DSMOFS +02CE DTERM2 02AA DUUID 0001 ENGLISH 001B ESC 0004 EXMOFS +000C EXOFS 0001 F1OFS 0002 F2OFS 0003 F3OFS 0004 F4OFS +0005 F5OFS 0006 F6OFS 0007 F7OFS 0008 F8OFS 0001 FAILURE +0000 FALSE 0024 FCBLEN 0010 FCLOSE 0023 FCOMPSIZE 0013 FDELETE +0214 FINI 0016 FMAKE 000F FOPEN 0017 FRENAME 0218 LCOLON +0221 LDOT 0217 LDRIVE 0020 LENFCB 0222 LEXT 000A LF +0215 LFCBPTR 0219 LNAME 0225 LTERM 0010 LU1OFS 0011 LU2OFS +0010 MAXLABEL 0000 NEVER 0014 NLUOFS 00E5 OEMID 000D OFFOFS +0071 OPENOK 024C PARGV 0251 PCODE1 0254 PCODE2 0255 PCODE3 +0258 PCODE4 025B PCODE5 025C PCODE6 0261 PDAT 0249 PDAY +024E PE5 0232 PHEXRF 00A0 PLEN 0248 PMON 0269 PNAM +0265 PORIG 0263 PPROD 025F PPROG 024F PPRST 0000 PRDWORD +0000 PRHBYTE 0000 PRHWORD 005C PRIFCB 0009 PRINTSTR 0244 PRMJ +0245 PRMN 02CF PRSVD 0247 PRTP 0246 PRUP 0267 PSER +0242 PSIG 0230 PSTART 026B PTERM 024A PYEAR 0021 R0OFS +0022 R1OFS 0023 R2OFS 000F RCOFS 000A READCONBUF 0014 READSEQ +0025 RESETDRIVE 0019 RETCURR 000C RETVERNO 0002 RV1OFS 0004 RV2OFS +0006 RV3OFS 000D S1OFS 000E S2OFS 006C SECFCB 000E SELDSK +001A SETDMA 0024 SETRANDREC 0000 SPANISH 0000 SPTOFS 0200 STACKSIZE +0000 SUCCESS 0009 T1OFS 000A T2OFS 000B T3OFS 0000 TERMCPM +0001 TRUE 0002 WORDSIZE 0022 WRITERAND 0028 WRITERANDZF +0015 WRITESEQ 0000 XIDENT 0000 XLTOFS 0000 XMEMCPY 0000 XMEMSET + \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/LABEL.DWG b/branches/wbw/Apps/crossdev/LABEL.DWG new file mode 100644 index 00000000..cbf30794 --- /dev/null +++ b/branches/wbw/Apps/crossdev/LABEL.DWG @@ -0,0 +1,3 @@ +RomWBW/branches/dwg/Apps/crossdev +1234567890123456789012345678901234 + 1 2 3 \ No newline at end of file diff --git a/branches/wbw/Apps/crossdev/LABELIB.ASM b/branches/wbw/Apps/crossdev/LABELIB.ASM new file mode 100644 index 00000000..85afc81e --- /dev/null +++ b/branches/wbw/Apps/crossdev/LABELIB.ASM @@ -0,0 +1,217 @@ +; labelib.asm 2/22/2012 dwg - label library function implementation +; label.asm 2/11/2012 dwg - make ident compliant +; label.asm 2/11/2012 dwg - begin 1.6 enhancements +; label.asm 2/04/2012 dwg - use new macros for benefits +; label.asm 1/20/2012 dwg - label a drive or slice + +; +; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. +; +; This file is part of NuBiosDWG and is free software: you can +; redistribute it and/or modify it under the terms of the GNU +; General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; This file is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; You should have received a copy of the GNU General Public License +; along with it. If not, see . +; + + + maclib portab + maclib globals + maclib cpmbios + maclib cpmbdos + maclib bioshdr + maclib hardware + maclib z80 + maclib memory +; maclib applvers +; maclib cpmappl + maclib printers + maclib metadata +; maclib banner + maclib stdlib +; maclib ffhaslu +; maclib identity + + + + cseg + + public x$label +x$label: + mov a,c + sta drive$num + + get$off + mov a,h + ora l + jnz off$ok + printf 'Sorry, you can only label drives with reserved tracks' + jmp main$exit +off$ok: + + lda drive$num + mov c,a + lxi h,buffer + call x$g$meta + + lda DEFBUF ! mov c,a + cpi 0 ! jnz x$lab2 + +; ; Interactive label functionality here... + +prompt: + ; signature exists so label should be displayable + + print old$lbl + +; print label + lxi h,buffer + lxi d,meta$label + dad d + push h + pop d + mvi c,PRINTSTR + call BDOS + + print crlf + print new$lbl + + mvi c,READ$CON$BUF + lxi d,rcbuff + call BDOS + lda rclen + cpi 0 + jnz length$ok + jmp main$exit +length$ok: + inr a + sta DEFBUF + mvi a,' ' + sta DEFBUF+1 + mov c,a + mvi b,0 + lxi h,rcdata + lxi d,DEFBUF+2 + ldir + + print crlf + + lda drive$num + mov c,a + ; fall through to code below + + +;;; not$interactive: + + public x$lab2 +x$lab2: +; This routine can be used interactively or non-interactively. +; You can set up the default buffer at 80h and call x$lab2, +; or you can call x$label and it will interactively redo the label. +; + mov a,c + sta drive$num + + + lxi h,buffer + lxi d,meta$label + dad d + mvi a,' ' + lxi b,meta$label$len ; max length of label + call x$memset + + lda DEFBUF ; pick up length of command tail + cpi 18 ; compare with max size of label + jc lenok ; jump if size is within limits + mvi a,17 ; specify maximum size + sta DEFBUF ; and poke into default buffer size byte + +lenok: lda DEFBUF ; pick up command tail size byte + dcr a ; decrement + + mov c,a ; move to c reg as counter + mvi b,0 + + lxi h,buffer + lxi d,meta$label + dad d + xchg + lxi h,DEFBUF+2 ; set source index for move + ldir + + lxi h,buffer + lxi d,meta$term + dad d + mvi a,'$' + mov m,a + + lda drive$num + mov c,a + + lxi h,buffer + call x$u$meta + cpi FAILURE + jz write$prot$err + + lxi h,buffer + call x$p$meta + + print suc$msg + + jmp main$exit + +write$prot$err: + print wr$prot$msg + jmp main$exit + +readerr: + print rd$err$msg + jmp main$exit + +writeerr: + print wr$err$msg + jmp main$exit + +dontboth: + print usage$msg + +main$exit: + ret + + dseg + +suc$msg db 'Label Written Successfully$' +rd$err$msg db 'Sorry, cannot read label sector$' +wr$err$msg db 'Sorry, cannot write label sector$' +wr$prot$msg db 'Sorry, metadata is write protected$' +usage$msg db 'usage - label