Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

3767 lines
250 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹BIOS C €
BIOS C € !BIOS C "#BIOS REL$裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹s.c */
/*This conditionally compiles bios.c leaving unrequired code out of the object*/
/*file. */
/*----------FPE O ^沫<>圀悃棔<E68283>FPEDEP O LBIOSASM8KN 」、LDRBDOS REL1・ヲァィゥェォM20 (Z8000) |*/
/*| |*/
/*| Copyright 1984, Digital Research Inc. |*/
/*| |*/
/*+------------------BIOS SUB%BIOSASM 8KN &'BIOSBOOT8KN"()*+,BIOSDEFS8KN-./0裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹------------------------------------------------------------------*/
/* The normal bios compile command for cpm.sys is: zcc -c MAKELDR SUBMKPUTBT SUBPUTBOOT C 2ョッーアイウエREADME オカ---------------------------------------------------+*/
/*======================================================================BIOSIF 8KN1234BIOSIO 8KN567BIOSMEM 8KN#89:;<BIOSTRAP8KN>=>?@ABCD裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹-M1 bios.c */
/* This will provide the full functionallity of the bios in the object file */
/*----------------------SYSCALL 8KNキクケTRK O コサ裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹=*/
/*-------------------------*/
/* Compilation information */
/*-------------------------*/
/*--------------------------CPMLDR RELbEFGHIJKLMNOPQCPMSYS REL€RSTUVWXYZ[\]^_`aCPMSYS REL€bcdefghijklmnopqCPMSYS RELr#ifdef loader
#define LOADER 1
#endif
/*=======================================================================*/
/*+-------裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹-----------------------------------------------------*/
/* By compiling bios.c with the command : zcc -c -M1 -dTRANSFER bios.c 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹--------------------------------------------------*/
/*To compile bios.c for cpmldr.sys the command is: zcc -c -M1 -dLOADER bioCPMSYS SUBsCPMSYS2 REL€tuvwxyz{|}~€<C280>CPMSYS2 REL€у<C280><D183>葛訣誌髄駐CPMSYS2 REL--------------------------------------------------------------+*/
/*| |*/
/*| CP/M-8000(tm) BIOS for the OLIVETTI */
/* You are provided with a bios object that allows the two floppy drives to */
/* have two different formats. ThisZlotnick (Zilog) -- Added escape character to keyboard
** map, as ctrl'['.
**
** 831205 K. Greenberg (Zilog) -- Fixed disk of iobyte
** upon each warmboot. Changed seldisk to test for
** overflow of the dphtab (to fix the "dir d:" bug).
**
*r is an Intel 8259 left-shifted one bit */
/* to allow for the word-alligned interrupt vectors of the Z8000. */
/* === I am ompile*/
/* code setting the tty port to 1200 baud listening */
/* XOFF on that port. */
/* #define DEBUG *************************************************/
/* */
/* I/O Device Definitions */
/* */
/**** is left purely as an example for the */
/* the benefit of porting to a different format and can be modified. */
/*parameter table for hard
** drive C to point to dpb3, not dpb2 (80 trk floppy).
**
** 831212 K. Greenberg (Zilog) -- Modifi* 830804 F. Zlotnick (Zilog) -- Added conditional compilation for
** loader BIOS, which only needs a few of the BIOS
** fugoing to assume that this is set up in the PROM === */
/*******************************************************************1 */ /* By decommenting this define hard disk debugging */
/* is enabled. This provides drive, block, and */
/* tra********************************************************************/
/*******************************************************----------------------------------------------------------------------------*/
/* By compiling bios.c with the command: zcc -c ed disk parameter tables for
** hard disk to look more like floppies (fewer sectors
** but more tracks). This will fix thenctions. The loader DOES require the definition
** of a context structure, for transfer of control to
** the system prope*****/
/* Define the two USART ports */
/************************************************************************/
ck information to be printed on the console. */
char copyright[] = "Copyright 1984 Digital Research Inc.";
/* HISTORY
*******************/
/************************************************************************/
/* Define Interrupt Cont-M1 -dsect26 bios.c */
/* 8" floppy disk support is provided by conditional compilation. */
/*-------------------- sector deblocking
** part of the bios to be compatible with both. Also
** switched to 4K allocation blocks and 512 direntr.
**
** 830804 F. Zlotnick (Zilog) -- Changed Disk Parameter Blocks to
** reflect new bootstrap method.
**
** 830809 F.
/* The USARTs are Intel 8251's */
#define KBD 0xA1 /* Keyboard USART base */
#define RS232 0xC1 /* RS-232 terminal */
** 820803 S. Savitzky (Zilog) -- derived from 68000 EXORMACS bios
**
** 830614 F. Zlotnick (Zilog) -- removed initializationroller constants */
/************************************************************************/
/* The interrupt controlle--------------------------------------------------------*/
#define BAUD 0 /* Setting this define to 1 will conditionally cries.
*/
/************************************************************************/
/***********************
#define SERDATA 0 /* data port offset */
#define SERCTRL 2 /* control port offset */
#define SERSTAT 2 /* status port , /* 4800 */
8, /* 9600 */
4, /* 19200 */
2 /* 38400 */
};
#endif /* End Conditional */
nter/timer control port */
#define CT0CTL 0x36 /* c/t 0 control byte */
#define CT1CTL 0x76 /* c/t 1 control byte */
sses and Related Constants */
/************************************************************************/
/* SEE BIOSIO.8KN */
#define XOFF 0x13 /* Control- S */
/************************************************************************/
/* (fault bit) needs to be high */
/************************************************************************/
/***************offset */
#define SERINIT 0x37 /* init (3 times) */
#define SERRES 0x40 /* reset */
#define SERMODE 0xEE /* mode (2
/************************************************************************/
/* Define Parallel Port constants */
/********
#define CT2CTL 0xB4 /* c/t 2 control byte */
/* control byte is followed by LSB, then MSB of count to data register */
/FOR THESE EXTERNALS */
extern int disk_io(); /* (char drive, cmd -- disk I/O */
/* int blk_count, */
/* int Define the counter/timer ports */
/************************************************************************/
/* The*********************************************************/
/* */
/* PROM AND HARDWARE INTERFACE */
/* */ stop, even parity */
/* parity disable, 8 bits */
/* divide by 16 */
/* DUBIOUS. 15?? */
#define TTYON 0x37****************************************************************/
/* The parallel (printer) port is an Intel 8255 */
#defi* baud rate table follows: */
#ifndef LOADER /* NOT needed by the Loader Bios */
int baudRates[10] = {
1538, /* blk_num, */
/* char *dest) -> int error? */
extern crt_put(); /* (char character) -- put byte to CRT */
extern counter-timer is an Intel 8253 */
#define CT_232 0x121 /* counter/timer 0 -- RS232 baud rate */
#define CT_KBD 0x123 /* c
/************************************************************************/
/************************************************* /* cmd (no hunt, no reset, */
/* RTS=0, error reset, */
/* no break, rcv enable, */
/* DTR=0, xmt enable */
#ne PAR_A 0x81 /* port A data */
#define PAR_B 0x83 /* port B data */
#define PAR_C 0x85 /* port C data */
#define PARCT 50 */
699, /* 110 */
256, /* 300 */
128, /* 600 */
64, /* 1200 */
32, /* 2400 */
16cold_boot(); /* boot operating system */
#define DSKREAD 0 /* disk read command */
#define DSKWRITE 1 /* disk write commaounter/timer 1 -- kbd baud rate */
#define CT_RTC 0x125 /* counter/timer 2 -- NVI (rt clock) */
#define CT_CTRL 0x127 /* cou***********************/
/************************************************************************/
/* Define PROM I/O Addredefine SERRRDY 0x02 /* RCV ready bit mask */
#define SERXRDY 0x01 /* XMT ready bit mask */
#define XON 0x11 /* Control- QRL 0x87 /* control port */
#define PARBSY 0x02 /* bit one (busy bit) needs to be low */
#define PARFLT 0x10 /* bit fivend */
#define DSKFMT 2 /* disk format command */
#define DSKVFY 3 /* disk verify command */
#define DSKINIT 4 /* disk initNOT needed for the Loader Bios */
struct mrt { int count;
struct {long tpalow;
long tpalen;
} regions[5];*******************************************************************/
/* System Entry and Stack Pointer */
/***************#endif /* End conditional */
/************************************************************************/
/* Set Exception *****************************************************************/
/* SEE SYSCALL.8KN FOR THESE EXTERNALS */
extern mem_c0C000L, /* system space: merged I and D */
};
struct context /* Startup context for user's program */
{
short r. command */
/************************************************************************/
/* Define external I/O routines an
}
memtab = {5,
0x0A000000L, 0x10000L, /* merged I and D */
0x08000000L, 0x10000L, /* separated I */
*********************************************************/
#define SYSENTRY 0x0b000006L /* entry point */
#define SYSSTKPTR Vector entry */
/************************************************************************/
extern long trapvec[]; /* py(); /* (src, dest, len: long)-- copy data */
extern long map_adr(); /* paddr = (laddr: long; space: int) */
#define CDATegs[14];
long segstkptr;
short ignore;
short FCW;
long PC;
};
struct context context =
{ /* Regs 0-13 cleard addresses */
/************************************************************************/
/* SEE BIOSIF.8KN FOR THESE EXTE 0x08000000L, 0x10000L, /* and D */
0x0B000000L, 0x10000L, /* accessing I as D */
0x09000000L, 0x100000x0b00bffeL /* system's stack pointer start */
/************************************************************************/
/*trap vector */
long setxvect(vnum, vval)
int vnum;
long vval;
{
register long oldval;
oldval = trapvec[vnum];
trA 0 /* caller data space */
#define CCODE 1 /* caller code space */
#define SDATA 2 /* system data space */
#define SCOed, sp set up below */
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
SYSSTKPTR, /* Loaded system's stack pointer */
0, /RNALS */
extern output(); /* (port, data: int) -- output */
extern int input(); /* (port: int) -- input */
/********L /* ddt debugger sits here */
};
#endif /* End conditional */
#ifdef LOADER /* NEEDED fr the Loader Bios */
stru Memory Region Table */
/************************************************************************/
#ifndef LOADER /* apvec[vnum] = vval;
return(oldval);
}
/********************************************DE 3 /* system code space */
#define NDATA 4 /* normal data space */
#define NCODE 5 /* normal code space */
/****** Ignore: value is zero */
0xD800, /* FCW: segmented system, VI, NVI set */
SYSENTRY /* Entry point to system */
};
****************************************************************/
/* Define external memory management routines */
/*******ct mrt { int count;
struct {long tpalow;
long tpalen;
} regions[1];
}
memtab = {1,
0x0B000000L, 0x****************************/
/************************************************************************/
/* */
/* /* Conditional for 1200 baud and XOFF */
while ( ((input(port + SERSTAT) & SERXRDY)
!= SERXRDY) | ((((input(port + SERDATet for 1200 baud */
#else
/* === assume the PROM sets it up. === */
#endif /* End conditional */
}
int s***************************************************/
#ifndef LOADER /* NOT needed for the Loader Bios */
char kbtran[256ffer at an opportune moment. */
extern int tbdirty;
serinit(port)
int port;
{
output(port+SERCTRL, SERINIT);
check for */
{printstr ("\n\rPrinter Timeout.\n\r"); /* printer ready a */
return; /* finite number of */
} CHARACTER I/O */
/* */
/************************************************************************/
/*************A))
& 0x7F) ^ XOFF) == 0));
output(port + SERDATA, ch);
#else
while ( (input(port + SERSTAT) & SERXRDY) != SERXRDYerirdy(port)
int port;
{
return(((input(port+SERSTAT) & SERRRDY) == SERRRDY) ? 0xFF : 0);
}
char serin(port)
] = {
/* Raw key codes for main keypad:
RE \ A B C D E F G H I J K L M N
output(port+SERCTRL, SERINIT);
output(port+SERCTRL, SERINIT);
output(port+SERCTRL, SERRES);
output( /* times */
}
while (!parordy(PAR_B)); /* if printer ready */
output (port, ch); /* print character */
***********************************************************/
/***************************************************************) ;
output(port+SERDATA, ch);
#endif /* End conditional */
}
parordy(port)
int port;
{
int status;
int port;
{
while (serirdy(port) == 0) ;
return input(port+SERDATA);
}
int serordy(port)
int port;
O P Q R S T U V W X Y Z 0 1 2 3
4 5 6 7 8 9 - ^ @ [ port+SERCTRL, SERMODE);
output(port+SERCTRL, TTYON);
#if BAUD /* Conditional for 1200 baud */
output(CT_CTRL,CT0CTL); output (PARCTRL, 0x0A); /* set strobe low */
output (PARCTRL, 0x0B); /* set strobe high */
}
/*************************/
/* Generic Serial Port I/O Procedures */
/*****************************************************************
status = (input(port));
return (((status & PARBSY) != PARBSY) &&
((status & PARFLT) == PARFLT) ? 0xFF : 0);
}
parout
{
return(((input(port+SERSTAT) & SERXRDY) == SERXRDY) ? 0xFF : 0);
}
serout(port, ch)
int port;
char ch;
{
#if BAUD ; : ] , . /
*/
/* main keyboard UNSHIFTED. */
0xDD,'\\', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j /* Set baud rate genrator */
output(CT_232,baudRates[4]); /* Modify for different speeds */
output(CT_232,0); /* S********************************************************/
/* Olivetti keyboard translation table. */
/****************************/
/* define as extern the dirty flag, which is actually defined later */
/* on in this file. Used to flush the bu(port, ch)
int port;
char ch;
{
register int i, status;
i = 0;
do
{
if (--i == 0) /* only ', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', ' 0xB4,0xB5,0xB6,0x1B,
0xB8,0xB9,0xBA,0xBB,
0xBC,0xBD,0xBE,0xBF,
/* special -- substitute \r for Olivetti's 0xAF. 4 5
6 7 8 9
+ - * /
*/
/* other keys UNSHIFTED -- CR differs from Olivetti */
'return (parordy (PAR_B));
}
lptwr(ch) /* ARGSUSED */
char ch;
{
parout (PAR_A, ch);
}
/*****************************x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0xE0,0xE1,0xE2,0xE3,
0xE4,0xE5,0xD6,0xE7,0xE8,0xE9,0xEA,0xEB,0x00,0x1B,0x1E,0x1F,0x1D,0xtional */
#ifdef LOADER /* Conditional for Loader Bios disable KBD */
#define crtrd nulrd
#endif /* End conditional */8', '9', '-', '^', '@', '[', ';', ':', ']', ',', '.', '/',
/* main keyboard SHIFTED */
0xDE, '|', 'A', 'B', 'C', 'D', 'E',*/
'\r','\r','\r','\r'
};
#endif /* End conditional */
/******************************************************** ','\r',0x7f,0x08,
'.', '0',0xA6, '1',
'2', '3', '4', '5',
'6', '7', '8', '9',
'+', '-', '*', '/',
/* oth*******************************************/
/* generic device names, batch, and null devices */
/**************************FE,0xFF,0xA4,
/* main keyboard COMMAND */
0xDF,0xF8,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,
int crtws()
{
return(0xFF);
}
#define crtwr crt_put /* output routine in PROM */
/* TTY status, read, write rou 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '_', '!', '"', '#',
****************/
/* specific I/O procedures for use with iobyte */
/**********************************************er keys SHIFTED -- CR differs from Olivetti */
' ','\r',0xA8,0xA9,
'.', '0',0xA6,0x1C,
0x9A,0x1D,0x9B,0x9C,
**********************************************/
/* the device names are the offset of the proper field in iobyte */
#defin
0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xEC,0xED,0xEE,0xEF,
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0x13tines */
int ttyrs()
{
return(serirdy(RS232));
}
char ttyrd()
{
return(serin(RS232));
}
int ttyws()
{
return
'$', '%', '&','\'', '(', ')', '=', '~', '`', '{', '+', '*', '}', '<', '>', '?',
/* main keyboard CONTROL -- CTL B and C dif**************************/
/* CRT status, read, write routines */
int crtrs()
{
return( serirdy(KBD));
}
#ifndef L 0x9D,0x1E,0x9E,0x1F,
0x2B,0x2D,0x2A,0x2F,
/* other keys CONTROL */
' ','\r',0xA8,0xA9,
0xB0,0xB1,0xB2,0xB3,
e CON 0
#define READER 2
#define PUNCH 4
#define LIST 6
/* BATCH status, read, write routines */
#ifndef LOADER,0x1C,0xFC,0xFD,0x9F,0xF9,0xFA,0xA5,
/* other keys
SP CR S1 S2
KEYPAD . 0 00 1
2 3 (serordy(RS232));
}
ttywr(ch)
char ch;
{
serout(RS232, ch);
}
/* LPT status, output routines */
int lptws()
{
fer from Olivetti. */
0xA0,0x7F,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,
0x0F,0x10,0x11,0x12,0OADER /* NOT needed for the Loader Bios */
char crtrd()
{
return( kbtran[serin(KBD) & 0xff]);
}
#endif /* End condi /* NOT needed by the Loader Bios */
int batrs()
{
int genstat();
return genstat(READER);
}
char batrd()
{
int (*sttbl[DEVINDEX])() );
}
int genread(dev)
int dev;
{
return( (*rdtbl[DEVINDEX])() );
}
genwrite(dev, ch)
int dev;lst, nulst, /* reader */
ttyws, nulst, nulst, nulst, /* punch */
ttyws, crtws, lptws, nulst /* list */
};
char (*rd***/
/* */
/* DISK I/O */
/* */
/********************************************************************/
/* Generic I/O routines using iobyte */
/************************************************************************/
};
}
#ifdef DEBUG /* Conditional for Disk Debugging Hex output */
puthexd(i) /* put a hex digit to crt */
int i;
{
genread();
return genread(READER);
}
batwr(ch)
char ch;
{
genwrite(LIST, ch);
}
#endif /* End Conditional */
char ch;
{
(*wrtbl[DEVINDEX])(ch);
}
/************************************************************************/
tbl[16])() = {
ttyrd, crtrd, batrd, nulrd,
ttyrd, nulrd, nulrd, nulrd,
nulrd, nulrd, nulrd, nulrd,
nulrd, nulrd, nulrd, *******/
/************************************************************************/
/*************************************/*
** IObyte itself.
*/
char iobyte = 0x41;;
/*
** Device operation tables. DEVINDEX is the index into the
** table ai &= 0xf;
if (i < 10)
crtwr(i + '0');
else
crtwr(i + 'a' - 10);
}
puthexv(i) /* put an int in hex */
int i;
{
#ifdef LOADER /* NEEDED for the Loader Bios */
#define batrd nulrd
#define batrs nulst
#define batwr nulwr
#endif //* Error procedure for BIOS */
/************************************************************************/
bioserr(enulrd
};
int (*wrtbl[16])() = {
ttywr, crtwr, batwr, nulwr,
nulwr, nulwr, nulwr, nulwr,
ttywr, nulwr, nulwr, nulwr,
***********************************/
/* BIOS Table Definitions */
/*****************************************************ppropriate to a device (row) and its iobyte index (column)
**
** nonexistent devices are mapped into NUL.
*/
#define DEVINputhexd(i >> 12);
puthexd(i >> 8);
puthexd(i >> 4);
puthexd(i);
}
#endif /* End conditional */
/****************** End conditional */
/* NULL status, read, write routines */
int nulst()
{
return 0xFF;
}
char nulrd()
{
return rrmsg)
register char *errmsg;
{
printstr("\n\rBIOS ERROR -- ");
printstr(errmsg);
printstr(".\n\r")ttywr, crtwr, lptwr, nulwr
};
/*
** the generic service routines themselves
*/
int genstat(dev)
int dev;
{
return(*******************/
struct dpb
{
int spt; /* sectors per track */
char bsh; /* block shift = log2(blocksize/128) */DEX (((iobyte>>dev) & 3) + (dev * 2) )
int (*sttbl[16])() = {
ttyrs, crtrs, batrs, nulst, /* con */
ttyrs, nulst, nu*******************************************************/
/*********************************************************************0xFF;
}
nulwr(ch) /* ARGSUSED */
char ch;
{
}
/*********************************************************************;
while(1);
}
printstr(s) /* used by bioserr */
register char *s;
{
while (*s) {crtwr(*s); s += 1;
char blm; /* block mask = 2**bsh - 1 */
char exm; /* extent mask */
char dpbjunk; /* dummy field to allign words /
#define MAXDSK 3 /* max. number of disks */
#endif /* End conditional */
#ifdef TRANSFER /* Tranfer Conditional needss disks. This BIOS buffers
** a track at a time, so sector address translation is not needed.
**
** Sample tables are includ bls = 2K dsm = (disk size - 3 reserved tracks) / bls */
/* bls = 4K for hard disk (8640 - 24) / 4 */
#ifdef SECT2rectory buffer (128 bytes) */
struct dpb *dpbp; /* -> disk parameter block */
char *csvp; /* -> software check vector (cks16, 3};
struct dpb dpb2= /* --- 2 side, 16*256 sector, 80 track. 640kb --- */
{ 32, 4, 15, 0, 0, 314, 63, 0xC0, */
int dsm; /* size of disk less offset, in blocks */
int drm; /* size of directory - 1 */
char al0; /* reservation bi an extra dpb define*/
#define MAXDSK 4 /* Disk 4 is a pseudonym for disk 2, with */
#endif /* an old-style dpb to rescue ed for several different disk sizes.
*/
/* === Olivetti has 3 floppy formats & a hard disk === */
#define SECSZ 128 /* CP6 /* Conditional for 8" floppy drives */
/* === The Olivetti does not have 26-sector disks, but many people do.
** The bytes) */
char *alvp; /* -> alloc vector ((dsm/8)+1 bytes) */
};
/************************************************ 0, 16, 3};
struct dpb dpb3= /* --- 6 side, 32*256 sector, 180 trk. 8640kb --- */
{ 32, 5, 31, 1, 0, 2154, 511,ts for directory */
char al1; /* ... */
int cks; /* size of checksum vector = (drm+1)/4 */
int off; /* track offsetthose files. */
/* End conditional */
/***** spt, bsh, blm, exm, jnk, dsm, drm, al0, al1, cks, off, psh, psm */
s/M logical sector size */
#define TRKSZ 32 /* track size for floppies, 1/2 track sz for hd */
#define PSECSZ 256 /* Olivettfollowing parameter blocks are provided for their use.
*/
struct dpb dpbS= /* --- 1 side, 26*128 sector, 77 trk --- */
{ 2************************/
/* Disk Parameter Blocks */
/****************************************************************** 0xf0, 0, 0, 3};
#ifdef TRANSFER /* Conditional Tranfer dpb defined here */
struct dpb dpb4= /* --- 2 side, 16*256 sect for OS boot */
char psh; /* log2(sectorsize/128) */
char psm; /* physical size mask = 2**psh - 1 */
};
struct truct dpb dpb0= /* --- 1 side, 16*256 sector, 35 track. 140kb --- */
{ 32, 4, 15, 1, 0, 64, 63, 0xC0, 0, 16, i physical sector size */
#define PTRKSZ 16 /* physical track size */
#ifndef TRANSFER /* Conditional for Normal bios *6, 3, 7, 0, 0, 242, 63, 0xC0, 0, 16, 2};
struct dpb dpbD= /* --- 1 side, 26*256 sector, 77 trk --- */
{ 52, ******/
/*
** CP/M assumes that disks are made of 128-byte logical sectors.
**
** The Olivetti uses 256-byte sectors on itor, 35 track. 280kb --- */
{ 32, 4, 15, 1, 0, 120, 63, 0xC0, 0, 16, 10};
#endif /* End conditional */
/* dph
{
char *xltp; /* -> sector translation table */
int dphscr[3]; /* scratchpad for BDOS */
char *dirbufp; /* -> di3};
struct dpb dpb1= /* --- 2 side, 16*256 sector, 35 track. 280kb --- */
{ 32, 4, 15, 1, 0, 134, 63, 0xC0, 0, 4, 15, 0, 0, 242, 63, 0xC0, 0, 16, 2};
#endif /* End conditional */
/******************************************************************************/
#ifndef TRANSFER /* Normal bios dph conditional */
struct dph dphtab[3] =
{ {xl14, 20, 26, 6, 12, 18, 24, 4, 10, 16, 22 };
#endif /* End conditional */
char xlt16[32] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0; /* track buffer dirty */
int tbtrk; /* track buffer track # */
int tbdsk; /* track buffer disk # */
int dskerr; /** End conditional */
/************************************************************************/
/* Sector Translate Tab0, 0, 0}, dirbuf, &dpb4, csv3, alv3}, /*dsk d*/
};
#endif /* End conditional */
/***********************************************************************/
/* BDOS Scratchpad Areas */
/*******************************************************t16, {0, 0, 0}, dirbuf, &dpb1, csv0, alv0}, /*dsk a*/
{xlt16, {0, 0, 0}, dirbuf, &dpb1, csv1, alv1}, /*dsk b*/
{xl10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32};
/***************************************** disk error */
/************************************************************************/
/* Disk I/O Procedures */le */
/************************************************************************/
#ifdef SECT26 /* Conditional for************************************/
/* Currently Selected Disk Stuff */
/****************************************************************/
char dirbuf[SECSZ];
char csv0[16];
char csv1[16];
char csv2[32];
#ifdef TRANSFER /* For Transfer t16, {0, 0, 0}, dirbuf, &dpb3, csv2, alv2}, /*dsk c*/
};
#endif /* End conditional */
#ifdef TRANSFER /* Trnafer con*******************************/
/* Disk Parameter Headers */
/* */
/* Three disks are defined: dsk a: diskno=0,
/************************************************************************/
dskxfer(dsk, trk, bufp, cmd) /* transfer a d 8" floppy drives */
/* === The Olivetti does not have 26-sector disks, but many people do.
** The following translate t*************************/
int settrk, setsec, setdsk; /* track, sector, disk # */
long setdma; /* dma address with segmeconditional */
char csv3[16];
#endif /* End conditional */
char alv0[32]; /* (dsm0 / 8) + 1 */
char alv1[32]; /* (dsm1ditional with extra dph */
struct dph dphtab[4] =
{ {xlt16, {0, 0, 0}, dirbuf, &dpb1, csv0, alv0}, /*dsk a*/
{xlt16, { drive 0 */
/* dsk b: diskno=1, drive 1 */
/* dsk c: diskno=2, drive 10 */
/*******************************isk track */
register int dsk, trk, cmd;
register char *bufp;
/*
This is a handy place to keep notes on Olivetti blocable is provided for their use.
*/
char xlt26[26] = { 1, 7, 13, 19, 25, 5, 11, 17, 23, 3, 9, 15, 21,
2, 8, nt info: long */
char trkbuf[TRKSZ * SECSZ]; /* track buffer */
int tbvalid = 0; /* track buffer valid */
int tbdirty = / 8) + 1 */
char alv2[2002]; /* (dsm2 / 8) + 1 */
#ifdef TRANSFER /* For Transfer conditional */
char alv3[32];
#endif /0, 0, 0}, dirbuf, &dpb1, csv1, alv1}, /*dsk b*/
{xlt16, {0, 0, 0}, dirbuf, &dpb3, csv2, alv2}, /*dsk c*/
{xlt16, {k
numbering. For a floppy, bits 3-0 are sector, bit 4 is side,
and high-order bits are track. We define a floppy to have
t) || (tbdsk != setdsk))
#define gettrk if (wrongtk) filltb()
#ifndef LOADER /* NOT needed for Loader Bios */
flush()
{rror */
/* do transfer */
#ifdef DEBUG /* Conditional DEBUG output */
blknum = trk*PTRKSZ;
printstr("\nx */
char sectran(s, xp)
int s;
char *xp;
{
if (xp != 0) return xp[s]; else return s;
}
struct dph *seldisk(dsk, l will overflow into the real high-order bit of
the sector number. This works because we will always move
half a track at a tes. setdma is physical address */
mem_cpy(map_adr((long)p, CDATA), setdma, (long)SECSZ);
return(dskerr);
}
#ifndef wice as many sectors as there are on a track; thus, the
sector number overflows to the side bit and all is well. On
the hard
if ( tbdirty && tbvalid ) dskxfer(tbdsk, tbtrk, trkbuf, DSKWRITE);
tbdirty = 0;
}
#endif /* End conditionafer block ");
puthexv(blknum);
printstr(" unit ");
puthexd(dsk);
printstr(" track ");
puthexv(trk);
if (cmd == DSKREogged)
register char dsk;
char logged;
{
register struct dph *dphp;
if (dsk > MAXDSK) return(0L);
setdsk = dsk;
ime. The tracks and surfaces simply take
care of themselves, incrementing through the surfaces and
effectively minimizing seLOADER /* NOT needed by Loader Bios it doesn't write */
dskwrite(mode)
char mode;
{
register char *p;
gettrk;
p disk, bits 4-0 are sector (there are 32 per track),
and the high-order bits are (track*6)+surface, where surface
is in the l */
filltb()
{
#ifndef LOADER /* NOT needed by Loader Bios */
if ( tbvalid && tbdirty ) flush();
#endif /* EndAD)
printstr(" read");
else
printstr(" write");
crtwr(10); crtwr(13);
#endif /* End conditional */
if (0 != disk dphp = &dphtab[dsk];
if (dphp >= dphtab + (sizeof(dphtab)/sizeof(struct dph)) ) return(0L);
if ( ! logged )
{
/* ===eks.
*/
{
int blknum;
if (dsk==2)
dsk = 10; /* convert hard disk drive # */
#ifdef TRANSFER /* Conditional reasign= &trkbuf[SECSZ * (setsec-1)];
/* transfer between memory spaces. setdma is physical address */
mem_cpy(setdma, map_adrrange 0..5. To make the indexing of trkbuf consistent,
we define a hard disk to have only 32 logical (16 physical)
sectors p conditional */
dskxfer(setdsk, settrk, trkbuf, DSKREAD);
tbvalid = 1;
tbdirty = 0;
tbtrk = settrk;
tbdsk = setdsk_io(dsk, cmd, PTRKSZ, trk*PTRKSZ, map_adr((long)bufp,0)))
dskerr=1;
}
#define wrongtk ((! tbvalid) || (tbtrk != settrk disk not logged in. select density, etc. === */
}
return(dphp);
}
/********ment for Transfer */
if(dsk==3) dsk = 1; /* for transfer disks */
#endif /* End conditional */
dskerr=0; /* assume no e((long) p, CDATA), (long)SECSZ);
tbdirty = 1;
if ( mode == 1 ) flush();
return(dskerr);
}
#endif /* End conditionaler track, like a floppy. Thus we will transfer only
half a track to/from the buffer at a time, and the logical
sector number;
}
dskread()
{
register char *p;
gettrk;
p = &trkbuf[SECSZ * (setsec-1)];
/* transfer between memory spac****************************************************************/
/************************************************************r)d1);
break;
case 6: /* PUNCH */
genwrite(PUNCH, (char)d1);
break;
case 7: /* READER */
retur
long d1, d2;
{
switch(d0)
{
case 0: /* INIT */
biosinit();
break;
#ifndef LOADER /* Normal Bios uselush();
return((long)dskerr);
break;
#endif /* End conditional */
case 22: /* SETXVECT */
return(setxvec */
tbvalid = 0; /* init disk flags */
tbdirty = 0;
/* Following reset of iobyte on each warm boot has been */
/* WRITE */
return(dskwrite((char)d1));
break;
case 15: /* LISTST */
return(genstat(LIST));
break;
#************/
/* */
/* BIOS PROPER */
/* */
/************************************************n(genread(READER));
break;
case 8: /* HOME */
settrk = 0;
break;
#endif /* End conditional */
ca */
case 1: /* WBOOT */
wboot();
break;
#endif /* End conditional */
case 2: /* CONST */
returnt((int)d1, d2));
break;
} /* end switch */
return(0);
} /* end bios procedure */
/* End of C Bio/* removed, so that STAT can reassign devices. iobyte */
/* is now initialized on cold boot only. */
/* iobyte = 0x41; */endif /* End conditional */
case 16: /* SECTRAN */
return(sectran((int)d1, (char*)d2));
break;
case 18: ************************/
/************************************************************************/
biosinit()
{
se 9: /* SELDSK */
return((long)seldisk((char)d1, (char)d2));
break;
case 10: /* SETTRK */
settrk = (int)(genstat(CON));
break;
case 3: /* CONIN */
return(genread(CON));
break;
case 4: /* CONOUT */
gs */
 /* con, list = CRT; rdr, punch = TTY */
}
/* In the LOADER bios, the main routine is called "bios", not "_bios" */
#ifdef /* GMRTA */
return((long)&memtab);
break;
#ifndef LOADER /* Normal Bios use */
case 19: /* GETIOB */
ret
#ifdef DEBUG /* Conditional banner for DEBUG */
printstr("\r\nCP/M-8000: Olivetti M20 BIOS DEBUG");
#endif /* End condid1;
break;
case 11: /* SETSEC */
setsec = (int)d1;
break;
case 12: /* SETDMA */
setdma = d1;
benwrite(CON, (char)d1);
break;
#ifndef LOADER /* Normal Bios use */
case 5: /* LIST */
genwrite(LIST, (cha */
 LOADER /* Loader Bios conditional */
#define _bios bios
#endif /* End conditional */
long _bios(d0, d1, d2)
int d0;urn((long)iobyte);
break;
case 20: /* SETIOB */
iobyte = (char)d1;
break;
case 21: /* FLUSH */
ftional */
/* serinit(KBD);*/ /* DON'T init keyboard serial port */
serinit(RS232); /* init rs232 serial port reak;
case 13: /* READ */
return(dskread());
break;
#ifndef LOADER /* Normal Bios use */
case 14: 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹rel biosasm.o bios.o fpedep.o fpe.o
pip c:bios.rel[g5]=bios.rel
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹********************************************
;*
;* Data
;*
;****************************************************
__bss: .裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹;*********************************************
;Build the assembly modules using conditionals
;
__text: .sect
;
;by setting裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹; build a bios with floating point emulation NOTE biosboot.o is loaded 1st
zcc -c -M1 bios.c
asz8k -o biosasm.o biosasm.8kn
asect
_sysseg: .block 2 ;system segment
_usrseg: .block 2 ;user segment
_sysstk: .block 4 ;system stack pointer
_psap: .bl裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 the value of the label LOADER false
;(0) the normal Bios code will be generated
;while setting the label to true (1) will 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹sz8k -o fpedep.o fpedep.8kn
asz8k -o fpe.o fpe.8kn
ld8k -w -o bios.rel -r biosasm.o bios.o fpedep.o fpe.o
ar8k qv bios.a biosock 4 ;program status area ptr
;****************************************************
;*
;* Trap vector table
;*
;* entr裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
;provide the loader Bios code.
;
LOADER .equ 0 ; 1 or 0 which ever
;
;
.input "biosdefs.8kn"
.input "biosboot.8kn"
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹.rel biosasm.o bios.o fpedep.o fpe.o
pip c:bios.rel[g5]=bios.rel
ies 0..31 are misc. system traps
;* entries 32..47 are system calls 0..15
;*
;***********************************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
.input "biosif.8kn"
.input "biosio.8kn"
.input "biosmem.8kn"
.input "biostrap.8kn"
.input "syscall.8kn"
;********裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹*****
_trapvec:
.block NTRAPS*4
;****************************************************
;******************************oint is
;* called "bios", is passed a valid stack
;* and PSA pointer.
;*
;* Although this code runs segmented, it must
;* g) -- adapt for nonseg.
;* 820930 S. Savitzky (Zilog) -- created
;* 840813 R. Weiser (DRI) -- conditional assembly
;*
;***************************
;****************************************************
;*
;* Globals
;*
;**********************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹per.
;*
;* The first sector on track 1 is the PCOS file
;* descriptor block; the second is the boot file
;* header and the s**********************
; ***** 8/15/84 R.F.W. *****
be linked with non-segmented code, so it
;* looks rather odd.
;*
;****************************************************
;***********************************************
__text: .sect
;****************************************************
;*
;******************************
.if LOADER
.global _startld ;entry to read system tracks
.endif
;*********************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹tart of the system code.
;*
;* This leaves something under 28K for the
;* system (BIOS+BDOS+CCP). It is assumed that
;* th*********************
; ***** 8/15/84 R.F.W. *****
****************************************************
;*
;* CP/M - 8000 on the Olivetti M20.
;*
;* Olivetti's peculiar forma* NOTE -- THIS CODE IS HIGHLY SYSTEM-DEPENDENT
;*
;* This module contains both the bootstrap
;* writer, and the code that rec*******************************
;*
;* Externals
;*
;****************************************************
.global bios
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹e system starts at its lowest address,
;* and that data follows immediately after code.
;*
;* For now, we assume that the sys裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹t, has a lot of
;* Olivetti's file system in it.
;*
;* Track 0 is unused except for sector 0, since
;* it is single densityeives control
;* after being booted.
;*
;* The main function of the latter is to make
;* sure that the system, whose entry p.if LOADER
.else ; no warm boots in loader bios
.global _wboot
.endif
;***********************************************;******** biosboot.8kn for cpm.sys + cpmldr.sys*****
;* Copyright 1984, Digital Research Inc.
;*
;* 821013 S. Savitzky (Zilotem starts at
;* <<11>>0000 (hex) for normal system
;* <<10>>0000 (hex) for boot system
;*
;******************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 and thus has smaller
;* sectors.
;*
;* A total of 10 tracks are reserved from CP/M,
;* leaving 9 tracks for the system pro*****
;*
;* Constants
;*
;****************************************************
.if LOADER
BOOTSYS .equ 0A000000h ;sypts
out @r2,r3
ldar r2, $ ; go
ld r3,#bios
jp @r2
.if LOADER
.else ;no warmboot in loader bios
wboot:os
jr wboot
.endif
jr entry
;* post-boot init.
entry: ;SEGMENTED
.if LOADER
_startld:
.endif
DI VI,NVI;************ biosdefs.8kn **************************
;*
;* Assembly language definitions for
;* CP/M-8000 (tm) BIOS
;*
;* ; data in sector 1
SEG4 .equ 04000000h
SEG2 .equ 02000000h
SYSPSA .equ SEG2+100h ; system PSA
BOOTPSA .equ SEG4+100h ; P裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹stem address on boot
BOOTSTK .equ BOOTSYS+0BFFEh ;system stack top on boot
.else
SYSTEM .equ 0B000000h ; system address
SYS ldar r2, $
ld r3,#_wboot
jp @r2
.endif

.if LOADER
ldl rr14, #BOOTSTK ;init boot stack pointer
.else
ldl rr14, #SYSSTK ;init normat stack pointer
.endif
821013 S. Savitzky (Zilog) -- created.
;*
;****************************************************
;*
;* System Calls and TSA in PROM for boot
sscall .macro ;short segmented call
.word 05f00h
.word ?1
.endm
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹STK .equ SYSTEM+0BFFEh ; system stack top
.endif
;rtc_ext .equ 02000022h ; real-time clock
; ext. call addr
BPT .equldar r2, $
ld r3,#_wboot
jp @r2
.endif
 ldl rr2, #SYSPSA ; copy PROM's PSA
ldctl r4, psapseg
ldctl r5, psapoff
ld r0, #570/2
ldir @r2, @r4, r0
ldl rr2, #SYrap Indexes
;*
;****************************************************
XFER_SC .equ 1
BIOS_SC .equ 3
BDOS_SC .equ 2
MEM_SC
;****************************************************
;*
;* Entry Points and post-boot Initialization
;*
;*****裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 16 ; #blocks in a track
BPS .equ 256 ; #bytes in a sector
NBLKS .equ 9*16 ; #blocks in boot
HDRSIZE .equ 24 ; #bytes in裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹SPSA ; shift PSA pointer
ldctl psapseg, r2
ldctl psapoff, r3
ld r2,#142h ;CROCK-- turn off
ld r3,#1feh ; usart interru .equ 1
DEBUG_SC .equ 0
;* the traps use numbers similar to those in the
;* 68K version of P-CP/M
NTRAPS .equ 48 ;total ***********************************************
;* transfer vector
.if LOADER
.else ; no warm boot in the loader bi裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 header
FILSIZE .equ 256*(NBLKS-1) ; file data size
SYSSIZE .equ FILSIZE-HDRSIZE ; total system size
S1SIZE .equ BPS-HDRSIZE 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹number of traps
SC0TRAP .equ 32 ;trap # of system call 0
;Z8000 traps
EPUTRAP .equ 1 ;EPU (floating pt. emulator)
SEler Stack Frame
;*
;****************************************************
cr0 .equ 0 ;WORD caller r0
cr1 .equ cr0+2 ;WOR*******************
SEG .MACRO ; START segmented mode
; r0 destroyed.
ldctl r0,FCW
set r0,#15
ldctl FCW,r0
.裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
PCSIZE .equ 2 ;PC size non-segmented
INTSIZE .equ 2 ;INT data type size
LONGSIZE .equ 4 ;LONG data type size
ARG1 .eequ nr15+2 ;WORD SC instruction
scfcw .equ scinst+2 ;WORD caller FCW
scseg .equ scfcw+2 ;WORD caller PC SEG
scpc .equ scsGTRAP .equ 2 ;segmentation (68K bus err)
NMITRAP .equ 0 ;non-maskable int.
PITRAP .equ 8 ;priviledge violation
;InterruD caller r1
cr2 .equ cr1+2 ;WORD caller r2
cr3 .equ cr2+2 ;WORD caller r3
cr4 .equ cr3+2 ;WORD caller r4
cr5 .equ cr4ENDM
NONSEG .MACRO ; END segmented mode
; r0 destroyed.
ldctl r0,FCW
res r0,#15
ldctl FCW,r0
.ENDM
sc裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹qu PCSIZE ;integer arguments
ARG2 .equ ARG1+INTSIZE
ARG3 .equ ARG2+INTSIZE
ARG4 .equ ARG3+INTSIZE
ARG5 .equ ARG4+INTSIZE
eg+2 ;WORD caller PC OFFSET
FRAMESZ .equ scpc+2
pts, etc.
TRACETR .equ 9 ; trace
;****************************************************
;*
;* C Stack frame equates
;*
+2 ;WORD caller r5
cr6 .equ cr5+2 ;WORD caller r6
cr7 .equ cr6+2 ;WORD caller r7
cr8 .equ cr7+2 ;WORD caller r8
cr9 .all .MACRO ;(segaddr) segmented CALL
.word 05F00h
.long ?1
.ENDM
sscall .MACRO ;(|segaddr|) short segmented CAL裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
;****************************************************
;*
;* Segmented Mode Operations
;*
;* NOTE: segmented indirect-reg+2 ;WORD caller PC OFFSET
FRAMESZ .equ scpc+2
;* A C stack frame consists of the PC on top,
;* followed by the arguments, leftmost argument first.
;*
;* The caller adjustsequ cr8+2 ;WORD caller r9
cr10 .equ cr9+2 ;WORD caller r10
cr11 .equ cr10+2 ;WORD caller r11
cr12 .equ cr11+2 ;WORD cL
.word 05F00h
.word ?1
.ENDM
;****************************************************
;*
;* System Call Trap Hand裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹gister operations
;* can be done by addressing the low half
;* of the register pair.
;*
;*********************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 the stack on return.
;* Returned value is in r7 (int) or rr6 (long)
;*
;****************************************************aller r12
cr13 .equ cr12+2 ;WORD caller r13
nr14 .equ cr13+2 ;WORD normal r14
nr15 .equ nr14+2 ;WORD normal r15
scinst .裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹*
;****************************************************
.global bios ; initialization
.if LOADER ; If Loader stub out
;*
;* Externals
;*
;****************************************************
.global _biosinit ;C portion init
.if LOa return will warm boot
push @r15,#_wboot
.endif
; set up traps, then enable interrupts
call _trapinit
EI VI,NVI
********************************************
;*
;* NOTE
;* The C portion of the BIOS is non-segmented.
;*
;* This assembly*************************************************
bios:
; enter in segmented mode.
; Get system (PC) segment into r4
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹_wboot
.else
.global _wboot ; warm boot
.endif
.global _input ; input a byte
.global _output ; output a byte
;**ADER ; If LOADER is True then
.global _ldcpm ; Load the system into memory
.else ; else its the normal bios
.g
; set up C part of Bios
call _biosinit
; Turn control over to command processor
.if LOADER
jp _ldcpm ; do Program l-language module is assembled
;* non-segmented, and serves as the interface.
;*
;* Segmented operations are well-isolated, an
DI VI,NVI
calr kludge ; get PC segment on stack
kludge: popl rr4, @r14
; get PSAP into rr2.
ldctl r2, PSAPSEG
ldct;********* biosif.8kn for cpm.sys + cpmldr.sys *******
;* Copyright 1984, Digital Research Inc.
;*
;* Assembly language inte**************************************************
;*
;* Bios Initialization and Entry Point
;*
;* This is where control comlobal _flush ;Flush buffers
.global ccp ;Command Processor
.endif ; end conditional
.global _trapinit ;trap staoad
.else
jp ccp
;*****************************************************
;*
;* Warm Boot
;*
;* flush buffers and inid
;* are either the same as their non-segmented
;* counterparts, or constructed using macros.
;* The resulting code looks a ll r3, PSAPOFF
; go non-segmented. save PSAP, system segment,
; system stack pointer (in system segment, please)
NONSEG
rface for CP/M-8000(tm) BIOS
;* ----- System-Independent -----
;*
;* 821013 S. Savitzky (Zilog) -- split into modules
es after boot.
;* If (the label LOADER is true 1)
;* Control is transferred to -ldcpm
;* else
;* Control is transferred trtup
.global _psap, _sysseg, _sysstk
;****************************************************
;*
;* Global declarations
;tialize Bios
;* then transfer to CCP
;*
;*****************************************************
_wboot:
call _flush
calittle odd.
;*
;****************************************************
;****************************************************
ldl _psap, rr2
ld _sysseg, r4
ld r14,_sysseg
ldl _sysstk, rr14
.if LOADER
.else
; set up system stack so that ;* 820913 S. Savitzky (Zilog) -- created.
;* 840811 R. Weiser (DRI) -- conditional assembly
;*
__text: .sect
;********o the ccp.
;*
;* We get here from bootstrap with:
;* segmented mode
;* valid stack pointer
;* valid PSA in RAM
;*
;***l _biosinit
ldl rr14,_sysstk
jp ccp
.endif
;****************************************************
;*
;* I/O port ope************************
;.input "biosdefs.8kn"
;****************************************************
;*
;* Global tem.
;*
;* 821013 S. Savitzky (Zilog) -- created.
;*
__text: .sect
;***************************************************EG clobbers r0
ld r0,r1 ;rl0 = char
scall 84000080h
NONSEG
ldm r8,@r15,#7 ;restore regs
inc r15,#14
ret
_c******
,14+ARG5(r15)
;rh7 = drive #
;rl7 = command
;r8 = block count
;r9 = block number
;rr10 = segmented addrerations
;*
;* int = input(port: int)
;* output (port, data: int)
;*
;****************************************************
declarations
;*
;****************************************************
.global _disk_io
.global _crt_put
.global _col*
;*
;* NOTE The Olivetti PROM routines are segmented.
;* The C portion of the BIOS is non-segmented.
;*
;* This assembly-lold_boot:
SEG
scall 8400008Ch
NONSEG
ret
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ss
SEG
scall 84000068h
NONSEG
;r8 = block count not transferred
;rh7 = #retries
;rl7 = final error code (RE
_input:
ld r2,ARG1(r15)
subl rr6,rr6
inb rl7,@r2
ldb rl6,rl7
ret
_output:
ld r2,ARG1(r15)
ld r3,ARG2(r15)
d_boot
;****************************************************
;*
;* Prom Subroutine Access
;*
;*****************anguage module is assembled
;* non-segmented, and serves as the interface.
;*
;* Segmented operations are well-isolated, and
ld_boot:
SEG
scall 8400008Ch
NONSEG
ret
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹TURNED)
;rh6 = error retried
and r7,#0FFh ;value returned in r7
ldm r8,@r15,#7 ;restore regs
inc r15,#14
ret
outb @r2,rl3
ret
;*****************************************************
;*********************************************************************************
_disk_io: ;err=disk_io(drv, cmd, count, blk, addr)
dec r15,#14 ;save registers
ldm
;* are either the same as their non-segmented
;* counterparts, or constructed using macros.
;*
;****************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹;************ biosio.z8k **************************
;*
;* I/O routines for CP/M-8000(tm) BIOS
;* for Olivetti M20 (Z8001) sys
_crt_put: ;crt_put(char)
dec r15,#14 ;save registers
ldm @r15,r8,#7
ld r1,14+ARG1(r15) ;get arg in r1
SEG ; S*******
 @r15,r8,#7
ldb rh7,14+ARG1+1(r15) ;get args
ldb rl7,14+ARG2+1(r15)
ld r8, 14+ARG3(r15)
ld r9, 14+ARG4(r15)
ldl rr10裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
.global _sysseg, _usrseg, _sysstk, _psap
.global memsc
;****************************************************
;*
;***********************
;*
;* This module copies data from one memory space
;* to another. The machine-dependent parts of
;************
memsc: ;memory manager system call
; CALLED FROM SC
; IN SEGMENTED MODE
; rr6: source
; r裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹: dest
;* rr2: length (0 < length <= 64K)
;* returns
;* registers unchanged
;*
;* system call: map_adr
;* rr6: logical a裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹* Externals
;*
;****************************************************
.global xfersc
;********************************* the mapping are well isolated.
;*
;* Segmented operations are well-isolated, and
;* are either the same as their non-segmenr4: dest / space
; rr2: length / 0
testl rr2
jr z mem_map
mem_copy: ; copy data.
; rr6: source
; rr4: d;******* biosmem.8kn for cpm.sys + cpmldr.sys ********
;* Copyright 1984, Digital Research Inc.
;*
;* Memory Management for ddr
;* r5: space code
;* r4: ignored
;* rr2: 0
;* returns
;* rr6: physical addr
;*
;* space codes:
;* 0: caller data
;裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹********************
;*
;* System/User Memory Access
;*
;* _mem_cpy( source, dest, length)
;* long source, dest, length;
ted
;* counterparts, or constructed using macros.
;*
;****************************************************
;************est
; rr2: length
ldirb @r4,@r6,r3
ldl rr6,rr4 ; rr6 = dest + length
ret
mem_map: ; map address
; rr6: sourCP/M-8000(tm) BIOS
;* for Olivetti M20 (Z8001) system.
;*
;* 821013 S. Savitzky (Zilog) -- split modules
;* 820913 S. Savitz* 1: caller program
;* 2: system data
;* 3: system program
;* 4: TPA data
;* 5: TPA program
;*
;* x+256 x=1, 3, 5 : segmen裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹;* _map_adr( addr, space) -> paddr
;* long addr; int space;
;*
;* _map_adr( addr, -1) -> addr
;* sets user seg# from ****************************************
;*
;* Global declarations
;*
;****************************************************
ce
; r4: caller's seg.
; r5: space
; r2: caller's FCW
NONSEG
cp r5,#-2 ; space=-2: xfer
jp eq xferscky (Zilog) -- created.
;* 840815 R. Weiser (DRI) -- conditional assembly
;*
__text: .sect
;*****************************ted I-space addr.
;* instead of data access
;*
;* FFFF: set user segment
;*
;****************************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹addr
;*
;* _map_adr( addr, -2)
;* control transfer to context at addr.
;*
;* system call: mem_cpy
;* rr6: source
;* rr4
ld r4,scseg+4(r15)
ld r2,scfcw+4(r15)
calr map_1
ldl cr6+4(r15),rr6 ; return rr6
SEG
ret
map_1: ; dispatch
cpb rh6,#8
ret ne
ldb rh6,#10
ret
s not
; separate code, data
usr_data:
ld r0, #-1
cp r0, _usrseg
ret eq
ld r6, _usrseg
ret
usr_prog:
ld r0code to invalidate track buffer
;* contents when disk drive motor stops
;* (fixes directory-overwrite on disk change)
;* f the system dependencies are in map_prog,
;* which maps a program segment into a data segment
;* for access as data.
;*
c裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
cp r5,#0FFFFh
jr eq set_usr ; space=-1: user seg
cpb rl5,#0
jr eq call_data
cpb rl5,#1
jr eq call_prog
cpb rlcpb rh6,#8
ret ne
ldb rh6,#10
ret
, #-1
cp r0, _usrseg
jr eq map_prog
ld r6, _usrseg
jr map_prog
map_prog: ;map program addr into data
; rr6 = 830305 D. Sallume (Zilog) -- added FPE trap
;* code.
;* 840815 R. WEISER (DRI) -- conditional assembly
;*
__text: all_data:
bit r2,#15 ; segmented caller?
ret nz ; yes-- use passed seg
ld r6,r4 ; no -- use pc segment
ret ; alrea裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹5,#2
jr eq sys_data
cpb rl5,#3
jr eq sys_prog
cpb rl5,#4
jr eq usr_data
cpb rl5,#5
jr eq usr_prog
ret ;defau裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹address
testb rh5 ; data access?
ret nz ; no: done
and r6,#7F00h ; extract seg bits
; olivetti: segment 8 is t.sect
;****************************************************
;*
;* NOTE
;* Trap and interrupt handlers are started up
;* dy mapped
call_prog:
bit r2,#15 ; segmented caller?
jr nz map_prog ; yes-- use passed seg
ld r6,r4 ; no -- use pc seg;********** biostrap.8kn cpm.sys + cpmldr.sys ******
;* Copyright 1984, Digital Research Inc.
;*
;* Trap handlers for CP/M-8lt: no mapping
set_usr: ;-1: set user seg.
ld _usrseg,r6
ret
;*
;*** THE FOLLOWING CODE IS SYSTEM-DEPENDENT ***
;*裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹he only one with
; separate I and D spaces, and
; the program space is accessed
; as segment 10's data.
in segmented mode.
;*
;****************************************************
;********************************************ment
jr map_prog ; map prog as data
sys_data:
ld r6, _sysseg
ret
sys_prog:
ld r6, _sysseg
ret ; assume sys doe000(tm) BIOS
;*
;* 821013 S. Savitzky (Zilog) -- created
;* 821123 D. Dunlop (Zilog) -- added Olivetti M20-
;* specific
;* rr6= logical address
;* r4 = caller's PC segment
;* r2 = caller's FCW
;* returns
;* rr6= mapped address
;*
;* Most o裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹********
;*
;* Externals
;*
;****************************************************
.if LOADER
.global _bios ; C portioso passed
;* intact to the handler.
;*
;****************************************************
__text: .sect
sc_trap: ;sumed that the system runs
;* non-segmented on a segmented CPU.
;*
;* _trap is jumped to segmented, with the
;* following iEPUTRAP
jr _trap
pi_trap:
push @r14,#PITRAP
jr _trap
seg_trap:
push @r14,#SEGTRAP
jr _trap
nmi_trap:
push @******
rtc_ext: .equ 82000022h ;Place to put address
; of list of functions
; for each clock tick
motor_on: .equ a kludge)
SEG
popl rr0,@r14
calr trap_1
jr _trap_ret
trap_1: ; jp @rr0
pushl @r14,rr0
ret
_trap_ret: ;ren of Loader Bios
.else
.global __bios ;C portion of Normal Bios
.endif
.global memsc ;memory-management SC
.global _tystem call trap server
push @r14,@r14
_trap:
sub r15,#30 ; push caller state
ldm @r14,r0,#14
NONSEG ; go nonnformation on the stack:
;*
;* trap type: WORD
;* reason: WORD
;* fcw: WORD
;* pc: LONG
;*
;* The trap handlr14,#NMITRAP
jr _trap
.if LOADER
.else ; not used in Loader Bios
;**************************************************82000020h ;Disk motor timeout
;****************************************************
;*
;* Global declarations
;*
;*******turn from trap or interrupt
NONSEG
ld r1,nr15(r15) ; pop state
ld r14,nr14(r15)
ldctl NSP,r1
SEG ; go segmented fobvalid ;disk track buff valid
.global _tbdirty ;disk track buff is dirty
.global _tbdsk ;current drive code
.global _ssegmented
ldctl r1,NSP
ld nr14(r15),r14
ex r1,nr15(r15)
; trap# now in r1
cpb rh1,#7Fh ; system call?
jr ne trer is called as a subroutine,
;* with all registers saved on the stack,
;* IN SEGMENTED MODE. This allows the trap
;* handle**
;*
;* Bios system call handler
;*
;****************************************************
biossc: ;call bios
NONSE*********************************************
.global _trapinit
.global _trapvec
.global _trap
.global xfersc
;r the iret.
ldm r0,@r14,#14
add r15,#32
iret ; return from interrupt
;*****************************************ysseg, _usrseg, _sysstk, _psap,
.if LOADER
.else ; only the normal Bios
.global fp_epu
.endif
;*******************ap_disp ; no
; yes: map it
clrb rh1
add r1,#SC0TRAP
;=== need range check ===
trap_disp: ; dispatch
sll r1,#2r to be in another segment (with some
;* care). This is useful mainly to the debugger.
;*
;* All registers except rr0 are alG
; r3 = operation code
; rr4= P1
; rr6= P2
ld r0,scfcw+4(r15) ; if caller nonseg, normal
and r0,#0C000h
****************************************************
;*
;* System Call and General Trap Handler And Dispatch
;*
;* It is ass***********
;*
;* Assorted Trap Handlers
;*
;****************************************************
epu_trap:
push @r14,#*********************************
;*
;* M-20 ROM scratchpad RAM addresses
;*
;**********************************************
ldl rr0,_trapvec(r1)
testl rr0
jr z _trap_ret ; zero -- no action
; else call seg @rr0
pushl @r15,rr0 ; (done vijr nz seg_ok
ld r4,scseg+4(r15) ; then add seg to P1, P2
ld r6,r4
seg_ok:
; set up C stack frame
;===
pushl @r15nz ; ...return without invalidating
ld r5,#_tbvalid
clr @r4 ;No: mark track buffer
ret ; invalid
; Table of funct*****************************
;*
;* _motor_c -- check if disk motor still running.
;* Entered each clock tick. Invalitrapvec+(MEM_SC+SC0TRAP)*4,rr2
.if LOADER
.else ; not used by Loader Bios
lda r3,fp_epu
ldl _trapvec+EPUTRAP*4,rr2
.efset
;*
;* The system stack pointer is not affected.
;*
;* Control never returns to the caller.
;*
;**********************trap
psa_seg .equ 4*ps ; segmentation trap
psa_nmi .equ 5*ps ; non-maskable interrupt
psa_nvi .equ 6*ps ; non-vectored interr,rr6
pushl @r15,rr4
push @r15,r3
; call C program
call __bios
; clean stack & return
add r15,#10
ldl cr6ions run each real time clock tick
_ticktab:
.long -1 ;Will contain _motor_c
.word 0ffffh ;Terminator
;*************dates
;* track buffer when motor stops
;* (Note: runs segmented)
;*
;*****************************************ndif
; initialize some PSA entries.
; rr0 PSA entry: FCW (ints ENABLED)
; rr2 PSA entry: PC
; rr4 -> PSA slot
ldl rr4,******************************
xfersc: ;enter here from system call
SEG
; build frame on system stack
; when calledupt
psa_vi .equ 7*ps ; vectored interrupt
psa_vec .equ psa_vi+(ps/2) ; vectors
_trapinit:
; initialize trap table
+4(r15),rr6 ; with long in rr6
SEG
ret
.endif
;****************************************************
;*
;* Context S***************************************
;*
;* _trapinit -- initialize trap system
;*
;*************************************************
_motor_c:
ld r5,#_tbdsk ;Which disk is it?
cp r5,#2 ; is it the hard disk
ret z
ldl rr4,#motor_on ;Motor_psap
SEG
ldl rr0,#0000D800h ; traps here
add r5,#ps ; EPU trap
ldar r2,epu_trap
ldm @r4,r0,#4
add r5,#ps ; P from system call, the frame replaces
; the caller's context, which will never be resumed.
inc r15,#4 ;discard return addrlda r2,_trapvec
ld r0,#NTRAPS
subl rr4,rr4
clrtraps:
ldl @r2,rr4
inc r2,#4
djnz r0,clrtraps
ld r2,_sysseg
.if Lwitch System Call
;*
;* xfer(context)
;* long context;
;*
;* context is the physical (long) address of:
;* r0
;* ...
;* **************
;*
;* PSA (Program Status Area) structure
;*
ps .equ 8 ; size of a program status entry
; --- segment running?
test @r4
ret nz ;Yes: do nothing
ldar r4,$
ld r5,#_tbdirty ; Is track buff dirty?
test @r4 ; Yes...
ret riviledged Inst
ldar r2,pi_trap
ldm @r4,r0,#4
add r5,#ps ; System Call
ldar r2,sc_trap
ldm @r4,r0,#4
add r5,#ps
ldl rr4,rr14 ;move context
ld r2,#FRAMESZ/2
ldir @r4,@r6,r2
jr _trap_ret ;restore context
;***********************OADER
.else ;not used by Loader Bios
lda r3,biossc
ldl _trapvec+(BIOS_SC+SC0TRAP)*4,rr2
.endif
lda r3,memsc
ldl _r13
;* r14 (normal r14)
;* r15 (normal r15)
;* ignored word
;* FCW (had better specify normal mode)
;* PC segment
;* PC ofed ---
psa_epu .equ 1*ps ; EPU trap offset
psa_prv .equ 2*ps ; priviledged instruction trap
psa_sc .equ 3*ps ; system call ; segmentation
ldar r2,seg_trap
ldm @r4,r0,#4
add r5,#ps ; Non-Maskable Int.
ldar r2,nmi_trap
ldm @r4,r0,#4
; ゥQ匂_<>
<EFBFBD>@a<>ゥA迩_<>
<EFBFBD><>ゥ1弐_<>
<EFBFBD>7a<37>ゥ!尼_<> _a<>ゥq/<2F> <02>!<00><>!。g^ _a<>/<2F>。F<EFBDA1>a<00>a<00>!<00><>K<02>a<02>!<00><>K<02>a<02><>
<08>
<EFBFBD><13><1C>
}}
}o<>m<>
<7F><03>T <0C><08> 択}}
歩゚<EFBFBD> _
<EFBFBD>チ_0MRMT^ _a<>!V^_琲N
<EFBFBD>_イアj^
<EFBFBD>_牾j顏`<60> アp/<2F>
<EFBFBD>_<>7`<60>
アp/<2F><> ア`賑_「ゥ<EFBDA2>h鞦a<E99EA6>o裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ス _a<>『`Xア`a<>抗ウkadz@アp^ _`<60>アp/<2F><>`
XアPa<50>坑ウ[ゞaS<00>0^ _a<>
<EFBFBD>_l/<2F>l
<EFBFBD>et up Real-Time Clock external call loc
ldar r2,_motor_c
ldar r4,_ticktab
ldl @r4,rr2
ldl rr2,#rtc_ext
ldl @r2,rr4
ヲ衡踵a<E8B8B5>/<2F>アp^ _a<>ゥq/<2F> <01>!<00><>!。g^ _a<>ゥq/<2F> ⅶ`<60>ア`/<2F><>匂_<>_a<><04><>}}
a<EFBFBD>a<>}}}
<1C>
 {
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>霤}}
<EFBFBD><EFBFBD>!サa@靺! <02><04>
D<EFBFBD>4<04><>!
D<EFBFBD>!
H<EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>%a<>o<00> T<>]<00>_ アj靜a<E99D9C> /<2F><>_|ゥ<>pアj霤!&紘霑Q<E99C91>
S<EFBFBD>_<>雉T<E99B89>^メa<EFBE92>紘^メT<EFBE92>断^リa<EFBE98>工a<E5B7A5>
<EFBFBD><17>

<EFBFBD><15>r<><01><>|
ソ<>}D}U!サA },}=!B!<01>?#4<02><>!:(|穂}$}5}}
]oa]_`|(_l<>^ _a<><04> 廠p/<2F> <0C><>_a<>a<>a<>a<>
<02>ス凱
<EFBFBD>。ァ紘鐸_<><EFBDA9>糞Y
<EFBFBD>乳虹_ゥ綠t<E7B6A0>M
NONSEG
ret
;****************************************************
;****************************************************
/<2F>o<><6F> <02>
a<EFBFBD><EFBFBD> <10>!<00><>!。W^ _€€<C280>
<EFBFBD>_l^
<EFBFBD>V衡踈`<60>アp/<2F><>_<>
<EFBFBD>
<EFBFBD><>
<EFBFBD>
<EFBFBD><00> !0奪$ゥ#<23>av<00>}}
4<02>rI4<02>lI4<02><>I4<02>ZI4<02>TI4<02>f4<04><>B<02>"$}}
<1C>_
<EFBFBD>a<><>T<><02>a<>工T<E5B7A5>咫/q。7紘<37>!8_a<>a<>T<>L<>ノ]<5D>フスタ。<EFBE80>!。粒p/<2F>
<EFBFBD>_<>3。粒p/<2F>。墨<07>*v<>ネ_^a<>断</<2F><><EFBFBD>a<>a<>>+<2B><><1C>`<60>`<60>a<>a<>T<>}}
_<00>h}}
<00><1C><><EFBDA9><><1C>a<>}}
_<00>€}}
<1C><><EFBDA9>}^ _
<EFBFBD>
<EFBFBD>S<>S<>_<>RMTaoao^ _MR<>
aK<00>aK<00>_ウyvx<76>€€琢Q<E790A2>
<EFBFBD> NONSEG
ret
;****************************************************
;****************************************************
_<> _
<EFBFBD>。_ヲ^ _!<00>^ _
<EFBFBD>チ_ヲ^ _
<EFBFBD>チ_メアp^ _
<EFBFBD>チ_<03> _`<60>アp/<2F>
<EFBFBD>チ_"ゥ<> _<00>T<><04><><EFBFBD><EFBFBD><EFBFBD>"<01>T<>T<>T<>
<01>T<>a<><06>"<01> _a<>『『TxT<>]t陪^ _
<EFBFBD>7a<37>ゥq肉_<>
<EFBFBD>7a<37>ゥa賑_<>
<EFBFBD>7a<37>/<2F>
a<>ハLh a<>ハLXa<>ハ/<2F>
<EFBFBD>_<>|<7C>v<>ネ/<2F>
a<>ハ/<2F>。|<7C>]
<12>!<07><>^L<><EFBFBD>a<>ハ`<60>ネ.~$琢凧
<EFBFBD>紘鐸_<><EFBDA9>ゥ詹}
_<00>}
<EFBFBD><08>(<28>コa@認<>}}
<05><>^a<>(a<>&゚褜<EFBE9F>}}
<EFBFBD> <05><><EFBFBD>
<00>
<01>
<02>
<03>
<04>
<05><1A>o<02>ァ/<2F>。F<EFBDA1>ァ/<2F>。ロ(沢_<><EFBDA9>ゥ珉^ _M<><06> a<>A<> :ア 。'^`<60>アp顫ス _L<><03>!^`<60>アpo`<60>ア`ウivh" R<>!韲。<E99FB2><EFBDA1>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>
<EFBFBD>V^ _`<60>アp/<2F>
<EFBFBD><> _!<00>^ _ <0F><>アp^ _^ _a<>『`Xア`a<>抗ウkadZ@^。ヌ鞴ス _Q<>S<>S<>_ <>_a<>$鐸
<EFBFBD>v<>工琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9>o<>。I 嬾<><E5ACBE>
??<3F>`
ア /<2F><00>`<60><>.臭<><E887AD>
<EFBFBD>,_$_
<EFBFBD>:_$<24>
<EFBFBD>T_$
<EFBFBD>j_$_^ _
<EFBFBD>_<>
<EFBFBD>_L
<EFBFBD>!ャ紘鐸_<><EFBDA9>
<EFBFBD>
<EFBFBD>_<>x <00><>
<EFBFBD>_L_
。xa<EFBFBD>a<>a<><08><>€。湊<EFBDA1> }.m。ァォ<EFBDA7>衡ⅷ^_a<>a<>スャ 廠p ?n<><6E>湊寸<E6B98A>€ \ア@ kア0<EFBDB1>4<><> アp^
墾魲L<E9ADB2> <09>$ <20>
??<3F>a。絡h鐸只
<EFBFBD>a工琢_<><EFBDA9>ゥ蠇鄭o<00>1 €<><>
<EFBFBD>a紘鐸_<><EFBDA9>
<EFBFBD>_<>ao<00>! €只
<EFBFBD>_<>
<EFBFBD>!ャ紘鐸_/<2F> <0B>y`<60> アp及<70>`<60>アp<00>^`<60> アp及<70>!€頽!頤ス _a<>aav<06>。mL<6D> €€<C280> /<2F> F衡<46>!^L<> /<2F> V`<60> ア`<00><EFBFBD>a<>『『vz€<EFBDBD>a€K<00>
ai ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>スs^。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『ax`~ア`。ja 。オゞゞTR`<60><>`ォ`<60>`ア`/<2F>`.櫚<>^ _a<>a `<60>アp。{`<60> ア``<60>アPⅢス@ΧゥFウk。j`<60> アp<00>。カ甲ウs〒^ _a<>a<>M<><>
<EFBFBD>_L
<EFBFBD>!紘鐸_<><EFBDA9><>!v<>to€o
<EFBFBD>_o<>r_<12> <07><><EFBFBD>スs^M<00><03>MM<00>スq頤ス€<EFBDBD>/<2F> `m恒アp 愕@烏アPⅣ<50> アp鞳  廠p 楹`曳?<3F> アp勒 アp靠ス_a<>
<EFBFBD>S<>虹_<0E><><EFBFBD><EFBFBD><EFBFBD>`<60> n<><6E>
<EFBFBD> 虹S<E899B9>_Zゥ<5A><><EFBDA9>
<EFBFBD>_<>絡h僕<68>剛郞スp^
Printer Timeout.
BIOS ERROR -- .
Boot error.
Open or Read error on
Bad file!韵/<2F>
<EFBFBD>z/<2F>日虹_
ホゥ<EFBFBD>y鵠<EFBFBD>!鞜`<60> h€ アp/<2F><> <>ヤ!_`n<><EFBFBD><E8B9B2>L<><EFBFBD>]<5D><EFBFBD>]<5D>
o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>^ _VR<00>,。ァ!ワ^<04><>⑦ⅣR<00>]\<00>] 。㍾hV]。オゞゞ。ロ(VR]R。ア<EFBDA1><11>P<00>スr^スp顰\<00>。キ『『Tt<04><><EFBFBD>]t<>
。浴w∞av/<2F>^。浴㌔~ア`<00>。g頷ス _a
a<>紘`ュアPウo`<60>ア0`ゥ<10>ア*<2A>&派Q<E6B4BE>諾_<>_a<>`<60>?n<><6E><EFBFBD> <0C><><EFBFBD>スs韜。〟w『]t]r€K]]]]]]]]MMMMa<00>3<EFBFBD>3a<33>rT ]0T&R`<60><><EFBFBD> `<60> €€n<C280>`<60><>p^_a<>スー 廠p!「^`<60>アp/<2F>フア`賑
<EFBFBD> _<><EFBDA9><0E>4a<34>a<>
v<EFBFBD><EFBFBD>h鐸<>_<>/<2F>
<EFBFBD>
_ format on CPM.SYSCopyright 1984 Digital Research Inc. ソ<> A<04><05><05><05><05><05>.
<EFBFBD>a 紘鐸_<><EFBDA9><EFBFBD>工琢_
<> _a<>a
ス占&。<><03>
。無a<EFBFBD><EFBFBD>。k/獷
\衡<>!<07><>^/<2F><>ウyA 肉虹a<E899B9>`ゥ<><EFBDA9><>。カ。ウ<EFBDA1>3<EFBFBD>3T0V`]o 。㍾hV]。オゞゞ。ロ(TP<00> ]P。キ『『。エTrPB<00>スr霪スp霙\<00>] 。㍾hV]<00><04><>⑦Ⅳア`ゥ`n<><6E>
 <20>L<><4C><EFBFBD><EFBFBD>ミn<EFBE90><6E><EFBFBD><EFBFBD>@<40>スv^`<60>?`<60><>`吉<>a`\后`<60><>0`<60> <20>#ア@④<1F>`<60><><EFBFBD> スp鞐`<60><><EFBFBD>`<60><><EFBFBD>
<EFBFBD>]6aゞゞTRVRV]€<EFBDBD> /<2F>8。y鵠<79>。苓畠€K磑スp闔ス _
<EFBFBD>a紘鐸_<><EFBDA9>
<EFBFBD>_<>
<EFBFBD>!ャ工琢_<><EFBDA9>
<EFBFBD>_<><EFBDA9>!附H琢S<E790A2><53><EFBFBD>
<EFBFBD>_<>/<2F>
<EFBFBD> _<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>
_アp^!顯ス _a<><04>
<EFBFBD>€ ~ア`/<2F>
<EFBFBD>_<> <0C><> _a<><>!ミ^<05><05><05>.<04>\<05><05><05><05><05><05><05><05><05><05><05><05><05><05><05>@@@n @?タ <00>?タ :?タ韭ゥ尻ゥ聆!<00>鞳!_`<60>アp<00> <0F>!<07><>^`<60>n<><EFBFBD><EFBFBD><EFBFBD><E7B88B>/<2F>a<><61>
<EFBFBD>!<07><>韋a
avo a
aT
oスp靺ス _R<00>]\<00>a<><04>3<EFBFBD>3T0]。㍾hV]<00>。キ『『。<E3808E>HVt]tPt<00>スr濶鐡a€K<00>(aC€<C280><>aC€。Y
<EFBFBD>_<> <00><>スt靄スp霽ス _a<>ス殼<EFBDBD><> <> 鵠¬aMq<00><><><EFBDB3>a`~ア`スPテゥV抗ウ<E68A97>`~港`<60> アpア`㍑<1F>^ _a<><>!<07><>^aoi ~ア`<00>。g頸ス _!
€<EFBDBD>a€K<00>
ai ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>。与。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _ j<01><>
 <00>  ,prtvxz|~€<01><01><01><01>&:R`<00>j<05><05><05><05>&>DJRV\<00><00><11><11><11><11><11><11><11>"*"*<00>,.<00>0<00>2:<00><><00>@<00>BJ


<EFBFBD>*2@HLT^<0E><0E><0E>*<\|<0F><0F>@Zdnx€<08><08> 8 J \ <09> 「 ィ<0F>CPM SYS~`lv<14>p<TTtz<08><08><08>  2 6<01><01><01><01><01><01> D R X d`djp€<06><06>l=<06><06><06><06><00><06><06>
<00>2l>ソHPl\ソjnrv<12><12><12><12><00><12><12><12><00>LN<00>P<00> /(/.4D\V\h\z\<03>\<03>\r<03><03>r<0F><0F><0F><0F> (@JPZ^<<fb\XTPL6<01><01>|vlfP
~zvrb ~ <09> <09> <09>l^ <09> <09> <09>

l
,^
H
P
l
t
x
<EFBFBD>
<EFBFBD>I$(.2<00>8I<BFNZhlp^vz€<07><00>"<HLT^bjn<01><01><01><01><01><01><01><01>~<13><03><03>r &2rN\TZdr<04><04>\\<04>\<04><04>bfj9nrx|€<10><10>9<10><10><10>l<10>TLg4IZ\^`bdfhjlnprtvxz
<EFBFBD>


<EFBFBD>
<EFBFBD>   8 > D J <0B> <0B> <0B> <0B> <0B>  ( T Z d<07><07><07><07><07><07>
Z\^`bdfhjln<13><13><13><13><13><13><13><13><13><00>,0<04><04> &,2:>DTZ`hlr<05><05><05><10>v<10>lD (0<@HL\v€<11><11><11><11><11>|~€<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00> ~ <0C>     <0C> <0C>

"
&
H
V
Z
`
h
pl
€
<EFBFBD>
<EFBFBD>
<EFBFBD>
>DLPblp~<14><14><14><14><14><14><00>psa_sc_copyrig&_memtab0_context_setxvec0_serinitヲ_serirdyメ_serin<03>serordy"_seroutV_pcr0<00>_tbdskZ_ticktab<61> SC0TRAP<00>ARG3<00>ps<00>NMITRAP<00>(FRAMESZ<00>BDOS_SC<00>BIOS_SC<00>
cr5iz<69>_datasiz<69>_bsssiz<00>_stksiz<00>_split<00>_seg<00>_gp<00>_mydma<00>_x_hdr<00>_segsiz<00>_seglim<00>_sUTRAP<00>SEGTRAP<00>ARG4仁ap_prog<6F>"scfcw<00>psa_epu2_motor_c<5F>psa_prv<00> cr6<00>(psa_nmi_sysseg<00>訐filltb _dskread|_sectran「_seldisk銈bios<00>csv<00>cret<00>switch1ネ_bios3<08>udivカ_bios5l<14>^
$l0ソ6:>NソX`llソ€arordy胆paroutl_printst鐇crtrs銈crtws_ttyrs_ttyrd._ttyws@_ttywr\_lptwsn_lptwr<00>PITRAP<00>cr13Nset_usr<00>emsc<00>$scseg<00>侵BLKS<00>LOADER_usrseg<00> TRACETRt_output<00>手SYegloc<00>_textseg<65>_dataseg<65>_bssseg<00>_stkseg$_pstringL_badload
_loadЮreadhdrレ_readxsg8_loadsegMEM_SC<00>0psa_nvipusr_datadsys_data€usr_prog<6F>8psa_vijsys_prog _trapvec<65> scinst<00>SYSPSA<00>SEG2メ_bios2硺swapセ_bios4リ_bios1<00>_chainp
<EFBFBD>seldsk&_openfil
<EFBFBD>dirscan 棒seqread<61>タ_gbls __<><EFBDB6>__text__bss<00>mem_mapepu_trap<61>ARG2R_tbvalidseg_trap<61>0NTRAPS垣nulst論nulrdィ_nulwrX_iobyteZ_sttblz_rdtbl喟wrtblイ_genstat濱genread_genwritF_bioseSSIZE<02>mem_cpy<70>PCSIZE<00>nr15<00> motor_on<6F>cr2nmi_trap<61>
ARG5<00>cr10entryT_tbdirty<74>_fillbuf"map_1<00>XFER_SC<00>ARG1<00><psa_vecTcall_dat゙_cold_bo_startld<6C>cr3<00>em_copy<70>cr11€_dbdos
_tmp_sel 臉bdos<00>switch2
_rdsec
<EFBFBD>blkindx
ホ_blknum _do_io F_new_ext <0B>calcext V_get_rc濱biosini<6E>cr4<00>"rtc_ext_psap<00>cr12穰rap_1酸ldcpmク_crt_put<75>cr9_sysstk訐trap_rrコ_dpb0フ_dpb1゙_dpb2<00>dpb3<00>€_dirbuf<00>_csv0<00>_csv1<00> _csv2<00> _alv0<00> _alv1<00>メ_aソ<61>BOOTSTK<00>cr7:bios<00>BOOTSYS_map_adr<64>&scpc<00><01>FILSIZE pi_trap「sc_trap<00>INTSIZEh_input_fillbufisk_io<69>LONGSIZEネtrap_dis<69>cr8<00> psa_segxfersc<00>BPS秬xfer<00>DEBUG_SC\call_pro<72>SEG4<00>~_do_phio
\_dir_rdZ_move<0E>match<00>@_x_sgャ_cpmfcb<00>_textloc<6F>_dataloc<6F>_bssloc<00>_stkloc<00>_textsre>kludge<00>BPT<00>HDRSIZEjclrtraps<70>BOOTPSA`_trapini<6E>鏨1SIZE<00>nr14、_trap<00>cr1<00>EPlv2_xlt16"_dphtab<00>_settrk<00>_setsec<00>_setdsk<00>_setdma<00>_trkbuf<00>_tbtrk<00>_dskerr酸dskxfer裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹n^<>ネ/<2F>ニa<EFBE86>ハLh a<>ハLX
<EFBFBD>S<><53>
<EFBFBD>_<>|^<>ネ/<2F>ニa<EFBE86>ハ/<2F>。|^
v<>ネ/<2F>ニv<EFBE86>ネ/<2F>
<EFBFBD>S<>_<>|^
<><EFBE9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>朎鍰<E69C8E><E98DB0><EFBFBD><EFBFBD>}}
0ウ!<21><> $<24> X<> t<>
0au$<>$ (<28>0ウ<11><> <17> 二紘!゚ヨ゚モ列゚ニ紘!゚ン`<60><>0<00>ア*沢Q<E6B2A2>
<EFBFBD>v<><76>択_<><EFBDA9>ゥ猪 _
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>"
<EFBFBD>_<>!Bo@o>L$$LL裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹_鏘v<E98F98>ネ/<2F>ニa<EFBE86>ハ/<2F>鍮。絡p。y。萌o。膝o。濡o<00>7v<37>ネ/<2F>
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|<7C>'/<2F><00>#T]
<EFBFBD>__^裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹]<5D>フv<EFBE8C>ネ/<2F>ニv<EFBE86>ネ/<2F>
<EFBFBD>S<>_<>|^<>ネ/<2F>
<EFBFBD>S<><53>
<EFBFBD>_<>|^<>ネ/<2F>
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|^<>ネ/<2F>
<EFBFBD>
<EFBFBD>S<>゚レ呆゚ユ紘! ゚芻X<02>a<>&ァ<1E>T<><1F>a<>*}}
,!<> 台隊{}H! <02>!$<02>二ュ<>列二<E58897><>列二ウ<11><><EFBFBD> 
<EFBFBD>]
<EFBFBD>
<EFBFBD>
_<>
<EFBFBD><00>
<EFBFBD>ェ_
<EFBFBD>_。xT€]]V€]]
<EFBFBD>_^ _M<><02>a膏Go<00>
`アpスaウk<EFBDB3>Oヨ(>
<EFBFBD>JD<4A>d<>.<2E>x}}
><3E>: 2<>巴a<E5B7B4>&ァ<0F><0E>a<>(沢肉匂_o<>}}
<EFBFBD>a<>&ァ<0F><0E>a<>(。b}}
a。$。&ィQ<EFBDA8>凧_<>ィ凧_<>ィ凧_<>!<07><>^ィL<EFBDA8><EFBFBD>a<>ハ`<60>ネ.~$琢凧
<EFBFBD>紘鐸_<><EFBDA9>ゥ蠇ヌ^ィス_a<>$鐸
<EFBFBD><>W裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>ハ_<>|^<>ネ/<2F>ニa<EFBE86>ハLh a<>ハLX
a<EFBFBD>ハLHa<>ハL8
<EFBFBD>S<><53>
<EFBFBD>_<>|^<>ネ/<2F>
<EFBFBD>S<><53>
<EFBFBD>_<>|^^ィ`アp0。!<02>!8_a<>a<>T<>L<>ノ]<5D>フスタ。<EFBE80>!,^
<EFBFBD>__アp^。粒p/<2F>^<06>
<EFBFBD>_アp頌。粒p/<2F>
<EFBFBD>_<>寸粒p/<2F>GoMMM<><04>LLL<06><>T]T]
<EFBFBD>_
<EFBFBD>_^ _a<>/<2F>
<EFBFBD>リ_`ア`A/<2F>^ _a<>}}
o<EFBFBD>o<>}
<EFBFBD>}}
a韵a<E99FB5>&・o<>&}}
<EFBFBD>T<>^ーa<EFBDB0>紘^ーT<EFBDB0>断^カa<EFBDB6>工a<E5B7A5><03>a<><>T<><02>a<>工T<E5B7A5>咫/q。7紘<37>工琢_<><EFBDA9><EFBFBD>_ゥ蠇┼Go<47>。I 嬾<><E5ACBE>
??<3F>`
ア /<2F><00>`<60><>.臭<><E887AD>`<60><>`ォ`<60>`ア`/<2F>`.櫚<>^!_
<EFBFBD>v<>諸h鐸裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<00>^ィ]
^アpスaウkEo^^ィv<EFBDA8>ネ/<2F>
<EFBFBD>S<><53>
<EFBFBD>_<>|^J<07>`ア`/<2F>鐸凧
<EFBFBD>a工琢_
<EFBFBD>_<><06>/<2F>アp靼
<EFBFBD>_アp靨/<2F>
<EFBFBD>_<>髄銈Lゥ<4C>髄銈ェゥ<EFBDAA>アp霄!0"霍MMML<06><>L^寸粒p/<2F><>/<2F> *
<EFBFBD>_ク^_a<>/<2F> *aカ/<2F>
<EFBFBD>L<><05>
<EFBFBD>_
<EFBFBD>6___n<5F><6E>
<EFBFBD>:_`<60><>p!ク^
<EFBFBD>_
<EFBFBD>_クL<EFBDB8>!av.ォ<><1C><1C>ゥPゥq <18>!$ゥw 0ⅱゥ<E285B1><EFBDA9>o!&$ゥ#<23><>゚ロ゚ワ゚ン゚゙゚゚゚珀矚籬聲葹裃赱釶鞜鱇<E99E9C><E9B187><EFBFBD>涇驎<E6B687><E9A98E><EFBFBD><EFBFBD><EFBFBD><><EFBDA9><EFBFBD>`<60>鉷p/<2F>鐸Q<E990B8><51><EFBFBD><EFBFBD>]<5D>沢_ゥ玽<EFBDA9>魲^!_
<EFBFBD>v<><76>H琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9><E79D86>/<2F>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<><EFBDA9>ゥ猪<><00> <0F>。墨`アp<00>^ィv<EFBDA8>ネ/<2F>
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|鑵v<E991B5>ネ/<2F>
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|鐐v<E99090>ネ/<2F>ニa<EFBE86>ハ/<2F>スq^<00>スp顯靜顋ス_a<><>
<EFBFBD>>_スィゥ<EFBDA8> <20>/<2F><>
<EFBFBD>._ス」ゥ<EFBDA3> <20>/<2F><>
<EFBFBD>V_aカ/<2F>
<EFBFBD>f___n<5F><6E>
<EFBFBD>ヲ/<2F> 娃za<7A><61>/<2F><EFBFBD> ミゥ<EFBE90>y鵠<79> L<><07>!<00>!o<><6F>_L<5F><07>!陟a<E9999F><61>/<2F><EFBFBD>。ヲォ`<60>!賑虹_ ミゥ<EFBE90>/<2F>。y <09><><EFBFBD>!閾/<2F><><EFBFBD>贒咩<E8B492>
スp鞐/<2F> <00><>スs靹`<60>n<><6E><EFBFBD> n<><6E><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>
<EFBFBD>
<EFBFBD>_<> <00><>L<><07>
`<60><><EFBFBD>`<60><><EFBFBD> スt隶
<EFBFBD>
<EFBFBD>_<> <00><>スu陦スp_
<EFBFBD>_^6L<36><4C>
<EFBFBD>L<><4C>
<EFBFBD>
<EFBFBD>
_8^NL<4E><4C><08> a<><61>/<2F><>(ゥ<>6L<36><4C><7F>L<03>L<>諳j€`<60>アp<00>。y。磨<EFBDA1>mアP/<2F>8鑞a<E9919E>
<EFBFBD>。雖]工琢_<><EFBDA9><EFBFBD>_ゥ玽<EFBDA9><E78EBD>p^ _a<>a `<60>アp。{`<60> ア``<60>アPⅢス@ΧゥFウk。j`<60> アp<00>。カ甲ウs〒^ _a<>a<>M莖p/<2F>`<60>アp  <20>
<EFBFBD>^_8`<60>@@n<>`<60>アp/<2F>8^_L<00>a@i@ ~n<><6E>L<00>!Bo>o@`<60><>p^
<EFBFBD>_アp顏_`<60><>p!フ^
<EFBFBD>_
<EFBFBD>_ク`<60> ア`㍑n<E38D91>
<EFBFBD>
<EFBFBD>_<><EFBDA9>ウy<EFBDB3><79>/<2F>^靄顰ス _
<EFBFBD>ェ_a<>!ワ^
<EFBFBD>
<EFBFBD>_ rゥ<72><EFBDA9><EFBFBD><EFBFBD>M<><02>1T 
<EFBFBD>a 紘鐸_<>j]!
€a <>。キ〒 x墾¦ス<EFBFA4><EFBDBD>a<><61>/<2F>ヲア`賑廿_
Zゥ<EFBFBD><EFBFBD><EFBFBD><>a`~ア`桔粱] a<><61>/<2F><> ア`賑陝ス _a<>ス殼<EFBDBD><> <> 鵠¬aMq<00><><><EFBDB3>a`~ア`スPテゥV抗ウ<E68A97>`~港`<60> アpア`㍑<1F>^ _a<>/<2F>筍y`<60> アp及<70>`<60><0F><>/<2F><>(ゥ<>dL<64><4C><10>L郊ッvn鏈L<E98F88><4C><18> a<><61>/<2F><>(ゥ<><EFBDA9>ⅷ鍮L<E98DAE><4C><05>a<><61>/<2F><13>@L<><4C><15>
<EFBFBD>#_8a<38><61>/<2F><13><><01>0L<30><4C><12>
<EFBFBD><08>
。浴w∞av/<2F>^。浴㌔~ア`<00>。g頷ス_a<>a<>a<>
`<60> ア`㍑n<E38D91>M<><08>
。普U≦/<2F>3<EFBFBD><33>1<><31>G<10>。浴<EFBDA1>ヲn~^ ___n<><6E>p/<2F>8L<38><4C><10>L紘ッfn`<60><>p^ _a<> <00><>_アp^ <00><>_棲p顆。<E9A186><00>/<2F>
<EFBFBD>_<>p韲ス _a<><04><>
<EFBFBD>
<EFBFBD>_ rゥ<72><EFBDA9>
<EFBFBD>ニ_ V
<EFBFBD>
<EFBFBD>_ rゥ<72><EFBDA9>
<EFBFBD>ヨ_ V韃!_T<>
<EFBFBD>v<>諸H琢_<><EFBDA9><EFBFBD>ゥ珉<EFBDA9>釭Jォ。
<20>
!<21>!<07><>^廿_
Zゥ<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> `<60><><EFBFBD>M<><08>`<60> ィタn<EFBE80> a<><61> _L<00>スq<EFBDBD>
<EFBFBD>_アpアp^_L<><4C>
<EFBFBD>_<>7
<EFBFBD>_n<><6E>
<03>
<EFBFBD>_アp<00>^`<60> アp及<70>!€頽!頤!_a<>aav<06>o<><EFBFBD><07>f<> <09> a
aT
aC/<2F><><><EFBDA9><08>
<EFBFBD>`<60>アp肉虹_
<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>#_8a<38><61>/<2F><13>占 。浴㌔~ア`/<2F>ホゥ秦<EFBDA9>アp<00>及銜<E58F8A>`<60>h€アp<00>∞`<60><>~ア`/<2F>ホ`<60>アp<00> 竺`<00>吉^ハ^!_a<> `a<>a a<>紘`<60>アPウo`<60>ア0`<60><10>ア*<2A>&破/<2F><>凧_<>!_a<>M<><08>`<60>"。vアpウy<EFBDB3><79><EFBFBD>!アPウY<04>n<EFBFBD><6E>ウin<><6E><EFBFBD>#<23>ゥ€ ~ア`/<2F><12>ⅶ^ _a<>
<EFBFBD>
_8
<EFBFBD>
_8<>
<EFBFBD> _8剛ⅹ^_a<>a<>L<><01>j€`<60>アp<00>。z。叫ア<E58FAB>。キゥー ~n<><6E>

<1E>
%<25>
<14>
<00>
<09>!<07><>韲。ァ『avo<><6F><EFBFBD><EFBFBD>u沢諾
<EFBFBD>v<>釭E工琢_<><EFBDA9>ゥ釭p靉!_T<>
<EFBFBD>v<><EFBFBD><E9B69A><13>L<><4C><01>L<><4C><11>L<><4C>L<><4C><10>L郊ッvn<02>
L~~<7E> a>i>`<60><>.~hL<><4C>ノ^ __ー`<60>アp/<2F>
<EFBFBD>_<><02> `<60>ア`^`<60>#n<7F> <20>L<> €€<C280>
<EFBFBD>`<60>アp肉虹_
<EFBFBD>t<EFBFBD>!鞴L<E99EB4> `<60>n<><6E>/<2F>@`<60> ア`<00><EFBFBD>L<><07>!靜`<60> ア`㍑n<E38D91>`<60> アPゥPn<50><6E>n<><EFBFBD>L<><4C><>`n<><EFBFBD>邀PスAウKG<00>
<EFBFBD>_<00>L<><4C>L<><EFBFBD>]<5D><EFBFBD>]<5D>
o<EFBFBD><EFBFBD> <>!<01>!/<2F><>v<><76>/<2F><>!n<><6E> `<60>?n<><6E><EFBFBD> ア`ゥ`n<><6E><EFBFBD><EFBFBD> <20>L<><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>スv^`<60>?`<60><>`吉<>a`\后`<60><>0`<60> <20>#ア@④<1F>`<60><><EFBFBD> <0C>  <09><> `<60><>p  <20> <02> 。ァォ<EFBDA7>衡鮏<E8A1A1>
<EFBFBD>_8
<EFBFBD> _8
<EFBFBD>_8K 銖^!_a<>ao<><6F><EFBFBD>^6_n<><6E>
<03>
L<EFBFBD><01>
<EFBFBD>H琢_<><EFBDA9><EFBFBD>ゥ琦<EFBDA9><E790A6>T<><54>T<><54>g<><67>
]]<00>T]<5D><>]<5D><>
鐸諾
<EFBFBD>v<>鼾H琢_<><EFBDA9>ゥ猪_鐸/<2F>
<EFBFBD>_<><EFBDA9>アp  <20>i<04>
L<EFBFBD>
<EFBFBD>M<04>L<><08>k^ _L<> <09>
<EFBFBD> _8a<>`<60>アp/<2F>8^ _L<> <09>`<60>^ _
<EFBFBD>
<EFBFBD>a 紘鐸_<><EFBDA9><EFBFBD>アJ琢_Rゥ<52> _a<>
<EFBFBD>
<EFBFBD>a 紘鐸_<><EFBDA9><EFBFBD>J琢_Rゥ<52>yaK8 <0C> _ha
<EFBFBD>AF  
墾鶴/<2F>。}`<60> アpo<><6F>}<7D><>`<60>ア`<00>`<60>アP<00><EFBFBD>`<60>n<>。ヨn<EFBE96> `<60>
n<EFBFBD>
f<EFBFBD> <09>a<>/<2F><><><EFBDA9> ア`㍑n<E38D91> a<>Eo^ _a<>a<>a<><08><>€。湊<EFBDA1> }.m。ァォ<EFBDA7>衡ⅷ^_a<>a<>スャ 廠p ?n<><6E>湊寸<E6B98A>€ \ア@ kア0<EFBDB1>4<><> アp^
<><E5A2BE>]<5D><><EFBFBD>/<2F><>
<EFBFBD>!D_<> <00>鈔`<60><EFBFBD>!`<60><EFBFBD>"`<60><><EFBFBD>#^!_`<60>アp/<2F>L]<5D><>
ahス誠ー<E8AAA0><>! €<><EFBDA1>!v港。j。ァ∠<EFBDA7> a }恒。<E68192>!€坑ウ3アP<EFBDB1>5。W^ _a<>aa{<>! <09><><EFBFBD><>ォ€/<2F>H衡<48>。芽<><>/銈H衡<48>。ゥ<EFBDA1>剛鶴脅鉅 <09><><EFBFBD>/<2F>タ。与 _<E59486>スクォー。キ『av/<2F>/<2F>唆ⅳ`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_<><E4B998><EFBFBD><EFBFBD>f<> <09>/咩<><><EFBDA9>。擠ミスサ。ヌゥタ ~。ユゥミ.o。与 _a 
! <><EFBDA1>z 鵠¬筈ウM<EFBDB3><4D>J箸ウ-<2D><>*幡<00>⑦Ⅳアp^!_a<>a<>a !
<00>ァ先aゥp<EFBDA9>!。z鑛Kコ<08>。ァウY<EFBDB3><59>/<2F> アp^`アpスaウkEo アp頏 アp韲ス __、a<EFBDA4>fw<0E>!^
<EFBFBD>S<>
<EFBFBD>ヨ_<><EFBDA9> _ アp^ _
<EFBFBD><EFBFBD> <09>$ <20>
??<3F>a`m恒アp 愕@烏アPⅣ<50> アp鞳  廠p 楹`曳?<3F> アp勒 アp靠ス_a<>
<EFBFBD>S<>虹_<><E4B998><EFBFBD><EFBFBD> `<60> n<>`mアPゥPアJV<4A><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ゥーaK{琢Q<E790A2>
<EFBFBD>。讚o。g紘鐸_<><EFBDA9>ゥ猪_a<>スー 廠p!<00>`<60>n`<60>ア`/<2F>p肉
<EFBFBD> a<> 廠p<00> <10>+a
a<EFBFBD>oeス紳MA<00>。掠吹㌔~ア`<00>/<2F> <>。掠吹w∞av/<2F>/<2F> 糂^! _`<60>アpa荒.^ 唆ⅵ。、ウI<EFBDB3><49>/<2F>`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_<><E4B998><EFBFBD><EFBFBD>
<EFBFBD> 。湊`賑。<E8B391>P匂_lゥ<6C>、ウI<EFBDB3><49>/<2F>`<60><>p^ _a<>`<60>珉。ァウq<EFBDB3><71>。|/<2F>覓シ <0C>;a
。ナAe o<><6F>_ha<68><61>.O<>,_ha<68><61>
o<EFBFBD>&a
aオou` ア@ス1ウ;o<><6F><00>aE<><45><00>a<><61>pGoS<>S<>_<>p^ _a<>a<> <0C>??<3F>`アp/<2F>L/<2F><>
<EFBFBD>H_<>z<EFBFBD>L<> ??<3F>L<> L<>/<2F><>
<EFBFBD>X_<>z€鐸Q<E990B8>
<EFBFBD>a 工琢<E5B7A5><E790A2>
<EFBFBD> 虹S<E899B9>_lゥ<6C><EFBDA9><EFBFBD><EFBFBD> `<60> €€n<C280>` ア0ス!ウ+Eo`<60><>p^!_L<><4C><03>
<EFBFBD>_<>v<><76>/<2F>。x剛ⅳ。<E285B3>_a<>_<><EFBDA9>鏤`J<><03>
<EFBFBD>`<60>nア`賑
<EFBFBD> _<><EFBDA9>a<>
。遶}紘鐸<>_<>/<2F>
<EFBFBD>
_<>!附H琢S<E790A2><53><EFBFBD>
<EFBFBD>_<>/<2F>
<EFBFBD> _<><EFBDA9>
ウcn<><6E>
J<><05><>6L<36><EFBFBD>n<>アp<00> <0F>
<EFBFBD>_`<60><>p n<><EFBFBD><E796B1>/<2F>a<>
<EFBFBD>
<EFBFBD>_衡跣a
avo a
?アjウm `<60> アJウM<07><>認^!_a<>/<2F> ヤ`<60> アP<00>工謀]<5D><><EFBFBD><EFBFBD><EFBFBD>!`<60><><EFBFBD>"`<60><><EFBFBD>#^!_a<>a<>
<EFBFBD>廿虹_<1B>`ア`/<2F>霆o
/奛ァウyA 肉虹a<E899B9>`ゥ<><EFBDA9> ァ第スミ<EFBDBD>。ァ^
ァ軟病
avゥ`桔緕。ラ頌ス _a<> <00>aKx<06><>a<EFBFBD><61>_<><EFBDA9>ゥ蠇ァ^_a<>a<>a<> <20>
裹紘ッfn<66><6E>蓙)。叫セ! 。キゥー x 再¬
<EFBFBD> 廿虹_lゥ<6C>ヲウi<EFBDB3><69>/<2F>a
KZ<02>oZ`アpスaウka<6B>
<EFBFBD>廿虹_<><E4B998>。叫ソ。惓マaMq<00>!
 マ倖<EFBE8F> セ御<EFBDBE>奇竫<E5A587> マ.ソ<> ソ.マ  
墾鶴<E5A2BE>スィ!ヌ衡<EFBE87> !カ硬<EFBDB6>吉甁<E59089>!ヌ/キ<>!キ/ヌ 
<EFBFBD> _<> <0C><01>
<EFBFBD>
_アp。{<7B>
`<60>アp/<2F>
<EFBFBD>_<>{<7B>
<EFBFBD>_アp。{。キ^!
<EFBFBD>!工琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9>to*€aT
oL<><4C>=aax/<2F><>€衡¬。讚o/<2F>`\ア@ゥ@迩aSゥ0<EFBDA9>(沢_<>xM<78><4D>ゥ€ォ€/<2F>剛¦
<EFBFBD>
<EFBFBD>
<EFBFBD>レ_<><EFBDA9>アpスaウk<><EFBDA9><EFBFBD>/<2F> ヤ`<60>アP<00>工謀]<5D><><EFBFBD><EFBFBD><EFBFBD>!`<60><><EFBFBD>"`<60><><EFBFBD>#`<60>鉷p^!_a<>]<5D><><EFBFBD><E796B9>`<60>!n<><6E><EFBFBD>"n<><6E><EFBFBD>#n<><6E><EFBFBD><EFBFBD>
AV<>!€坑ウ3k.k^ _a<> <00>aKx<06><>a<EFBFBD><61>a
AV<>!€坑ウ3<00>0ア0 jア <20>#.k^ _a<><>q<EFBFBD><71>a
AgEo`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_<><E4B998><EFBFBD><EFBFBD>5f<35> <09>/咩<><> 募蝪ァウy<EFBDB3><79>/<2F>aMa<00>! ォー。キ@`~ア`<00>/<2F>o(
<EFBFBD>_o<>r_&^ <07><><EFBFBD>!^a!M$M&<26>M$@M&<26> M$M& <00>!
<EFBFBD><EFBFBD>M&<26><06><><EFBFBD><EFBFBD><EFBFBD>M$<24>!<01>!ウya<>r<EFBFBD>TV]<5D>T]<5D>\ <0C>V] T ]<5D> T]<5D>a<00>3<EFBFBD>3T0lR0,]<5D>鐸S<E990B8>Q<>_<><EFBDA9>
<EFBFBD>v<><76>#<23>(沢_<><EFBDA9>ゥ猪] 。㍾hV]<14><04><>⑦ⅣR <00>]\<08>a<><04>3<EFBFBD>3T0ャ]。㍾hV]<18>。キ『『。<E3808E>HVt,]t,Ptl<>スr濶鐔a*€K(<28>(a*<2A> 浤p。<70>€.o <0C> <20> <0C> <09><> <0C> <0C><><> <0C>
<EFBFBD> <0C>;;<3B>矯釖 <0C> _a<><04>ゥ€ <0C>!!<21> <0C>ゥ€ <20>
!!踴

 踞。<E8B89E> _a鐇!
€<EFBDBD>a*€K(<28>
a(i( ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>。与。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『vz€<EFBDBD>a*€K(<28>
a(i(ス占。浴w『av~/<2F><>+0ゥ<30>t<EFBFBD>。刀3<E58880>3a7€^<> 鉉ス占<> <1D>L<>:: <01>L<02>L<1E> LAA<41>LPP<50>! <01> LAA<41>L“Tv鐸_<>€<EFBFBD>/<2F>&エ <07><><EFBFBD>!霓。〟w『]tl]r,ゥ€K]] ]]]]]] M&<26> M<00><00>^*覘zovL{<7B>_av_顯ス _
<EFBFBD>_<>
<EFBFBD>_<> _a<>a<><06> <20>
!^ <20>
!<07><>顏ゥ€<C280> Г(€<C280><>a*C(€。Y。絡h鐸只
<EFBFBD>a(工琢_<><EFBDA9>ゥ蠇鄭(o(<28>) €<><>
<EFBFBD>a*紘鐸_<><EFBDA9>
<EFBFBD>_<>&a*o(<28>! <><EFBDBD>。掠<EFBDA1> xゥ<78>
x錏ス<E98C8F><EFBDBD>1スー<EFBDBD>
<1D> 。ァ。オゥー「 杵[ゥ€ <0C>!!<21> <0C> <20> <0C> <09> <0C>陦ァゥ<EFBDA7>。オ「LX <0C> <20> <0C> <09> <0C>!!<21>ゥ€
<01>o <0C> ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>スs^。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『ax`~ア`。ja <00>$<24>。ァ!^a &<26>スー<EFBDBD>ゥー。キ『『a<E3808E>`mPP<50>!<07><> <01>L<>::<3A>!<07><>
<EFBFBD>
<EFBFBD>_0bゥ<62> <00>!<07><> <01>ス定ス迅<EFBDBD>/<2F>/<2F>t<EFBFBD>!<07><>隗ス<E99A97><EFBDBD>L。 <20>!<07><>陞ゥ<E9999E>
<1D>L、ⅳ!阡M<00>bM<00>$<24>!<01>!o<00><00><00>w『
<EFBFBD>琢3<E790A2>p_<>1<EFBFBD>p]6ャM$<24>a﨟"<22>"
<EFBFBD>択3<E68A9E>p_<>1<EFBFBD>p]Fャa<00><> !<00>!<07><>韲ス _a<>!
L<00>! <00>。掠寸ヲゥ<EFBDA6> }.m <>ァゥ<EFBDA7> u L<00><>€。ヲゥ<EFBDA6> }.m <0C> <0C>!!ⅶ ィ^!_<00>
<EFBFBD> _<>! €只
<EFBFBD>_<><EFBDA9>
<EFBFBD>_<>絡h僕<68>剛釮スp^'゙ス _M$<24>スt<EFBDBD>スu。xM&<26>T<04>
<EFBFBD>Q<>_<><EFBDA9>]Va<>T]r M&<26>スh<EFBDBD>スd。g<EFBDA1> <0C>!!<21>
酩^ _a<> <0C> <20>!^ス占<><>!頷ゥ<E9A0B7> 鋏!韶ス _a<> <0C>**<2A> ??アp^/<2F>/<2F>t<EFBFBD>i 恭0。7頤  アpJ}アPアJウM]tャ。キ『『TtャVt,猫。ァ!&^<04><>⑦ⅣR <00>]\ <0C>] 。㍾hV]。オゞゞ。ロ(VR,]R,。ア<EFBDA1><11>Pl<>スr^ _a<><04>ゥ€ <0C> <0C>!!¦。<EFBFA4>€ q!!<21>
<0C> L<01>ゥ€ <0C> 蹊o<00>L<00>L<00>L<01> La t<>L<01>L^ _a<>T<><>p紘『『]tla﨟fM$<24>!<02>!ウ9a<>r《T4R <04><><EFBFBD>]dlVdャV ]€<EFBDBD>
/<2F>'。y鵠<79>。与#<23>€K
<EFBFBD>_)<29>/<2F>*。y
<EFBFBD>_<>xA_+<>$
<EFBFBD> L<><4C>11v<31>&n<><6E><EFBFBD><EFBFBD>$$<24>v<>0n<30><6E><EFBFBD><EFBFBD>$$
<EFBFBD>。遶紘鐸_<><EFBDA9>
<EFBFBD> _<>㍾h鐸
<EFBFBD>_<>>アjT壇a<E5A387>]4a$E&a<>or<>! _M&<26>
T]<5D><>]<5D><>
<EFBFBD>Q<>_<><EFBDA9><EFBFBD><EFBFBD><EFBFBD>]<5D><>]<5D>M&<26>M$<24>T韵ス_a<>a<> 仗フ<E4BB97>。浴ヌ xゥタ #脩スチ<EFBDBD>。浴ヌ u ゥタ 脛L<00>L<><4C>??<3F>L<><4C> M。圍<EFBDA1>ALt<00>!ゥ<>スア<EFBDBD>。ァゥ<EFBDA7>`<60><>.~ゥー スp顰\<10>。キ『『Ttl<04><><EFBFBD>]tl。カ。ウ<EFBDA1>3<EFBFBD>3T0ャV`l]o <00>㍾hV ] 。オゞゞ。ロ(TPl<> ]Pl。キ『『。エTr,PBl<>スr霪スp霙\<04>頬L€€
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD>
_<><01>L;;<3B>_+`アp<00>Lu
L;;<3B>L
! <02><> <20>

<> 疎a<E7968E> 想z<E683B3> 浤p鐸Q<E990B8>
<EFBFBD>!工琢_<><EFBDA9><>!^#<23> _
<EFBFBD>a*紘鐸_<><EFBDA9>
<EFBFBD>_<><EFBDA9>
<EFBFBD>_<>t<EFBFBD>!<07><>^a*o(i( ~ア`<00>。g頸ス
<EFBFBD>_<> _a<>a<> <01>L<00>L<00>_+ニ<> <>€ ~ア`。gアj鐸
<EFBFBD>_<> <0C> <0C>!!<E285B0>
?鐸
<EFBFBD>_<>_+^ _a闡<61>
<EFBFBD>_<>p.櫚<00>! ^!顯。<E9A1AF>a。s仝Lq::<3A>&<26>5`Y<01>タ.ゥaゥAo<00>4LD<00>!。圸<EFBDA1>スア<EFBDBD>。ァゥ<EFBDA7>`<60><>.~ゥー 胱L<00>! <><>。。<EFBDA1>1L<00>
<01>
<EFBFBD>。・「LQ::<3A>スアス€<EFBDBD><>`}J<><>
<EFBFBD>肉_,pゥ<70>ゥ€   酊唆^96L^96LZ^96v<36>ミ衡誥
<EFBFBD>
<EFBFBD>_0bゥ<62>x剛珉L
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> <03>0<EFBFBD>€<EFBDBD>`<60>
<1A> アpアj鐸
<EFBFBD>_<>€ 胥
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD><00>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD> _<>!^L ^>舷€<E888B7>。〟蹲x<E8B9B2><78>€ 鋩`アpォpアj鐸
<EFBFBD>_<>??L
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD><>竜q。{ゥース<EFBDB0>^4ク剛<EFBDB8>fキ <09><>fキ <09>L<><4C>_+L<><4C><EFBFBD>"。ラ紘鐸
<EFBFBD>_<>M<><4D>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>y。糞Q。[ゥー靄。誉0bゥ<62>x <00>6L<00>3
<EFBFBD>!D紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_<><
aa<61>
zz<7A>アp<07>`<アpn<_+L<NN<4E>L<YY鋻L<NN!
<EFBFBD>_<>p.泯圸<E6B3AF>スア<EFBDBD><>A/<2F>0*。・ゥ<EFBDA5>._ゥー <>i<>A/<2F>/<2F>t踉。<E8B889>A`[ア0ア*.<2E>i/<2F>
<EFBFBD>_0bゥ<62>x
<EFBFBD>
<EFBFBD>_0bゥ<62>y剛^9鵠^9`<60>ミJ<00>L::<3A>L[::<3A>n<00>L::<3A> L[::<3A>`n<><EFBFBD>スアL<EFBDB1><01>L<><10>スア唆<EFBDB1>"
<EFBFBD>_<>t贖`
アPアJ琢
<EFBFBD>%_<>%L<1E>" <00>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD> _<>!0_スーL<1E>8_<>x^=エ! 刎。xLt<00>`}アPK羡ス呵 。〟輿~
アPⅢn~<> 胄L<E88384> L ZZL
88L KKv<4B>/<2F>
<EFBFBD>_+0ゥ<30>t<EFBFBD>`<60>ア`K<00>L<><4C>q。yゥ<79>:琢
<EFBFBD>_<>
<EFBFBD>_<><EFBFBD> <09> 
<EFBFBD>_<>掠秦~。gアj鐸
<EFBFBD>_<> 
<EFBFBD>_<>
<EFBFBD>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> 
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD> _<> _L<1E>
<EFBFBD>!T紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_.Lスア<EFBDBD><>A/<2F>0*。・ゥ<EFBDA5>._ゥー 胥スタスア<EFBDBD>。浴キ q??<3F>ゥタゥー 胯。ヌ^0悅 _L<<3C>
<EFBFBD>!剥h鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>
<EFBFBD><_,pゥ<70><EFBDA9>ミ紘鐸_<><EFBDA9>
<EFBFBD>_<> <00><>
<EFBFBD>!諸H琢_<><EFBDA9>
<EFBFBD> _<>Kス<4B>!<10>。ァゥ<EFBDA7>∫`~<7E>ミn<EFBE90>ゥ€ #脉L<00>L<0F>スア唆<EFBDB1>1
<EFBFBD>!紘鐸
<EFBFBD>!ハ紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>Z_.Lゥ<4C>Z^7ー
<EFBFBD>!<>(沢_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_.Lゥ<4C><==<3D>;ス€<EFBDBD>€L<C280>==<3D>L<>錵L<E98CB5><4C>錢L L
L v<>/<2F>
<EFBFBD>_+0ゥ<30>t<EFBFBD>`<60>ア`K<00>L<><4C><01>$L<><4C><01> L SSL
UUL BBv<42>/<2F>
<EFBFBD>_+0ゥ<30>t<EFBFBD>
`<60>ア`K<00>!工琢_<><EFBDA9>
<EFBFBD>_<>y <00><><>。撞1。;ゥー
<04><><EFBFBD>fキ <09><>fキ <09>_+<02>L<><4C> <00>^3tM<74><4D>#_+<>
<EFBFBD>!檮h鐸_<><EFBDA9><1E>!^_2(衡<>!顆L00<30>L99<39>!韲`アpvx<76>  <09>!鞦L<1F><>
`
アP仝vx<76> <10> L <20> 。㍾h鐸
<EFBFBD> _<>!^!顯ス _€<EFBDBD>€L<C280><1E>L<>::<E285B9> _!A<>Lq::<3A>M<><01>LAA<41>LPP<50>
<EFBFBD>
<EFBFBD>_,pゥ<70>!^!顯!__<><EFBDA9>
<EFBFBD>_<> <00>
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD> _<>エ^7ー
<EFBFBD>!&紘鐸_<><EFBDA9>
<EFBFBD> _<>7ース L<E285B9>==<3D> <00>L<><1F>L<<3C>
スア<EFBFBD> L<==<3D>L=<3D>LZ<>スア唆<EFBDB1>L<>==<3D>L<>€ス寸<EFBDBD>€。湊秦}nmZ菰ⅷL<==ス題;ス<><EFBDBD><><EFBFBD>。・「LQ::L<><4C><01>L<><4C>M<>
<EFBFBD>L<><4C><01>M<><07>L<><4C><01>!<00><>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>x <00>^<lM<6C>
<EFBFBD>
<EFBFBD>
<EFBFBD>_0bゥ<62>
<EFBFBD>
<EFBFBD>_0b鐸
<EFBFBD> _<>
<EFBFBD>!「紘鐸_<><EFBDA9>
<EFBFBD> _<> _L<1E>
<EFBFBD>!ク紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_.Lゥ<4C>2(衡蒴_2n。x/<2F>2<>!霤!霏!_<>スーLスチLL<><4C><00>
<EFBFBD> _<>
<EFBFBD>_<>M<>
<EFBFBD>
<EFBFBD>
<EFBFBD>_0bゥ<62>x<EFBFBD>
<EFBFBD>
<EFBFBD>_0bゥ<62>x a<>M<><4D><EFBFBD><EFBFBD>2(衡^5 _2n。|/<2F>2詩t^5
<EFBFBD>
<EFBFBD>_0bゥ<62>アpv}@
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD>_<>y <00><>
<EFBFBD>!<04>(沢_<><EFBDA9>
<EFBFBD> __L<1E>
<EFBFBD>!ク紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_.Lゥ<4C><1E>_2(衡<>_2n。x/<2F>2詩t<E8A9A9>L::<3A> L <20>
<EFBFBD>
<EFBFBD>_,pゥ<70>
<EFBFBD>
<EFBFBD><>紘鐸
<EFBFBD>_<>€M<C280><07>L<><4C><01>スり<>ゥ€ <06>。〟蹲t<E8B9B2><74><EFBFBD><EFBFBD>!ー^
<EFBFBD> _<> ZZL
88L KK<4B>
<EFBFBD> __9^鑠_:ヲ衡<EFBDA6>
<EFBFBD>!|紘鐸_<><EFBDA9>
<EFBFBD> _<>V`アp<07>ソアj鐸
<EFBFBD>_<>IスァL<1E>2
<EFBFBD>!ク紘鐸_<><EFBDA9>
<EFBFBD> _<>琢
<EFBFBD>_.Lゥ<4C>ー_?「衡鸙<E8A1A1>(ゥーo /<2F>
<EFBFBD>乳_?゙ゥ<EFBE9E>{a <00>ゥー €<>スー_?「<>L<01>。キゥー。湊秦}nm €<>スー_?「L<00> €<>Lア
<EFBFBD>Lア!!都Lア
<EFBFBD>
<EFBFBD>_<>
$$琢凧
<EFBFBD>!<00>択_<><EFBDA9><>
<EFBFBD>
<EFBFBD>_<>
$$鐸凧
<EFBFBD>!<00>(沢_<><EFBDA9>ゥ琦
<14>!T ]Ti<><69> !II<49>a<><61><EFBFBD><EFBFBD> qTT<54>a<><61> a <20>ゥミo<EFBE90><6F><EFBFBD><12>i<><69><EFBFBD><EFBFBD> q <20> tⅸa<E285B8><61> q <20>i<><69>ー菌冐<E88F8C> <01>
a<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ニゥタ }nm<00>a<><61><EFBFBD><EFBFBD> ~ア`。g鐸
<EFBFBD>_.Lゥ<4C>Xo/<2F>/XL<00>L;;<3B>
<EFBFBD>_D(L<00>/<2F>/"。x<EFBDA1>8!L<00>L<00> L<00>
<EFBFBD>_+r<>a/<2F>+rL<00>a/<2F>/"o
<EFBFBD><>
<EFBFBD> _<> SSL
UUL BB<42>スタL SS<53> L
UU<EFBFBD>L BB<42>L<><4C>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> <03> L<><4C>スアL<00>Lス占。掠秦~n<>L<> <20>L<><00> 銜L<E98A9C><>L<01>L<00>スェ/銈;l衡<6C>
<07>
<EFBFBD>
<EFBFBD>_,pゥ<70>!L
<EFBFBD>!紘鐸_<><EFBDA9>!!<21>#<23>ゥー €<> Lア
蹂Lア
踝Lア!!跼 €<>スー_?「衡<EFBDA2>
<EFBFBD>Lア<1A>L<01>鞏o ^ _a<>ス占L<><> €脣<00>
<EFBFBD> _]<04><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>!<00>(沢_<><EFBDA9>ゥ閒ao<02>琢T <02><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>!<02>択_<><EFBDA9>ゥ琦
<14>Tウm<EFBDB3><6D>"aアj鐸
<EFBFBD>_<><EFBDA9><EFBFBD> q <20> t<> €釡ゥ€<EFBDA9> <01>。ヌゥタLu$$<24> $鐸
<EFBFBD>_<><EFBDA9>$$<24>€o €<>€_?「。<EFBDA2>@ _a<>a<><>_+ニ<>_C6LL<00> L<00>aL<00>
<EFBFBD>_C6 <0C><> <0C>
<EFBFBD>虹_,pゥ<70> <0C>ヲ^!_
<EFBFBD>_o<><6F>t]Tr]
<EFBFBD>!<00>択_<><01>L€<EFBDBD>`<60>n<>ゥ€ $鋩LL<00>ス。<EFBDBD><00>
<EFBFBD> _<>t<EFBFBD>
<EFBFBD> _<><EFBFBD><>再鋗墾<E98B97>a/<2F>-濱<>M<>
<EFBFBD>_<><00>a工琢
<EFBFBD>_<><00>(沢
<EFBFBD> _<>\訛T]琢_<>p<00>。y €<>! €。嘛<EFBDA1>t<EFBFBD>T]<>za工琢
<EFBFBD> _<>
<EFBFBD>!<00>(沢_<><EFBDA9>
<EFBFBD>_<><00>L<00> ス占L<><> €鋺_?「ML<00>/<2F>A<>L<>aa<61>
L<EFBFBD>zz<7A>`<60>アpo$T]*M(<28><00>ao$
<EFBFBD>Q<>_<>*M(a紘鐸
<EFBFBD> _<>
<EFBFBD>!工琢_<><EFBDA9><>CP/M-8000(tm), Version 1.1, L<>$$<24>
ゥ€/<2F>
<EFBFBD>虹_?゙ゥ<EFBE9E>x<EFBFBD>
<EFBFBD>€`~ア`。gアj鐸
<EFBFBD>_<> €<>L<><1A>L<>
€<>`<60>
<1A>

<EFBFBD>€_?「衡<EFBDA2>ス。<EFBDBD>L<>
<EFBFBD>  €
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>;_<>x剛<78>(
<EFBFBD> <04>スT<EFBDBD><>UaW<02>h鐸_<><EFBDA9>
<EFBFBD> _<><00>(沢
<EFBFBD> _<>
<EFBFBD>_<><EFBDA9><EFBFBD> <00>h瑁
<EFBFBD>!f紘鐸_<><EFBDA9>
<EFBFBD> _<>紘鐸
<EFBFBD> _<>L。キ^< _
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>t<EFBFBD>L!^!顯ス琢_<>ウゥー.? <>。キゥー xv<78>tス占。浴蹲q<E8B9B2>taa<61>。磨覘a<E8A698>tzz<7A>。普藾\<5C>tア@<04>。煤臍O<E8878D>tアp。t。浴輜|<7C>tゥ遂ゥ釶ゥ寸浴蹲x<E8B9B2>tv<74>t]<>`<60>アpn<70><> €鉉
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>・工琢
<EFBFBD> _<> _a<>/<2F>,リ!゙^
<EFBFBD>_2リ閂
<EFBFBD>_2リ鑚_5鑵_6P鑪Copyright (c) 1984, Digital ResearchXXXX-0000-654321
WARNING -- Do not attempt to change disks$
CP/M-8000(tm) Version 1<>€_?「<>Lス。墾豢。<E8B1A2> _a<>ス紳 鏝`ソアp!ツ^/<2F>AJゥ<4A>{鍼 <00>。キゥー。湊秦}nm<00>ゥー €<>Lア 蹂Lア €<><05><><EFBFBD> <0C>!!<21> <>  
€凧
<EFBFBD>_<>琢凧
<EFBFBD>。罩=<3D>(沢_<><EFBDA9><>択幡
<EFBFBD>a。#<23>(沢_<><EFBDA9><>
<EFBFBD>_a<>a<>a<>a €<>€_?「衡<EFBDA2><>`<60>
00痒
99黐アpv}<7D>ミo<EFBE90><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> aSS<53>*a<><61><EFBFBD><EFBFBD> QUU<55>#a<><61><EFBFBD><EFBFBD> ABB<42>a<><61><EFBFBD><EFBFBD> 1MM<4D>a<><61><00>&L<00>!
<EFBFBD>_C6<43> L<00>aL<00>
<EFBFBD>_C6 <0C><>aL <0C>$
<EFBFBD>虹_,pゥ<70>_+ニ!L<00>
L<00>
<EFBFBD>
<EFBFBD>_,pゥ<70><00> €.1 12/19/84$
Copyright (c) 1984, Digital Research Inc.$ error on drive $
Do you want to: Abort (A), Retry (R)$, or Con<00><00><00><00><00><00><02>57[8 >b>v>*>P>d
 $;B*B<>錬*BlBB<> E,D@DTDZD`DfD札ィE,EDJ4PO<08>P<08>a<08>` U Q R S T U  $ ([ .Y 8: < @: DU P^ T[ ZY dACR フ ヤ ワ <09> <09>AC
r
z
<EFBFBD>
 
<EFBFBD>
<EFBFBD>
<EFBFBD> #<23>"ネ"<22>"<22>#誹<01> $0$$$0$$0$0$0$0$0$0$0$'D'@'@'D'@'@(ー'<27>'<27>(Z(r(r(Z<05>F<05><05>GN
NOOPP*:AFHLUP1X5\I`dUjJpvtinue with bad data (C)$? $
$CP/M Disk file error: $ is read-only.$
Do you want to: Change it to read/write (C), or Abor<02> <02><02>9<02> $*.6<N@ODPHUNUR\<bUf<00>,<01><00><00><01>xY<02><02>Z02468:<> l p[ vY € <09> <09>: <09> <09>: <09> <09>::7:j(Z CP/M-8000(tm) Version 1.6 COPYRIGHT (C) 1984, Digital Research <01> <01><01><01><01><01><00><>NON-SYSTEM FILE(S) EXIST$K|<06>L<06>34Y<06>3<06>4U<2U:<>UJ[RYb3v8<07>4U[t (A)? $
$
CP/M Disk $read$write$select$select$change$DIRDIRSTYPERENERAUSERSUBMITFile is not executablep<03>=<03>@<03>>U?U<03><03>?C @(2BAJ@BDFHJLNPRTVXZ\^`bdfh <09>[ <09>Y

:
^
^
0^
8
<:
@
F:
J
N:
R7
^
b:
l
pjヤEnter Filename: $Enter Old Name: $Enter New Name: $File already exists$No file$No wildcard filenames$Syntax: REN NewfilY34<07>;34[Y$ ,3<BUFUJUNURUXU\U$Insufficient memory$Read error on program load$Program Load Error$
Exception $ at user address $. Aborted.$?<06><02>TdAlvB@D@NU<04><04>U<04><04>U<04>OOjlnprtvxz|~€<00><00><00><00><00><00><00><00><00><00>
x
€
<EFBFBD>E
<EFBFBD>@
_
[
Y

:

Z<00><00><00><00><00><00>
e=Oldfile$Confirm(Y/N)? $Enter User No: $.SUB file not found$User # range is [0-15]$Too many arguments: $.,=[];><3E>><h1v|€:<08><08>:<08><08>Q<08>RSTU[YONNU<08>N<08>N<08><02><02> ,4:Th<03>*Ln<04><06><04>2p<05><05><05><06><06>"<06><06><06><06><06>BJZ<06><06><06><06><06><06><06><06><06><06>b<06>r<06>~BT
O$E(@04U8U>UF<XU`3h4n€U<05>U<05><05>AA

<EFBFBD>[
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>    Y 83 B4 `[ <0B>U <0B>U 3 4 Y <0B>3 <0B>4<1B>U<YNn<1C>U<1C>P<1C>P[Yhy[Y<1C><1C>Uprg<1D>{<1D>[<1D>U<16>U<16>3[Y*U23@HURVUf[lYpU[YUU<17><17>U%リ%<25><00>%<25>3%<25>4&& Y&&3&(<00>&.<00>&6<00>&D[&H&L&P&bY&f<00>&n&v&|&€&<26>U<12>U<12>U<12>[<12>YU[Y<12><12>[Y"U(U,U6U:U@UDU#(#8 #L#X #f#v#<23> #<23>#、[#ャY#シ<00>#ト3#ミ4#レ#<23>#<23>#<23>$[$<00>$$ Z R T Q S R $T B3 J4 P[ VY n3 z4 <0C>[ <0C>Y <0C>U [ Y <0C>
 <0C>[
Y
@

XOOY 2[>B@LYV[\Ylt[zY<1E>U<1E><1E><1E>@@UU<1E>3&U2UBPHOPO\N`NdUl<rU<18>U[UYU<18>U<18>[YU"UF<00>&<26>[&クY&ト<00>&フ&ヤ&レ&゙&<26><00>&<26>['Y'"<00>'&<00>'.'2':'>Z "HUR[ZdYht€U<13>U<13>[<13>Y[ Y<13><13>U<13>[<13>Y<00>
 $$$$ $&$*$<$J$j3$v[
^Y
fU
<EFBFBD>U
<EFBFBD>k
<EFBFBD>[
Y"[8Uh><0E>=<0E>@B@<0E>YUU>[DYNh[<0F>Y<1E>4<1E>[<1E>Y8F{JUXUdPhPr[xY<1F>g{U<1F>}<1F>
 } [ Y ,[LYZU|[<19>Y<19>U[Y<19>UU |:
@|J[RY\NpU<1A>U<1A>h$'B'F'`<00>'d<00>'r'|'€'<27>'<27>Z*,.02468'<27>'ヲ'ェ&[,Y<14><14>U[YU<14><14>5<14>  &2UZh$<24>$<24>$「<00>$ョ$イ$カ$コ$セ$ツ$ニ$ミ$ヤ$レ$゙$<24>$<24>$<24>$<24>%%%<0F>UUg<0F>[
(dtl<10>U<10>U3
UU4BUPUd Dg t{ ~[ <20>Y <20>{[Y![!
Y!!B[!JY!^!n!「[!ェY!<21>!<21>@"[" yUhUUU<1A>U<1A>U<1A>} U(<|LP@bNfNj[pY<1B>[<1B>Y['ー'ク'シ'ハ'ホ'リ'<27>['<27>'<27>'<27>((((("(&(4(:(J(N(\(bxU€U<15><15><15>4LP[XY`U<16>O<16>hUhy<16>[<16>Y% %$3%.%2%8%P3%Z%^%l%p%x%<25>%<25>%、%ィ%ャ%カ%ツ%ネ<00>%ホ<00>%メ<11><11>Y<11>U[Y5UUUU"U,U6[<Y@P VUh zY",":U"`U"|U"<22>U"<22>3"ィ4"ョ["エY"ツ"ニZ<00><00><00><00><00>"ホ"<22>
"<22>##
(j(n(€(<28>(<28>(<28>(<28>(ィ(ャ(シ(タ(ト(ミ(リ(゙(<28>(<28>(<28>) )3)45n5z5<>5<>35<><00>5ェ5セ<00>5ミ5リ35<><00>5<>5<><00>66636(<00>646<36H<00>6N[6VY1ェ1エ1ク1セ1フ1ミ1<>1<>1<>1<>2&2,Y202:2B32N<00>2X2\2f[2rY2|=
===0=6=<=B=H=L=V=\=<3D>=「3=ョ<00>=コ=ニ=ホ=ヨ=゙=<3D>=<3D><00>,tY,<2C><00>,<2C>,<2C>,ェ<00>,ハ<00>,メ,ヨ[,ワY,<2C>,<2C>--
[-"-0-6-<-D-X-`-t-<2D>9ツ9フ9ミ9ヨ[9レ9<>9<>`9<>:3:<00>: <00>:&:>:D:H:L:T:\:h:p3:|<00>)$)():)B3)N<00>)T)X)\)l<00>)r<00>)z<00>)<29>)<29>Y)<29>)ヲ)ャ)カ)コ3)フ)ヤ)<29>6\6f6n36z<00>6<>6<>6<>6<>6<>6ヲ36イ<00>6タ6ト6ハ6リ6<>6<>6<>6<>77 72<>2<>[2<>Y2<>2ョ2カ2ツ2ニ2ミ[2゙Y2<>2<>2<>333
333&3.33:<00>>$>(Z>8<00>>>>D>J>^<00>>r<00>>x>~><3E>><3E>><3E>><3E>>イ-<2D>-ィ-ョ-タ-ヨ-<2D>Y.a..`.$.*a.2`.6.>a.Fa.J[.PY.d.n.v3.<2E><00>:<3A>:<3A>3:<3A><00>:ェY:ョ:ク:タ3:フ<00>:レ:゙:<3A>:<3A>[:<3A>;;;;,;8;J;Z<00>;rY)<29>)<29>*[*Y***0*43*B<00>*J*R*X*^*d*h*p*x*~*<2A>*<2A>*<2A>*<2A>77&767:7B7\7n7<>7<>7<>7ヲ7ャ7イ[7ハ7ホ7メ7ヨ7レ7<>7<>7<>3L3T33`<00>3r3z3<>3<>3ヲ<00>3ク3タ33フ<00>3<><00>4<00>4$<00>4.4@<00>4Z<00>4d4l34x<00>4<>4ィ>コ3>ニ<00>>レ`><3E>><3E>><3E>><3E>?`??<00>?4<00>?J?P?T?h?p3?|<00>?<3F>?<3F><00>?<3F>?<3F>.<2E>.<2E>.<2E>.<2E>.、.ェ.イ.ク/ [/&Y/V[/\Y/d/<2F>/セ/ワ/<2F>[/<2F>Y0[00.Y;z;€;<3B><00>;<3B>;ャ<00>;イ;セ;ニ;ミ;リ;<3B>;<3B>3;<3B><00><[< <<*<:<00><@<F<N<V*<2A>*「*カ*コ3*ミ3*リ4*゙[*<2A>*<2A><00>*<2A>*<2A>b*<2A>*<2A>*<2A>~<01><01><01><01><01><01>888888&8,848<8j38v<00>8<>8<>38<><00>8エ8タ8ネ8レ8<>38<><00>8<>4ョ4セ4ネ4ヤ4ワ34<><00>4<>4<>35<00>5[5Y55"5*356<00>5D5H5N5V5^5f?<3F>?ヲY?ョ?カ3?ツ<00>?フ?ヨ[?<3F>Y?<3F>?<3F>@[@ @ホ@<40><00>AA&<00>A,A6ABAHANY0B[0H0P0fY0<>0ョ0コ0セ0<><00>0<>0<>[1 111*10161V1t<00>1<>1<>1<>3<b<00><j<v<|<<3C><<3C><<3C><ィ<ャ<イ<ク<セ<ト<ネ<メ<リ<<3C><<3C><<3C>==+Y+<00>+(<00>+.[+4Y+L[+vY+~+<2B>+<2B>+ヲ+ト[+フY+ワ<00>+<2B><00>+<2B>,:3,F<00>,V<00>,h<00>,n[939<00>99&392<00>9:9B9J39V<00>9\9bY9f9p9x39<><00>9<>9<>9<>9「9ェ9イ9コA\AbAtA<>A<><00>A<>AヲAエAニAメA<>A<>A<>[BYB
BBBjヨbiosf農bios5$callCー_bios2セ_swap_traphnd<6E>>setsupf彑bios4r__bdos>bioscall^dirbcall<02><02>GャYGエ2GタGネGミGリ3G゙G<>G<>3G<><00>HH 3H,<00>H2H><00>HP<00>HZ_ext_err <09>ro_err
ク_error R_cpy_bi<00>switch2R_rdwrt~_getaloc <0C>blkindx ミ_blknum
_setblk
Z_do_ioDリDワD<>D<>D<>D<>EEEE E2E6E<[EDYEHEREZ3Ef<00>ElErE~<00>dlinL_seldsk8_openfil_close_fv_searchャ_dirscan€_bdosrw<1E>createt_delete _rename €_set_att!、B"B:B>BLBTBdBpB|B<>B<>B<>BェBョBコBセBハBメBレカ_bios1__data__bssネlowexc<01>chkredirDprtword<prtlong$init2 excmsg3<01>srexcevecHtH<><00>H「3Hェ4HニHミ3Hリ4H゙H<>II3I4III8I@3IH4INITIXI\
枩new_ext秬calcext@_get_rcー_conbrkホ_cookdou_getch<13>newline(_backsp"ー_do_phioh_dchksum_dirE<72>E<><00>E<>E<>1E<>1Eャ1EイiEメ1E゙1E<>iF\1FbaFh`FnFrFvF|F<>F<>`F<>F<>F喟getsize!_setran"_free_sp、_flushit#ヲ_pgmld _setexc ト_set_tpal_move<00>_log_dsk<73>_ro_dsk<00>_crit_dsB<>B<>B<>CCCC&C0C4[C:YCFC^<00>CfCr<00>C|C<>3C<><00>C<>C<>CヲCイ_adrVprtnib<00>BGETSEG<00>_sysseg濱initexc&print.prtdolla<00>nitloopinit1excmsg2カdfltexc.IfI~I<>3I<>4I<>I<>IヲIカIセ3Iニ4IフIメIレI゙I<>I<>I<>I<>I<>I<>J_wrタ_setaloc_clralocH_chkalocレ_alloc論matchヨ_closeH_alltrueX_matchit ヤ_extsize!D_fsize<00>@F<>aFャFエFク<00>Fシ<00>FツFフ<00>FミFヨF<><00>F<>F<>F<>F<>GGG G`GG G$<>_tpa_lp<00>_tpa_lt<00>_tpa_hp<00>_tpa_ht<00>タ_gblsL_uprt_liェ_ureadliニ_tmp_sel<65>csv<00>switch1<00>cretCカCコCツCハCメCレC<>C<>C<>D3D<00>D <00>D&[D,YD6D:D>Z<02><02><02><02>麁xchndlzexcept sysexc<00>BIOS_SCsegusrxLprtbyte(init30excrtn0dlt10excmsg1<00>BSETEXCJ3J JJJ"<00>J,J43J<JB[__textカ_bios6€setsuptcallBiosヲ_bios3ニ_udiv<00>2_x_sg<00>_mylpb<00>_bdos<00>_x_hdr&^_readhdr&エ_readxsg'_loadseg*_setbase)神setaddr&_fillbuf<00>usercmdG*G0G6G:G@GFGJGPGVGZG^GbGfGjGtGzG~`G<>G<>G<>G、[イ_copyrtエ_serial8_conout訐dir_rd|_submit}_morecmd_bdosini *_prt_err V_abrt_erカ_warning r<02><02><02><02><02><02>DFDPDVD\DbDhDtD|3D<><00>D<>D「<00>DャDカDセ3Dハ<00>_chainp<00>_bios<00>_map_adr<64>_mem_cpyク_warmboo神constat`_conin彑tabout農rawconiメ_prt_linョ_rea*鹹cpstart゙copy*瀋cpz_autostシstackpsysinitE>_main*<2A>cploop*訥cpclear~_cmd_tbl枩msg裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹$<02>二ュ<>列二<E58897><>列二ウ<11><><EFBFBD> 
<EFBFBD>0。!<02>!8_a<>a<>T<>L<>ノ]<5D>フスタ。<EFBE80>!^
<EFBFBD>__アp^。粒p_find_co2酸chk_col:ヲ_user_cm;l_cmd_fil?「_sub_rea?゙_dollarAJ_commentC6_submit_+_cr_lf+r_copy_cm+ニ_prompt<00>O<>(8X<>I<><02><02>| ><3E> 2<> 巴沢肉匂_o<><10>q<03>a<>$・o<>$<24>T<><06>a<><>T<><>a<>工a<E5B7A5><03>a<><>ク_msg2ハ_msg3ワ_msg4硺msg5_msg6_msg7&_msg8D_msg9T_msg10f_msg11|裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹;cpmsys.rel is the relocateable ccp and bdos for a Z8002 processor.
;make cpm.sys for z8001 systems
ld8k -w -o cpm.sys bios.re/<2F>^@
<EFBFBD>_アp頌。粒p/<2F>
<EFBFBD>_<>@。粒p/<2F>
<EFBFBD>_<>@/<2F>アp靼
<EFBFBD>_アp靨/<2F>
<EFBFBD>_<>@凧_<06><>@凧_Zゥ<5A>@_,p_echo_cm-濱check_c.L_get_cmd/X_get_par2リ_dir_cmd5_type_cm6P_ren_cmd9^_era_cmdGヲ___LOADA<>translaD(_exe<78>T<><02>a<>工T<E5B7A5>咫/q。7紘<37>!avハォ<EFBE8A><1C><1C>ゥPゥq <18>!$ゥw 0ⅱゥ<E285B1><EFBDA9>o!&$ゥ#<23><>゚ロ゚ワ゚ン゚゙゚゚゚珀矚籬聲葹蘋msg12農msg13<00>_load_tr<74>_first_s<5F>_chain_s<5F>_end_of_<66>_dirflag<61>_subprom<6F>_sub_ind<6E>_index<00>_sub_use裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹l cpmsys.rel -lcpm
アp霄!0"霍MMML<06><>L^@。粒p/<2F>。墨^@v<>ネ/<2F>va<76>ハLh a<>ハLX
<EFBFBD>S<><53>
<EFBFBD>_<>|^@v<>ネ/<2F>va<76>ハ/<2F>。|cute<74>_xfer<00>_LPB<02>stack<00>_sstack_context゚赱釶鞜鱇<E99E9C><E9B187><EFBFBD>涇驎<E6B687><E9A98E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>朎鍰<E69C8E><E98DB0><EFBFBD><EFBFBD>フウ $<24> X<> t<>
0au$<>% (<28>0ウ<11><> <17> <>_user<00>_cur_dis<69>subcom<00>€_subdma<00>_user_pt<70>_glb_ind<6E>save_su<73>$_subfcb<00>$_cmdfcb<00>_tail<00>_aut裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 cpmsys.rel -lcpm
^@]
v<>ネ/<2F>vv<76>ネ/<2F>
<EFBFBD>S<>_<>|^@T
]<5D>フv<EFBE8C>ネ/<2F>vv<76>ネ/<2F>
<EFBFBD>S<>_<>|^@v<>ネ/<2F>v
<EFBFBD>S<><53>
<EFBFBD>_<>|^@v<>ネ/<2F>ute<74>_xfer<00>_LPB<02>stack<00>_sstack_context紘!゚ノ゚ニ列゚ケ紘!゚ミ゚ヘ列<EFBE8D>゚ノ紘! ゚リ更<02>]<>f!<02>"巴a<E5B7B4>$!<1E>!a<> (デ沢<E38387>"(Ta<>$匂択{! <02>!orom<6F>ダdma<00>x_parmェ_del/"_scan_cm+0_strcmp,リ_decode/<2F>delim0*_true_ch0b_fill_fc2(_too_man2n裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹_v
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|^@v<>ネ/<2F>v
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|^@v<>ネ/<2F>va<76>ハLh a<>ハLX
a<EFBFBD>ハLHa<>ハL8
<EFBFBD>S<><53>
<EFBFBD>_<>|^@^靄顰ス _
<EFBFBD>ヨ_a<>!ー^
<EFBFBD><01>
<EFBFBD>_ "ゥ<>
<EFBFBD><01>
<EFBFBD>_ "ゥ<><EFBDA9>
<EFBFBD><01> 
<EFBFBD><01>
<EFBFBD>_ "ゥ<><EFBDA9>
<EFBFBD>_ 韃!_T<>
<EFBFBD>v蘋^ _M<><02>a膏Go<00>
`アpスaウkGoMMM<><04>LLL<06><>T]T]
<EFBFBD>_
<EFBFBD>_^ _アpア`㍑<1F>^ _a<>/<2F>庁y`<60> アp及<70>`<60>アp<00>^`<60> アp及<70>!€頽!頤!_a<>aav<06>o<><EFBFBD><07>f<> <09> a
aT
鐸_<><EFBDA9>ゥ蠇ヌ^Xス_a<>$鐸
<EFBFBD><>W工琢_<><EFBDA9><EFBFBD>_ゥ蠇┼Go<47>。I 嬾<><E5ACBE>
??<3F>`
ア /<2F><00>`<60><>.臭<><E887AD>`<60><>`ォ`<60><03>
。普U≦/<2F>3<EFBFBD><33>1<><31>G<10>。浴<EFBDA1>ヲn~^ _a<>a a<>紘`<60>アPウo`<60>ア0`<60><10>ア*<2A>&破/<2F><>凧_<>!_a<>M<><08>v<>ネ/<2F>v
<EFBFBD>S<><53>
<EFBFBD>_<>|^@a^X`アp<00>^X]
^@`アpスaウkEo^@a^Xv<58>ネ/<2F>v
<EFBFBD>S<><53>
<EFBFBD>_<>|^<08>諸H琢_<><EFBDA9><EFBFBD>ゥ珉<EFBDA9>釭Jォ。
<20>
!<21>!<07><>^
<1E>
%<25>
<14>
<00>
<09>!<07><>韲。ァ『avo<><6F><EFBFBD><EFBFBD>u沢諾
<EFBFBD>v<>釭E工a<E5B7A5>/<2F>
<EFBFBD>_`ア`A/<2F>^ _a<>/<2F>
<EFBFBD>_h^_a<>/<2F>レa<00>/<2F>
<EFBFBD>_L<><05>
<EFBFBD>@_
<EFBFBD>b__aC/<2F><><><EFBDA9><08>
<EFBFBD>`<60>アp肉虹_
Nゥ<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>^`<60>#n<7F> <20>L<> €€<C280>
<EFBFBD>`<60>アp肉虹_
Nゥ<EFBFBD>t<EFBFBD>!鞴L<E99EB4> `<60>n<><6E>/<2F><0E><> ア``ア`/<2F>`.櫚<>^!_
<EFBFBD>v<>諸h鐸_<><EFBDA9><EFBFBD>`<60>鉷p/<2F>鐸Q<E990B8><51><EFBFBD><EFBFBD>]<5D>沢_ゥ玽<EFBDA9>魲^!_`<60>"。vアpウy<EFBDB3><79><EFBFBD>!アPウY<04>n<EFBFBD><6E>ウin<><6E><EFBFBD>#<23>n<><6E> `<60>?n<><6E><EFBFBD> ア`ゥ`n<><6E><EFBFBD><EFBFBD> <20>L<><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>スv^`<60>?`<60><>@`J<07>`ア`/<2F>鐸凧
<EFBFBD>a工琢_<><EFBDA9>ゥ猪@。<><00> <0F>。墨`アp<00>^Xv<58>ネ/<2F>v
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|鑵琢_<><EFBDA9>ゥ釭p靉!_T<>
<EFBFBD>v<>鼾H琢_<><EFBDA9><EFBFBD>ゥ琦<EFBDA9><E790A6>T<><54>T<><54>g<><67>
]]<00>T]<5D><>]<5D><>
_n<5F><6E>
<EFBFBD>f_`<60><>p!
<EFBFBD>_h
<EFBFBD>_hL<68><05>スq^<00>スp顯靜顋ス_a<><>
<EFBFBD>j_スィゥ<EFBDA8> <20>/<2F><>
<EFBFBD>._ス」ゥ<EFBDA3> <20>/<2F><00><EFBFBD>L<><07>!靜`<60> ア`㍑n<E38D91>`<60> アPゥPn<50><6E>/<2F> 8。za<7A><61>/<2F><EFBFBD> €<C280>y鵠<79> L<><07>!<00>!o<><6F>_L<5F><07>!陟a<E9999F><61>/<2F><EFBFBD>。ヲォ`<60>
<EFBFBD>v<><76>H琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9><E79D86>/<2F>`<60><>0<00>ア*沢Q<E6B2A2>
<EFBFBD>v<><76>択_<><EFBDA9>ゥ猪 _
<EFBFBD>!紘鐸_<>`吉<>a`\后`<60><>0`<60> <20>#ア@④<1F>`<60><><EFBFBD> スp鞐/<2F> <00><>スs靹`<60>n<><6E><EFBFBD> n<><6E><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>
<EFBFBD>
<EFBFBD>_<> <00><>L<><07>
v<EFBFBD>ネ/<2F>v
<EFBFBD>
<EFBFBD>S<><53>ハ_<>|鐐v<E99090>ネ/<2F>va<76>ハ/<2F>鏘v<E98F98>ネ/<2F>va<76>ハ/<2F>鍮。絡p。y。萌o。膝o。濡o<00>7v<37>ネ/<2F>v
<EFBFBD>鐸諾
<EFBFBD>v<>鼾H琢_<><EFBDA9>ゥ猪_
<EFBFBD>。雖]工琢_<><EFBDA9><EFBFBD>_ゥ玽<EFBDA9><E78EBD>p^ _a<>a `<60>アp。{`<60> ア``<60>アPⅢス@Χ<>
<EFBFBD><01>a<00>/<2F>
<EFBFBD>__n<5F><6E>
<EFBFBD>メ_`<60><>p!<00>^
<EFBFBD>_h
<EFBFBD>_h`<60> ア`㍑n<E38D91>
<EFBFBD>
<EFBFBD>_<><EFBDA9>ウy<EFBDB3><79>/<2F>!賑虹_ €<C280>/<2F>。y <09><><EFBFBD>!閾/<2F><><EFBFBD>贒咩<E8B492> コゥ<EFBDBA><EFBDA9><EFBFBD>M<><02>1T 
<EFBFBD>a 紘鐸_<>j]!
€a <>。キ〒 x墾¦ス<EFBFA4><EFBDBD>a<><61>/<2F>ヲア`賑鐸
<EFBFBD>"
<EFBFBD>_<>!Bo@o>L$$LL]
<EFBFBD>
<EFBFBD>
_<>
<EFBFBD>ョ_
<EFBFBD>ヨ_
<EFBFBD>_。xT€]]V€]]
<EFBFBD>`<60><><EFBFBD>`<60><><EFBFBD> スt隶
<EFBFBD>
<EFBFBD>_<> <00><>スu陦スp陝ス _a<>ス殼<EFBDBD><> <> 鵠¬aMq<00><><><EFBDB3>a`~ア`スPテゥV抗ウ<E68A97>`~港`<60>
<EFBFBD>S<><53>ハ_<>|<7C>'/<2F><00>#T]
<EFBFBD>__^XQ<58>凧_<>X凧_<>X凧_<>!<07><>^XL<58><EFBFBD>a<>ハ`<60>ネ.~$琢凧
<EFBFBD>紘ゥFウk。j`<60> アp<00>。カ甲ウs〒^ _a<>a<>M<><08>
。浴w∞av/<2F>^。浴㌔~ア`<00>。g頷ス_a<>a<>a<>
`<60> ア`㍑n<E38D91>M<>廿_
<EFBFBD><EFBFBD><EFBFBD><>a`~ア`桔粱] a<><61>/<2F><> ア`賑廿_
<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> `<60><><EFBFBD>M<><08>`<60> ィタn<EFBE80> a<><61> _L<00>スq<EFBDBD>
<EFBFBD>_アpアp^_a<>a<>a !
<00>ァ先aゥp<EFBDA9>!。z鑛Kコ<08>。ァ珉。ァウq<EFBDB3><71>。|/<2F>訪シ <0C>;a
。ナAe o<><6F>_a<><61>.O<>,_a<><61>
o<EFBFBD>&a
aオou_ィ錙L<E98C99><4C><15>
<EFBFBD>#_<><E990B6>/<2F>ィL<EFBDA8><01>0L<30><4C><12>
<EFBFBD>#_<><E990B6>/<2F>ィス占 。浴㌔~ア`/<2F>~ゥ秦<EFBDA9>アp<00>及銜<E58F8A>`<60>h€アp<00>∞`<60><>~ア` アp靠ス_a<>
<EFBFBD>S<>虹_Hゥ<48><EFBDA9><EFBFBD><EFBFBD> `<60> n<><6E>
<EFBFBD> 虹S<E899B9>_<><EFBDA9><EFBFBD><EFBFBD> `<60> €€n<C280>` ア0ス!ウ+Eo`<60><>p^!_L<><4C><00><>_@アp顆。<E9A186><00>/<2F>
<EFBFBD>_<>p韲ス _a<><04><>€ ~ア`/<2F>L 繍ⅶ^ _a<>
<EFBFBD>
_<11>
<EFBFBD>
_
<EFBFBD> _<11>剛ⅹ^_a閨㌢v/<2F>/<2F> 糂^! _`<60>アpa荒ウcn<><6E>
J<><05><>6L<36><EFBFBD>n<>アp<00> <0F>
<EFBFBD>_`<60><>p n<>疱鄂_L<><4C>
<EFBFBD>_<>7
<EFBFBD>_n<><6E>
<03>
<EFBFBD>_L<><4C><13>L<><4C><01>L<><4C><11>L<><4C>L<><4C><10>L郊ッvn<02>
L~~<7E> a>i>`<60><>.~hL臍 ア@ス1ウ;o<><6F><00>aE<><45><00>a<><61>pGo`ア`/<2F>霆o
/奛ァウyA 肉虹a<E899B9>`ゥ<><EFBDA9> ァ第スミ<EFBDBD>。ァ^
ァ軟病/<2F>~`<60>アp<00> 竺`<00>吉^z^!_a<> `n<><EFBFBD>L<><4C><>`n<><EFBFBD>邀PスAウKG<00>
<EFBFBD>_<00>L<><4C>L<><EFBFBD>]<5D><EFBFBD>]<5D><03>
<EFBFBD>_<>v<><76>/<2F>。x剛ⅳ。<E285B3>_a<>a<>
<EFBFBD>廿虹_Hゥ<48><EFBDA9>タ。叫ソ。惓マaMq<00>!
 マ倖<EFBE8F> セ御<EFBDBE>奇竫<E5A587> マ.ソ<> ソ.マ a<>L<><01>j€`<60>アp<00>。z。叫ア<E58FAB>。キゥー ~n<><6E>
 <09>  <09><> `<60><>p  <20> <02> 。ァォ<EFBDA7>衡鮏<E8A1A1>
<EFBFBD>_<11>
<EFBFBD> _<11>
<EFBFBD>_銖^!<00><>/<2F>a<>
<EFBFBD>
<EFBFBD>_衡跣a
avo a
aT
oL<><4C>=aax/<2F><>€衡¬。讚o/<2F>`\ア@ゥ@迩aSゥ0<EFBDA9>(沢_<>xM<78><4D>ノ^ __``<60>アp/<2F>
<EFBFBD>_<><02> `<60>ア`/<2F>
<EFBFBD>_<><EFBDA9>アp  <20>i<04>
L<EFBFBD>
<EFBFBD>M<04>L<><08>k^ _L<> <09>
<EFBFBD> _
avゥ`桔緕。ラ頌ス _a<> <00>aKx<06><>a<EFBFBD><61>a
AV<>!€坑ウ3k.k^ _a<> <00>aKx<06><>a<EFBFBD><61>a
AV<>!
o<EFBFBD><EFBFBD> <>!<01>!/<2F><>v<><76>/<2F><>!^ _
<EFBFBD>
<EFBFBD>a 紘鐸_<><EFBDA9><EFBFBD>アJ琢_<> _a<>
<EFBFBD>
<EFBFBD>a 紘鐸 
墾鶴<E5A2BE>スィ!ヌ衡<EFBE87> !カ硬<EFBDB6>吉甁<E59089>!ヌ/キ<>!キ/ヌ  
墾鶴/<2F>。}`<60> アpo<><6F>}<7D><>`<60>ア`<00>`<60>アP<00><EFBFBD>`<60>n<>。ヨn<EFBE96> _a<>ao<><6F><EFBFBD>^ハn<EFBE8A><6E>
<03>
L<EFBFBD><01>
<EFBFBD>_~
<EFBFBD>_^<><E8A698>
<EFBFBD>L<><4C>
<EFBFBD>
<EFBFBD>
_<15>L<EFBFBD><4C><08> a<><61>/<2F><>リゥ<EFBE98><><E8A698><7F><1F><>ゥ€ォ€/<2F>剛¦
<EFBFBD>
<EFBFBD>
<EFBFBD><><EFBDA9>アpスaウkEo^ _a<>a<>a<><08><>€。湊<EFBDA1> }.m。ァォ<EFBDA7>衡ⅷ^_a<>a<>スャ 廠p ?<>`<60>アp/<2F> _L<> <09>`<60>アp/<2F>L<>`<60>アp  <20>
<EFBFBD>^_<>@@n<>`<60>アp/<2F>_L<00>a@i@ ~€坑ウ3<00>0ア0 jア <20>#.k^ _a<><>q<EFBFBD><71>a
Ag }恒。<E68192>!€坑ウ3アP<EFBDB1>5。W^ _a<>aa{<>! <09><><EFBFBD><>ォ€/<2F><18>t<EFBFBD>。芽<>_<><EFBDA9><EFBFBD>J琢_<>yaK8 <0C> _a
<EFBFBD>AF .o。与 _a 
! <><EFBDA1>z 鵠¬筈ウM<EFBDB3><4D>J箸ウ-<2D><>*幡<00>⑦Ⅳアp^!`<60>
n<EFBFBD>
f<EFBFBD> <09>a<>/<2F><><><EFBDA9> ア`㍑n<E38D91> a<>ウY<EFBDB3><59>/<2F> アp^`アpスaウkEo アp頏 アp韲ス __Ta<54>fw<0E>!L<03>L<>諳j€`<60>アp<00>。y。磨<EFBDA1>mアP/<2F>韋la<6C><61>/<2F><>リゥ<EFBE98>dL<64><4C><10>L郊ッvn鏈L<E98F88><4C><18> a<><61>/<2F><>リゥ<EFBE98><EFBDA9>ⅷ鍮L<E98DAE><4C><05>a<><61>/<2F><><EFBFBD>湊寸<E6B98A>€ \ア@ kア0<EFBDB1>4<><> アp^
墾魲L<E9ADB2> <09>$ <20>
??<3F>a`m恒アp 愕@烏アPⅣ<50> アp鞳  廠p 楹`曳?<3F> アp勒n<E58B92><6E>L<00>!Bo>o@`<60><>p^
<EFBFBD>_アp顏ス__ハn<EFBE8A><6E>p/<2F><><E98EB0><10>L紘ッfn`<60><>p^ _a<> <00><>_ハアp^ <>/銈<18>t<EFBFBD>。ゥ<EFBDA1>剛鶴脅鉅 <09><><EFBFBD>/<2F>p。与 _a<> 廠p<00> <10>+a
a<EFBFBD>oeス紳MA<00>。掠吹㌔~ア`<00>/<2F> <>。掠吹w^
<EFBFBD>S<>
<EFBFBD><1C><><EFBDA9> _ アp^ _
<EFBFBD>S<>S<>_Hゥ<48>p^ _a<>a<> <0C>??<3F>`アp/<2F><19>/<2F><>
<EFBFBD><1D><>z<EFBFBD>L<> ??<3F>]] ]] ]]]$M*<2A> M<00><00><00><00>bM<00>(<28>!<01>!o<00><00><00><00>w『
<EFBFBD>琢3<E790A2>p_<>1<EFBFBD>p]6ース_a<>スー 廠p!タ^`<60>n`<60>ア`/<2F>p肉
<EFBFBD> _<><EFBDA9>鏤`J<><03>
<EFBFBD>`<60>nア`賑
<EFBFBD> _<><EFBDA9>a<>
。遶}紘鐸<>_<><0E><>
<EFBFBD>a.紘鐸_<><EFBDA9>
<EFBFBD>_<>%クa.o,<2C>! €只
<EFBFBD>_<><EFBDA9>
<EFBFBD>_<>絡h僕<68>剛釮スp^'漆 _M(<28>スt<EFBDBD>スu。xM*<2A>T<08>賑。<E8B391>P匂_<>、ウI<EFBDB3><49>/<2F>`<60><>p^ _a<>`<60>?アjウm `<60> アJウM<07><>認^!_a<>/<2F> Я<> アP<00>工謀]<5D><><EFBFBD><EFBFBD><EFBFBD>!M(<28>。ァ!a <00>*<2A>スー<EFBDBD>ゥー。キ『『a<E3808E>`mJ}アPアJウM]tー。キ『『TtーVt0猫。ァ!<04><>⑦ⅣR$<00>]\<10>] L<> L<>/<2F><>
<EFBFBD>_<>z€鐸Q<E990B8>
<EFBFBD>a 工琢_<><EFBDA9>ゥ蠇ァ^_a<>a<>a<> <20>
裹紘ッfn<66><6E>蓙)。叫セ! 。キゥー x 再¬
<EFBFBD>(<28>a<00>"<22>"
<EFBFBD>択3<E68A9E>p_<>1<EFBFBD>p]Fーa<00>w『]tpa<00>fM(<28>!<02>!ウ9a<>r《T4R$<04><><EFBFBD>]dpVdーV$]ス€/<2F>
<EFBFBD>
_<>!附H琢S<E790A2><53><EFBFBD>
<EFBFBD>_<>/<2F>
<EFBFBD> _<><EFBDA9>
<EFBFBD> _<> <0C><01>
<EFBFBD>
_アp。{<7B>
`<60>アp/<2F>
<EFBFBD>_<>{<7B>
<EFBFBD>_アp。{。キ^!
<EFBFBD>Q<>_<><EFBDA9>]Va<>T]r M*<2A>スh<EFBDBD>スd。gアjT壇a<E5A387>]4a(E*a<>or<>! _M*<2A>
T]<5D><>]<5D><>
<EFBFBD>Q<><51><EFBFBD><EFBFBD>"`<60><><EFBFBD>#^!_a<>a<>
<EFBFBD>廿虹_Hゥ<48><EFBDA9><EFBFBD>/<2F> Я<>アP<00>工謀]<5D><><EFBFBD><EFBFBD><EFBFBD>!`<60><><EFBFBD>"`<60><><EFBFBD>#`<60>鉷p^!_a<>。㍾hV ] 。オゞゞ。ロ(VR0]R0。ア<EFBDA1><11>Pp<>スr^スp顰\<14>。キ『『Ttp<04><><EFBFBD>]tp。カ。ウ<EFBDA1>3<EFBFBD>3T0ーV`p]o <00>㍾hV$]$。オゞゞ。<E3829E> 廿虹_<>ヲウi<EFBDB3><69>/<2F>a
KZ<02>oZ`アpスaウkEo`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_Hゥ<48><EFBDA9><EFBFBD><EFBFBD>5f<35> <09>/咩<><> 募裴
/<2F>&ツ。y鵠<79>。与#ョゥ€K
<EFBFBD>_)@/<2F>)ク鐸Q<E990B8>
<EFBFBD>!工琢_<><EFBDA9><>!^#ョス _
<EFBFBD>a.紘鐸_<><EFBDA9>
<EFBFBD>_<><EFBDA9>
<EFBFBD>!工琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9>to.€o,
<EFBFBD>_o<>r_& <07><><EFBFBD>!^a!ホ^M(M*<2A>M(@M*<2A> M(M* <00>_<><EFBDA9><EFBFBD><EFBFBD><EFBFBD>]<5D><>]<5D>M*<2A>M(<28>T <0C>TV]<5D>T]<5D>\<10>V ]T]<5D> T ]<5D>a<00>3<EFBFBD>3T0pR00]<5D>]<5D><><EFBFBD><E796B9>`<60>!n<><6E><EFBFBD>"n<><6E><EFBFBD>#n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><><EFBFBD>/<2F><>
<EFBFBD> <20><> <00>鈔`<60><EFBFBD>!`<60><EFBFBD>"`<60><><EFBFBD>#^!_`<60>アp/<2F><19><04>(TPp<> ]Pp。キ『『。エTr0PBp<>スr霪スp霙\<08>] 。㍾hV]<18><04><>⑦ⅣR$<00>]\ <0C>a<><04>3<EFBFBD>3T0ー] 。㍾hV]<1C>。ァウy<EFBDB3><79>/<2F>aMa<00>! ォー。キ@`~ア`<00>/<2F><E59486>スクォー。キ『av/<2F>/<2F>唆ⅳ`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_Hゥ<48>
<EFBFBD>_<>t<EFBFBD>!<07><>^a.o,i, ~ア`<00>。g頸ス _!
€<EFBDBD>a.€K,<2C>
a,i, ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>。与。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗!
<EFBFBD><EFBFBD>M*<2A><06><><EFBFBD><EFBFBD><EFBFBD>M(<28>!<01>!ウya<>r“Tv鐸_<>€<EFBFBD>/<2F>&d <07><><EFBFBD>!霓。〟w『]tp]r0ゥ€K]S<>Q<>_<><EFBDA9>
<EFBFBD>v<><76>#<23>(沢_<><EFBDA9>ゥ猪<00>^*豊NozLO<>_az_顯ス _
<EFBFBD>_<>
<EFBFBD>_<>]<5D><>
ahス誠ー<E8AAA0><>! €<><EFBDA1>!v港。j。ァ∠<EFBDA7> a`mアPゥPアJV<4A><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ゥーaK{琢Q<E790A2>
<EFBFBD>。讚o。g紘鐸_<><EFBDA9>ゥ猪。キ『『。<E3808E>HVt0]t0Ptp<>スr濶鐔a.€K,<2C>(a.C,€<C280><>a.C,€。Y。絡h鐸只
<EFBFBD>a,工琢_<><EFBDA9>ゥ蠇鄭,o,<2C>) €n<C280><6E><EFBFBD>f<> <09>/咩<><><EFBDA9>。擠ミスサ。ヌゥタ ~。ユゥミ.^ 唆ⅵ。、ウI<EFBDB3><49>/<2F>`<60><>p^_a<>a<>a<>
<EFBFBD>廿虹_Hゥ<48><EFBDA9><EFBFBD><EFBFBD>
<EFBFBD> 。湊`スp頡ス _a<>『『vz€<EFBDBD>a.€K,<2C>
a,i, ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>スs^。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『ax`~ア`。ja <00> _a<>a<><06> <20>
!^ <20>
!<07><>顏ゥ€<C280> <0C><> !<00>!<07><>韲ス _a<>!
L<00>! <00>。掠寸ヲゥ<EFBDA6> }.m <>ァゥ<EFBDA7> u L<00><>€。ヲA/<2F>/「衡踉。<E8B889>A`[ア0ア*.<2E>iスア<EFBDBD><>A/<2F>/レ。・ゥ<EFBDA5>._ゥー 胥スタスア<EFBDBD>。浴キ q??<3F>ゥタゥー 胯。ヌ^0ェス _L。ァゥ<EFBDA7>。オ「LX <0C> <20> <0C> <09> <0C>!!<21>ゥ€
<01>o <0C> <0C>!!<21>
酩^ _a<> <0C> <20>!^ス占<>~<7E>!頷ゥ<E9A0B7> 鋏!韶ス _!リ紘鐸_<><EFBDA9>
<EFBFBD> _<>!0_スーL<1E>8
<EFBFBD>!檮h鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>Z_-<2D><>Z^7`
<EFBFBD>!<>(沢_<><EFBDA9>
<EFBFBD><>!<07><>隗ス<E99A97><EFBDBD>L。 <20>!<07><>陞ゥ<E9999E>
<1D>L、ⅳ!阡ス _a<><04>ゥ€ <0C> <0C>!!¦。<EFBFA4>€ q!!<21>
<0C> L<01>ゥ€ <0C> 蹊o<00>L<00>L<00>L<01> 。gアj鐸
<EFBFBD>_<> 
<EFBFBD>_<>
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD>_<>y <00><><>。撞1。;ゥー
<04><><EFBFBD>fキ <09><>fキ <09>_*イゥ<EFBDB2> }.m <0C> <0C>!!ⅶ ィ^!_<00>
<EFBFBD> _<>y
<EFBFBD>_<>xA_*イ鵠<EFBDB2>$
<EFBFBD> L<><4C>11v<31>&n<><6E><EFBFBD><EFBFBD>$$<24>v<>0n<30><6E><EFBFBD><EFBFBD>$$
<EFBFBD><<3C>
<EFBFBD>!h紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>
<EFBFBD><_, ゥ<>!^!顯ス _€<EFBDBD>€L<C280><1E>L<>::<E285B9> _!A<>Lq::<3A>M<><01>La<> <0C>**<2A> ??アp^/<2F>/「衡<EFBDA2>i 恭0。7頤  アp韵ス_a<>a<> 仗フ<E4BB97>。浴ヌ xゥタ #脩スチ<EFBDBD>。浴ヌ u ゥタ 脛L<00>L<><4C>??<3F>L<><4C> M_<>
<EFBFBD>_-<2D><><==<3D>;ス€<EFBDBD>€L<C280>==<3D>L<>L<E285B9>==<3D> <00>L<><1F>L<<3C>
スア<EFBFBD> L<==<3D>L=<3D>LZ<>スア唆<EFBDB1>L<>==<3D>L<>€ス寸<EFBDBD>€La t<>L<01>L^ _a<>T<><>p紘頬L€€
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD>
_<><01>L;;<3B>_*イ`アp<00>Lu
L;;<3B><03>L<><4C> <00>^3$M<><4D>#_*イ剛<EFBDB2>
<EFBFBD>!r紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>!v紘鐸_<><EFBDA9>
<EFBFBD> _<> _L<1E>
<EFBFBD>!訣h鐸_<><EFBDA9>紘鐸_<><EFBDA9>
<EFBFBD> _<>㍾h鐸
<EFBFBD>_<>>琢
<EFBFBD>_<> _a<>a<> <01>L<00>L<00>_+v<> <>€ ~ア`。gアj鐸
<EFBFBD>_<> БA<D091>LPP<50>
<EFBFBD>
<EFBFBD>_, ゥ<>!^!顯!_a<>M<><4D><EFBFBD><EFBFBD>1リ衡^4シ_2。|/<2F>2>衡^4シ
<EFBFBD>
<EFBFBD>_0<>アpv}@
<EFBFBD>!工琢_。圍<EFBDA1>ALt<00>!ゥ<>スア<EFBDBD>。ァゥ<EFBDA7>`<60><>.~ゥー 
<EFBFBD>_<>p.櫚<00>! ^!顯。<E9A1AF>a。s仝Lq::<3A>&<26>5`Y<01>タ.ゥaゥAo。湊秦}nmZ菰ⅷL<==ス題;ス<><EFBDBD><><EFBFBD>。・「LQ::<3A><>。。<EFBDA1>1L<00>
<01>
<EFBFBD>。・「LQ::<3A>スアス€<EFBDBD><>`}J<>~<7E>
<EFBFBD>肉_, ゥ<>
! <02><> <20>

<> 疎a<E7968E> 想z<E683B3> 浤p<07> 浤p。<70>€.o <0C> <20> <0C> <09><> <0C> <0C><><> <0C>
<EFBFBD> <0C>;;<3B>矯釖 <0C> _a<><04>ゥ€
<EFBFBD> _<>
<EFBFBD>_-<2D><>1リ衡蒴_2。x/<2F>2>衡誥
<EFBFBD>
<EFBFBD>_0<>x剛珉L
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> <03>0<EFBFBD>€<EFBDBD>`<60>
<1A> <0C>!!<E285B0>
?鐸
<EFBFBD>_<>_*イ^ _a<>ス占。浴w『avR/<2F><>*爻<>t<EFBFBD>。刀3<E58880>3a7T^<> 鉉ス占<> <1D>L<>:: <01>L<><EFBDA9>
<EFBFBD>_<>y <00><>
<EFBFBD>!<>(沢_<><EFBDA9>
<EFBFBD> _<>竜q。{ゥース<EFBDB0>^4h剛<68>fキ <09><>fキ <09>L<><4C>_*イL<EFBDB2><4C><EFBFBD>"。ラ紘鐸
<EFBFBD>_<>M<><4D><00>4LD<00>!。圸<EFBDA1>スア<EFBDBD>。ァゥ<EFBDA7>`<60><>.~ゥー 胱L<00>! 靉!
<EFBFBD>_<>p.泯圸<E6B3AF>スア<EFBDBD><>A/<2F>/レ。・ゥ<EFBDA5>._ゥー <>i<>^ゥ€   酊唆^8覘^8覘Z^8誚<38>ミ/<2F>
<EFBFBD>_0<>x
<EFBFBD>
<EFBFBD>_0<>y剛^8ネ鵠^8ネ`<60>ミJ<00>L::<3A>L[::<3A>n<00>L:: <0C>!!<21> <0C>ゥ€ <20>
!!踴

 踞。<E8B89E> _a<>! <><EFBDBD>。掠<EFBDA1> xゥ<78>
x錏ス<E98C8F><EFBDBD>1スー<EFBDBD>
<1D> 。ァ。オゥー「 杵[ゥ€ <0C>!!<21> <0C> <20> <0C> <09> <0C> アpアj鐸
<EFBFBD>_<>€ 胥
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>t贖`
アPアJ琢
<EFBFBD>%_<>%L<1E>" <00>
<EFBFBD>!竝h鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD><02>L<1E> LAA<41>LPP<50>! <01> LAA<41>LPP<50>!<07><> <01>L<>::<3A>!<07><>
<EFBFBD>
<EFBFBD>_0<> <00>!<07><> <01>ス定ス迅<EFBDBD>/<2F>/「
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>y。糞Q。[ゥー靄。竜q。yゥ<79>:琢
<EFBFBD>_<>
<EFBFBD>_<><EFBFBD> <09> 
<EFBFBD>_<>掠秦~<00> L[::<3A>`n<><EFBFBD>スアL<EFBDB1><01>L<><10>スア唆<EFBDB1>"
<EFBFBD>v<>ミ紘鐸_<><EFBDA9>
<EFBFBD>_<> <00><>
<EFBFBD>!ツ工琢_<><EFBDA9>
<EFBFBD> _<>Kス<4B>!<10>。ァゥ<EFBDA7>∫`~!紘鐸_<><EFBDA9>
<EFBFBD>_<> <03> L<><4C>スアL<00>L<01>L€<EFBDBD>`<60>n<>ゥ€ $鋩LL<00>ス。<EFBDBD><00>
<EFBFBD> _<>t<EFBFBD>
<EFBFBD>
88L KKv<4B>/<2F>
<EFBFBD>_*爻<>t<EFBFBD>`<60>ア`K<00>L<><4C>錵L<E98CB5><4C>錢L L
L v<>/<2F>
<EFBFBD>_*爻<>t<EFBFBD>`<60>ア`K<00>L<><4C><01>$L<><4C><01> L^ _a<>ス占L<><> €脣<00>
<EFBFBD> _<>za工琢
<EFBFBD> _<>
<EFBFBD>!<00>(沢_<><EFBDA9>
<EFBFBD>_<><00>L<00> ス占L<><> €<C280>
<EFBFBD>!(紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_-<2D><><1E>!^_1リ衡<EFBE98>!顆L00<30>L99<39>!韲`アpvx<76>  <09>!鞦L<1F> <09>€o €<>€_?R。<52>?カス _a<>a<><>_+v<>L<>$$<24>
ゥ€/<2F>
<EFBFBD>虹_?自<>x<EFBFBD>
<EFBFBD>€`~ア`。gアj鐸
<EFBFBD>_<> €<>L<><1A>L<>
€<>ミn<EFBE90>ゥ€ #脉L<00>L<0F>スア唆<EFBDB1>1
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> <00>
<EFBFBD>!リ工琢_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>!竝h鐸_<><EFBDA9>
<EFBFBD> _<><EFBFBD><>再鋗墾<E98B97>a/<2F>-神<>M<><07>
<EFBFBD>!:紘鐸_<><EFBDA9>
<EFBFBD> _<>紘鐸
<EFBFBD> _<>L。キ^;カス _
<EFBFBD>! SSL
UUL BBv<42>/<2F>
<EFBFBD>_*爻<>t<EFBFBD>
`<60>ア`K<00>L<><4C><01>L<><4C>M<>
<EFBFBD>L<><4C><01>M<><07>L<><4C><01>!<00><>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>__?RML<00>/<2F>Aャス占L<>aa<61>
L<EFBFBD>zz<7A>`<60>アp<07>`<60>アpn<70><> €鉉
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<>・工琢
<EFBFBD> _<> _a陦<61>
`
アP仝vx<76> <10> L <20> 。㍾h鐸
<EFBFBD> _<>!霤!霏!_<>スーLスチLL<><4C><00>
<EFBFBD> _<>
<EFBFBD>_<>`<60>
<1A>

<EFBFBD>€_?R衡<52>ス。<EFBDBD>L<>
<EFBFBD>  €<>€_?R<>Lス。墾豢。<E8B1A2> _a<>ス紳 鏝`ソアp!/<2F>@寘<>{鍼 <00>_<>エ^7`
<EFBFBD>!厓h鐸_<><EFBDA9>
<EFBFBD> _<>7`ス _L<1E>
<EFBFBD>!訣h鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_-<2D><><1E>_1リ衡<EFBE98>_2。x/<2F>h鐸_<><EFBDA9>
<EFBFBD>_<>t<EFBFBD>L!^!顯ス_a<>a<>a<>a €<>€_?R衡<52><>`<60>
00痒
99黐アpv}<7D>ミo<EFBE90><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> aSSゥ<53>x <00>^<M<>
<EFBFBD>
<EFBFBD>
<EFBFBD>_0<>
<EFBFBD>
<EFBFBD>_0<>紘鐸
<EFBFBD>_<>€M<C280><07>L<><4C><01>スり<>ゥ€ <06>。〟蹲t<E8B9B2><74><EFBFBD><EFBFBD>!Э/<2F>,<2C>!イ^
<EFBFBD>_2郁x
<EFBFBD>_2郁s_4タ鑵_6鑪_9鑠_:V衡<56>
<EFBFBD>!P紘鐸_<><EFBDA9>
<EFBFBD> _<>V`アp<07>ソアj鐸
<EFBFBD>_<>IスァL<1E>2oM<>
<EFBFBD>
<EFBFBD>
<EFBFBD>_0<>x<EFBFBD>
<EFBFBD>
<EFBFBD>_0<>x <00>
<EFBFBD>!竝h鐸_<><EFBDA9>
<EFBFBD> _<>!^L ^><ス€<EFBDBD>。〟蹲x<E8B9B2><78>€ 鋩`アpォp。キゥー。湊秦}nm<00>ゥー €<>Lア 蹂Lア €<>スー_?R衡鸙<E8A1A1>(ゥーo /<2F>
<EFBFBD>乳_?自<>{a <00>ゥー €<>スー_?R<>L<01>。キゥー。湊秦}nm_2>衡<>L::<3A> L <20>
<EFBFBD>
<EFBFBD>_, ゥ<>
<EFBFBD>
<EFBFBD>_0<>x <00>6L<00>3
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>_<><
aa<61>
<0F>*a<><61><EFBFBD><EFBFBD> QUU<55>#a<><61><EFBFBD><EFBFBD> ABB<42>a<><61><EFBFBD><EFBFBD> 1MM<4D>a<><61><EFBFBD><EFBFBD> !II<49>a<><61><EFBFBD><EFBFBD> qTT<54>a<><61> a <20>ゥミo<EFBE90><6F><EFBFBD><12>i<><69><EFBFBD><EFBFBD> q <20> tⅸa<E285B8><61> q <20>i<><69><EFBFBD>
<EFBFBD> _<> ZZL
88L KK<4B>
<EFBFBD> _<>
<EFBFBD> _<> SSL
UUL BB<42>スタL SS<53> L
UU<EFBFBD>L BB<42>L<><4C>
<EFBFBD>
<EFBFBD>!訣h鐸_<><EFBDA9>
<EFBFBD> _<>琢
<EFBFBD>_-<2D><>。掠秦~n<>L<> <20>L<><00> 銜L<E98A9C><>L<01>L<00>スェ/銈;<>
<07>
<EFBFBD>アj鐸
<EFBFBD>_<>??L
<EFBFBD>!工琢_<><EFBDA9>
<EFBFBD>_<>x^=d! 刎。xLt<00>`}アPK羡ス呵 。〟輿~
アPⅢn~<> 胄L<E88384> L ZZ €<>スー_?RL<00> €<>Lア
<EFBFBD>Lア!!都Lア
<EFBFBD>Lア!!<21>#<23>ゥー €<> Lア
蹂Lア
踝Lア!!跼 €<>スー_?R衡<52>
<EFBFBD>Lア<1A>L<01>鞏o zz<7A>アp<07>`<アpn<_*イL<NN<4E>L<YY鋻L<NN貉
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<> 
<EFBFBD>!リ工琢_<><EFBDA9>
<EFBFBD> _<> _Lゥー菌冐<E88F8C> <01>
a<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ニゥタ }nm<00>a<><61><EFBFBD><EFBFBD> ~ア`。gアj鐸
<EFBFBD>_<><EFBDA9><EFBFBD> q <20> t<> €釡ゥ€<EFBDA9> <01>。ヌゥタLu$$<24> $鐸
<EFBFBD>_<><EFBDA9>$$
<EFBFBD>_, ゥ<>!L
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>_<><00>a工琢
<EFBFBD>_<><00>(沢
<EFBFBD> _<>\訛T]琢/M Disk file error: $ is read-only.$
Do you want to: Change it to read/write (C), or Abort (A)? $
$
CP/M Disk $read$wr
<EFBFBD>!<>択_<><EFBDA9>ゥ琦
<14>Tウm<EFBDB3><6D><02>o<02>]<02>M<02><00>ao<02>
<EFBFBD>Q<>_<><02>M<02>a紘鐸
<EFBFBD> _<>
<EFBFBD>!レ工
  "$&(*,._o<><6F>t]Tr]
<EFBFBD>!<00>択_<>
<EFBFBD>!紘鐸_<><EFBDA9>
<EFBFBD>;_<>x剛<78>(
<EFBFBD> <04>スT<EFBDBD><>UaWミ紘鐸_<><EFBDA9>
<EFBFBD> _<>"(<00><>NON-SYSTEM FILE(S) EXIST$Enter Filename: $Enter Old Name: $Enter New Name: $File already exists$No f_<>p<00>。y €<>! €。嘛<EFBDA1>t<EFBFBD>T]琢_<>ウゥー.? <>。キゥー xv<78>tス占。浴蹲q<E8B9B2>taa<61>。磨覘a<E8A698>tzz<7A>。普藾\<5C>tア@<04>。煤臺te$select$select$change$DIRDIRSTYPERENERAUSERSUBMITFile is not executable$Insufficient memory$Read error o琢_<><EFBDA9><>
Exception $ at user address $. Aborted.$CP/M-8000(tm), Version 1.1, Copyright (c) 1984, Digital Research02468:<>@BDFHJLNPRTVXZa<00>(沢
<EFBFBD> _<>
<EFBFBD>_<><EFBDA9><EFBFBD> <00>h<><68><EFBFBD> <0C>!!<21> <>  
€凧
<EFBFBD>_<>琢凧
<EFBFBD>。罩=<3D>(沢_<><EFBDA9><>ile$No wildcard filenames$Syntax: REN Newfile=Oldfile$Confirm(Y/N)? $Enter User No: $.SUB file not found$User # range`O<>tアp。t。浴輜|<7C>tゥ遂ゥ釶ゥ寸浴蹲x<E8B9B2>tv<74>t]錻L<00>&L<00>!
<EFBFBD>_B跖 L<00>aL<00>
<EFBFBD>_B<> <0C><>aL <0C>$
<EFBFBD>虹_, ゥ<> program load$Program Load Error$?8JR\jv<02><02><02><02>Jd<03><03>`<04><04><04>8<04><04> @`€<05>8888XXXX-0000-654321
WARNING -- Do not attempt to change disks$
CP/M-8000(tm) Version 1.1 12/19/84$
Copyright (c) 1984,\^`bdfhjlnprtvxz|~€<00><00>択幡
<EFBFBD>a。#<23>(沢_<><EFBDA9><>
<EFBFBD>
<EFBFBD>_<>
$$琢凧
<EFBFBD>!<00>択_<><EFBDA9><>
<EFBFBD>
<EFBFBD>_<>
$$鐸 is [0-15]$Too many arguments: $.,=[];>:=<3D>>>&=レ>>
 $;AレB8BHAレBAフBP DワC<EFBE9C>D
DDD>DXDワDハC<EFBE8A>02J`|<00>_+v!L<00>
L<00>
<EFBFBD>
<EFBFBD>_, ゥ<><00> €鐸
<EFBFBD>_-<2D><>Xo/<2F>/L<00>L;;<3B>
<EFBFBD>_CリL<00>/<2F>.メ。x<EFBDA1>8!L<00>L<00> L888<05><05>
88888888888"8.,n€ACR | <09> <09> <09> <09>AC
"
*
2
d
<EFBFBD>
<EFBFBD>
#P"x"<22>"<22>#D<><01> #<23>#ヤ#<23>#セ#<23> Digital Research Inc.$ error on drive $
Do you want to: Abort (A), Retry (R)$, or Continue with bad data (C)$? $
$CPP<00>T<00>Zd<00>hp8<02><02><02><02><00>8<00><02><00><02><00>
<EFBFBD>!<00>(沢_<><EFBDA9>ゥ琦
<14>!T ]T]<04><><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>!<00>(沢_<><EFBDA9>ゥ閒ao琢T <02><><EFBFBD><EFBFBD><EFBFBD>/8<00><00>S<01><01>rd(DH<00>
<EFBFBD>_+"<22>a/<2F>+"L<00>a/<2F>.メo
<EFBFBD>_B覘L<00> L<00>aL<00>
<EFBFBD>_B<> <0C><> <0C>
<EFBFBD>虹_, ゥ<> <0C>ヲ^!_
<EFBFBD>#<23>#<23>#<23>#<23>#<23>#<23>#ネ&<26>&<26>&<26>&<26>&<26>&<26>(`'>'<27>(
("("(
(
CP/M-8000(tm) Version 1.6 COPYRIGHT (C) 1984, Digital Research 
 <02><00><02><02> <00> <<00>@<00>HR\<00>bfp<03><00><03><03><03><00> ~ <0C>    <0C> 



@
F
L
T

<EFBFBD><00>L<00>P<00>|<00>€<00><0E>ゥ l<00> v z<00><00><00><00><00> <09> <09> <09><00> <09> <09> <09><00> <09> <09><00> <09><18><18><18><18>
,2:Rf<19><19><19><19> <06><00>&<00>H<00>RX`x<00><07><00><07><00><00><00><00><00><00>)<00><07><13><13><13>BJRV\dlx|<14><14><00><14><00><00><03><03><00><03><00>&R<00>V<00>^ht<00>x<00>€<04><00><04><04><0E><0E><0E>6>Zj<0F><0F>$jr<10> <09><00>
<00>

<00>


(
0
J<00>
N<00>
^
b
l
p
t<00>
|
€<19><19> <00> :Nfnz<1A><1A><1A><1A><1A><1A><1A><00><07><07><07><07> <00>&/,0<00>48<00>@JNVZ^bVfl<14>
(0Fbt~<15><15><15><15><04><04><04><00><00><00><00><00><04><04><04><04><04><00><00><00><00><10><10>>DHV8^dp8|8<11><00>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>







<EFBFBD><00>
<EFBFBD><00> <00><00> FL<1B><1B><1B>8D<00>H<00>RZjx<1C><1C><1C>x<00>~<00><08><00><08><08><00><08><00><08><00><08><00>V8<08><00>6<00>@`z<16><16><16><00><16><00><16><16> 04>HX<00>hx<00><05><05><00><05><00><00><00><00><00><00><00><05><00><05><00><05><11><11><11>*8FJP`dx|<12><12> < H d<00> l<00> z <0B><00> <0B><00>       <0B><00> <0B><00>   <00> *<00> 6 < D x<1D><00><00><1D><1D><1D><00><1D> $*<D<08><08><00><08>  
    & 0 4 :<00> > B<00> L P<00> T X<00> \<00> hZbnz<17><17><00><17><00><00> <00><00><00>"2T`t<00><00> <00><00> &<00>,2<00>>d<00>l<00>tz<06><00><00><00><06><06><00><06><12><12><12><12><12>
8$08BHV\fzLP<00>nr<00><1E><1E><1E><00><1E><00><1E><1E><1E><00><00>"(@Xj)V)\)f)j<00>)|)<29>)<29>)「)ヲ)カ)セ)ツ)ネ)<29>)<29><00>)<29>)<29>*****&<26>&<26><00><00><00><00><00><00>&<26>&<26>'''"','0'8'<<00>2カ2コ
2ツ2ネ
2ヨ
2゙<00>2<>2<>3<00>33"3*
34
3@3V3h
3p<00>3|3ヲ3ク3ヤ3゙#ミ#ヨ#レ#<23>#<23>$<00>$&$B$L$R$^$b$f$j$n$r$v$€$<24>$<24>$<24>-<2D>-<2D>..
.
.&<00>.2.8
.>
.F.J
.T
.Z
.b
.h
.ミ.ヨ// //Fn<1F> <1F> $ . 4 L j x <20> <20> <20> <20>!* *(*.*2*6*>*F*N*R*f*j<00>*€<00>*<2A><00>*<2A>*<2A>*ョ<00>*ェ*ヲ*<2A>*<2A>*<2A>
 'L'V'Z'`'h'l'z'~'<27>'<27>'<27>'、'ョ'セ'ツ'ニ'ハ'メ
3<>4
4
4<00>4(4N
4X
4^4n4x4<>4<><00>4<>4、4ャ<00>4ク4セ4ト4ネ4メ4レ<00>$<24>$<24>$<24>$<24>$ー$エ$ク$シ$ヤ<00>$゙$<24>$<24>%<00>%
%%% %(%F%P%T/n/<2F> /<2F>/ヲ/ク/ツ/゙/<2F>/<2F>000J<00>0^0j0n0<>0「<00>0ャ0シ0ト0ホ0レ!!R!Z!<21>!、<00>!ネ!ミ!ワ!<21>"",">"P<00>"X<00>"^"d"r"vRVZ^bfj*カ*ニ*リ*゙*<2A>*<2A>+&+.+2<00>+8+V<00>+t+|+<2B>'ヨ'<27>'<27>'<27>'<27>( ((((0(:(>(L(P(X(\(l(p(t(€(<28>4<>4<>4<>4<>555
55*54
5<<00>5H5Z
5n5€
5<><00>5<>5<>
5ャ5エ5ト%X%\%f%r%x%~%<25>%<25>%<25>%、<00>%ャ<00>%カ%シ%ト%フ<00>%リ%゙%<25>%<25>%<25>%<25>&0<>0<>1<00>1$1<1@1F1Z1d1h1n1|1€1<>1<>1「1ィ1ヨ1ワ1<>1<>"~"<22>-"<22>"ー"シ-"リ"<22>"<22>## #&8#<#J8#T#\#l#t<00>#€<00>#<23>+<2B>+ャ+<2B><00>+<2B>,,,,$,6<00>,< ,B,Z,z,<2C>,<2C>,<2C>,<2C>,ヲ,カ,コ,メ,<2C>(<28>(<28>(「(ヲ(シ(ト<00>(フ<00>(ヤ(リ(<28>(<28><00>(<28>))) ))")*)>)D)H5フ<00>5リ5<>5<><00>5<>5<>66 66<00>6*686<6B6F6N6V<00>6b6p6t6z6<>&&&&&&,&0&@&N&h&t&|&<26>&<26>&<26>&<26>&ャ&ニ&メ&ヨ&゙&<26>1<><00>1<>22 22"2,222<2B2N2^2f2r2v2€2<>2<>2、2ィ2ー#<23>#<23>#「#ー#エ#ク#シ<00><00><00><00><00>#タ#ト#ハ,<2C>,<2C>,<2C>---$-2
-:-X-^-p-<2D>-<2D>-ク-ネ-ホ-ヤ<00>-レ-<2D>-<2D>-<2D>6<>6<>6、6ェ6エ6シ6ツ6ホ6ヨ6<>6<>6<>7 7747H7L7V7\7b7zBZB^BjBn<00>BzB<>B<>B<>B、BャBエBトBホBヨ<00>B<><00>B<>B<>B<>CCC">(
>.
>4
>>
>F
>N
>b
>j<00>>v><3E>><3E><00>><3E><00>>「
>ヲ >イ>ク<00>>ホ><3E>><3E>??*H<>
H<><00>H<><00>H<>.I.I0I .I0I.0I6<00>I><00>IF.IJIV.IfIn<00>Iv<00>I|.I<>.I<>I<>.:ク:ニ:ワ:<3A>:<3A>;
;";*<00>;0<00>;F;L;\;b;n
;v;€
;<3B>;<3B>;「<00>;ョ;ク;シF&F,<00>F2F6F<F@FJFNF\FdFh<00>Fl<00>Fr F|<00>F€F<> F<><00>F<>F<>FヲFェ7~7<>7<>7<>7<>7<>
7ィ7イ7ク7タ
7ニ7ホ7ヨ
7ワ7<>7<>
8<00>8&868><00>8JC,C4<00>C@CF<00>CL<00>CVCbCf<00>Cj<00>CrCzC<>C<>C<>C<>Cャ
Cエ<00>CタCミCヨCワC<>?? <00>?,?2?>?D<00>?J<00>?P?V?^ ?f<00>?r?|<00>?<3F>?<3F>?「<00>?ョ?ク?シ@~@<40>I<>I<>.I<>I<>Iヲ.IェIイ.Iカ<00>IシIタIニIメIワI<><00>I<>-I<>__textR_bios6<00>ARG2
;ツ;レ
;<3B>;<3B>
;<3B>
;<3B>
<<00><<<&
<,
<2<@
<L
<X
<\
<b
<h
<n
<t
<xFーFクFシFタFネFミFヤ<00>Fレ<00>F<><00>F<>F<>F<>F<>F<><00>GGG
GGG<00>G<00>8d
8p
8x
8<>
8<><00>8<>8ョ8カ<00>8ツ8ホ8ヨ<00>8<>8<>8<>8<><00>99 999 9(<00>94C<>C<>C<>DDD DDD$D,ァツ@ヨ@ワ@<40><00>@<40>@<40>@<40>A AA$A2ABANAVAdAvA<>A<>A<><00>AェAーAコ<00>0NTRAPS<00>cr4<00>cr12*setsup*callBios<6F>cr9D_bios3<00>cr1<00>EPUTRAP<00>SEGTRAP<00>AR<<3C>
<<3C><<3C>
<、
<ェ
<ー
<カ
<コ<ト
<ハ<<3C>
<<3C>
<<3C>
<<3C>
<<3C>
<<3C>=
= =J
=R<00>=^G$<00>G*G.G4G8GJGTG\Gd<00>Gp.Gx.G€
G<><00>G<>.G<>.G<><00>Gェ9B9F9L9R9Z9b9j9r9|9€9<>9<>
9<>9<>9ェ9イ<00>9セ9ミ9ヨ9<>9<>D8D@DRD\DfDn<00>DzD<>D<>D<>D<>D「DェDカDセ<00>Dニ<00>DミD<>D<>D<>D<><00>AタAニAハAメA<>A<>A<>BBB <00>B,B4<00>BDBJ鵰4<00>co<00>"scfcw<00> cr6b_udiv<00>2biosf<00>cr14<00>MEM_SC<00> scinst6_bios5<00>XFER_SC<00>=j=v
=~=<3D>
=<3D>=<3D>=<3D>=ヤ=リ<02><02><02><02><02><02><02>=<3D>=<3D>
=<3D>
=<3D>
>>"GネGミ<00>GワG<>G<>HH
 H$.H6HR<00>HZ<00>Hv H€<00>H<><00>H<>
H<>Hー
Hク<00>Hタ<00>Hニ
Hホ9<>9<>:: :
: <00>:,:<:D<00>:P:Z:^:h:p<00>:|:<3A>:<3A>:<3A>:<3A>:「:ーD<><00>E
E
<00>EE<00>E"E.E4E@EF<00>EJ<00>EP<00>E\<00>EbE<><00>E<><00>E<>F <00>FFFF"ARG1<00>cr3<00>cr11<00>LONGSIZE<5A>cr8callCL_bios2<00>DEBUG_SCZ_swap<00>cr0<00> SC0TRAt<00>_tpa_hp<00>_tpa_ht<00>タ_gbls<06>uprt_liZ_ureadliv_tmp_sel<65>csv<00>switch1<00>cret<00>copyrt<00>scr2<00>
ARG5<00>cr10lt10excmsg1<00>cr7<00>$scpc<00>INTSIZE<00>BSETEXC<00>_chainp<00>_bios<00>_cur_dis<69>subcom<00>€_subdma<00>_user_pt<70>_glb_ind<6E>save_su<73>$_subfcb<00>$_cmdfcb<00>_tail<00>_autorom<6F>ダdGTRAP<00>BGETSEG<00>ARG4<00>co<00>"scfcw<00> cr6<00>_sysseg<00>cr14<00>MEM_SC|_initexc<78> scinst_bdos<00>_x_hdr&_readhdr&d_readxsg&ツ_loadseg)ク_setbase)@_setaddr%ク_fillbuf__data<00>usercmd*喞cpstaP<00>ARG3<00>NMITRAP<00>&FRAMESZ<00>BDOS_SC<00>BIOS_SC<00>
cr5_traphnd<6E>PITRAP<00>>setsupf<00>cr13<_berial鐇conout棒dir_rdP_submitQ_morecmdネ_bdosiniレ_prt_err _abrt_er垣warning "_ext_err 「_ro_err<00>_map_adr<64>_mem_cpyh_warmboo@_constat_coninL_taboutD_rawconi<13>prt_lin^_readlin<19>seldsk鐇oma<00>x_parm~_del.メ_scan_cm*濱strcmp,<2C>decode/「_delim/レ_true_ch0_fill_fc1リ_too_man2_find_coヨprint゙prtdolla<6C>XFER_SC<00>ARG1進nitloop<6F>cr3ェinit1<00>cr11excmsg2<00>LONGSIZE<5A>cr8rt
copy*芯cpN_autost尽tackpKsysinitD硺main*ィccploop*膨cpclearR_cmd_tblr_msg契mios4<00> TRACETR"__bdos<00>PCSIZE<00>nr15<00>cr2<00>
ARG5<00>cr10"bioscall<6C>cr7<00>$scpc
h_error _cpy_bi<00>switch2_rdwrt._getaloc 8_blkindx €_blknum コ_setblk
_do_io
N_new_ext胆calcepenfilネ_close_f&_search\_dirscan0_bdosrw、_create$_deleteタ_rename 0_set_att!T_getsize エ_setran2>_chk_col:V_user_cm;_cmd_fil?R_sub_rea?酸dollar@銈commentB訐submit_*イ_cr_lf+"_copy_cm+v_prompt, _echo_Ldfltexc<00>DEBUG_SCハexchndl<00>cr0exceptョsysexc<00> SC0TRAP<00>ARG3<00>NMITRAP<00>&FRAMESZ<00>BDsg2枩msg3ー_msg4ツ_msg5リ_msg6秬msg7銈msg8_msg9(_msg10:_msg11P_msg12R_bios1<00>INTSIZE__con__bss^lowexc6chkredir<69>ARG2<01>rtwordusr_vec<00>0NTRAPS<01>rtlonxt<0E>get_rc`_conbrk~_cookdouハ_getchィ_newlineリ_backsp"`_do_phio_dchksumニ_dir_wrp_setalocー_c!ハ_free_spT_flushit#V_pgmld
ニ_setexc t_set_tpa_move<00>_log_dsk<73>_ro_dsk<00>_crit_ds<64>_tpa_lp<00>_tpa_lcm-神check_c-<2D>get_cmd/_get_par2<>dir_cmd4タ_type_cm6_ren_cmd9_era_cmdGV___LOADAャ_translaCリ_execute<74>_xOS_SC<00>BIOS_SC<00>
cr5<00>PITRAP<01>rtbyteトinit3<00>cr13フexcrtn0<00> TRACETR<00>PCSIZE<00>nr15<00>h_msg13<00>_load_tr<74>_first_s<5F>_chain_s<5F>_end_of_<66>_dirflag<61>_subprom<6F>_sub_ind<6E>_index<00>_sub_use<73>_userg<00>cr4タinit2<00>cr12 excmsg3蛍srexc<00>cr9evec_adrprtnib<00>cr1<00>EPUTRAP<00>SElraloc<18>chkaloc垣allocH_match<1C>close<1D>alltrue_matchit Юextsize <20>fsize<00>@_x_sg<00>_mylpb<00>fer<00>_LPBフ_stack<00>_sstackレ_contextゥタ猫巴岬オ雰<EFBDB5><>&戟劫オサオェオ匏<EFBDB5>卸wオfオUオD潔オwオfオUオDェ鮻戟ョ<E6889F> 猫巴岬オ雰<EFBDB5><>&戟項告頃魂≦T<E289A6><54>ョ歯<EFBDAE><E6ADAF><EFBFBD><08>0_<05>1ミ`<60><>
ァ情<>槌キ5キ$ァ情劫オサオェオ匏悪<00>貿オUオDオ圧<EFBDB5>菠タァO<EFBDA7>貿オUオD<EFBDB5>$<24><><07>H<E288AA><><>ΦLウ\ウlウ|<7C>_<05>1ミ`a6<>_<05>`aX0
^&1<><02><17>、T€€チ 4モ]1
<00><19>
<08>
<>ァ乗
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>畑ヲ@<40>ヲA<EFBDA6>潮! <09><00>! <0B><07>潮畑!<><7F>ヲB<EFBDA6>ヲA<EFBDA6>-<2D><0F><> <><7F>_無xウhウ|5メ|9<04>!Bウ,ウ<ウLウ\イェ扇<EFBDAA><07>
褒オ9オ(峰<><1D>*ス_j<0E>#<23>(<28>
<EFBFBD><><07>ュ(ュ9ュJュ[€€<C280>キ[キJ峰<4A>攅9キ(_<07><>
峰潮畑陪! 4モ]1椛<31>、g<EFBDA4>_<>、Uォp蓑オ匏逸誾<E8AABE><><EFBE8E><08><08><08>0ミ^ヲ<06><0E>4ラ`q<05>潮畑幡<E79591>潮畑<><7F>、P潮@<><7F>^J4ラ`qヲ@<40>ヲA<EFBDA6><>!<00><EFBFBD>!<07><><EFBFBD>、Per<00>_LPBフ_stack<00>_sstackレ_context€€イ汝a<01>0歴<30>
2ンY_ B<>_,<2C>_1ミ`€€<C280><06>_鏗ァ乗<EFBDA7><E4B997><EFBFBD>
`汝ァ/<2F>縫オ3オ"燾ア
択ォqアj蛋<EFBFBD><>$<24> <0B>' <>4<>"w<><10>4モz'5<>、P2ンY<><10><>ヘ@<40>4モ]&0<>ヘ@<40>4モ]&0<><10>4モ]&0<><10>ヘ@<40>ァo<EFBDA7>ヘィ<EFBE8D>ヘィァ<0F><08><08>襁琢4モb1客如峰<E5A682> <09>
<EFBFBD><06>
<EFBFBD><03><07><08><>!?∬ <><7F>!@<7F>?€ァ情ォpウ圧hイ<68><EFBFBD><EFBFBD>~ャ<>5メ|6<><08><>!<<01> <><7F>!C<><EFBFBD><ァ情ォpウ圧|ウ舷ウクウィウ亠圧xォ¬ウxウhウ|5メ|9__<>0_<05>1ミ`荏汝a<00>0歴<30>_ B<>琢5ミ`<60>?<3F><>`択5ヨh惠<68>
<EFBFBD>売宙徂<E5AE99><1F>筈゚ネ<EFBE9F>3ッ.尼<>
5ヨd゚マ売<EFBE8F><>*オiオh5ヨh゚リ未<05>.━<><08><00> <0B>ウ元惶ャウシイワョラ鴻ォ<>鴻€ンオサオェオ匏茜<>。ー<EFBDA1><EFBDB0><EFBFBD><EFBFBD><EFBFBD><00><07><01><><05><0E>€ンオサオェオ匏郁<E58C8F>B<EFBFBD>
ヲA<EFBFBD><<00> ?<3F><>`ヲ瑁却裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<14><1D>フ破禰崩劣<E5B4A9>&峰朋<E5B3B0>ゥpアj<1D>リァー<EFBDA7>
<EFBFBD><>ァア<EFBDA7>ゥア・値キSキB犯<42>$ス<1E>破禰崩劣峰朋0<E69C8B>イ嫡<EFBDB2>2<EFBFBD><02> <20>_ト__<><>$狽溌_Xァーヘ@<40>ヲg<EFBDA6>ヘィ<EFBE8D>ヘィヲg<EFBDA6><08> _<05>z0_ B<>ヲg^,4モ]&0^,<2C>ヲg^,ァ戎,琢只<E790A2><>|<7C><01><><1F>エ資<EFBDB4>f<EFBFBD> <09>蓑オ匏扱w蓑オ匏扱w播陪<E692AD>}}
1<EFBFBD>&ァn<EFBDA7>
<EFBFBD> *3<>"。<>!
<>}<7D>3<EFBFBD>"。<>!
゚卲$<24>}}
<EFBFBD>7リ<00>
q<>
゚ぃ;!0<00>シ*ァィ<EFBDA7>゚ア゚キ<EFBE9F>ァ「<EFBDA7>
ァ」<EFBFBD>゚カ゚、゚セ<EFBE9F> ゚チ゚ィ゚サ<EFBE9F>ァ」<EFBDA7>゚ノ゚聴./<2F>矧ス寸亰<E5AFB8>5ヨd゚逍*オ歴崩ァ情 €扱サオェオ匏<EFBDB5><E58C8F>カ歯<EFBDB6>
_ト__<>巴蓮<E5B7B4><06>ァO<EFBDA7><>ァO<EFBDA7><><>0_<05>1ミ`荏汝a0歴<30>_<00>、Rゐ4モ^&2<>パ鴻_j。'<27><01><17>0ミ]ネ<0F><>"ヲ<>
€<EFBFBD>!<7F><EFBE80>、ヨ<EFBDA4>ウエウーイワ・0<EFBDA5>#!<03><><EFBFBD><EFBFBD><11>、ユ! <00><19> <0B>・;<3B>!<7F><E289A1><EFBFBD><E381BF>、ユ!€裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>免オ5オ$<24><08>ヲD<EFBDA6>5メ|゚<>4モ`9ヲト<EFBDA6>
ャト5メ€<C280>4モl9ャト<EFBDAC><11>、V!<10><11>ヲB<EFBDA6>1!€<00> <><7F>?ァ償衡覈、U鍜ヲA<EFBDA6>6<>"ャkャ谺~ャ<>h潮ウ€イクイ,畑。JスオォPタ毎オwオfオUオD毎オwオfオUオD韮彫<E99FAE><02>$<24>・ア蓑ォーェ<>貿オUオDオン貿オUオDオン。ワ韮彫キ搆ェオ勦イ潔<EFBDB2>。ヘ<EFBDA1>$」イェ鵫項告頃魂香ウ惶ャウシ香ウ惶ャウシ認。ユ<EFBDA1>゚ナ゚J<EFBE9F>7レx。(!<>アイaセ。сUー禰売1ミx <0C>5メБゥ0.=0リ[Ч2リ[2ユZ0ミ^<5E>2ミ姶F<E5A7B6>゚h<EFBE9F>ヲニ<EFBDA6>1メ<00><><>イ7ヨ|<7C>゚﨓<> B<>ァ戎,琢4モ`1<05>?<3F>!@垂<><>ゥp<01>`択只。p認<70>$狽溌_Xァー<EFBDA7>免オ5オ$_<><E68AB9><EFBFBD>ト__<>、S^ 潮畑<E6BDAE>
ァー<EFBFBD>免オ5オ$≡ウ<14> <09>・(ノ`<60><>、Tヲ<03><02> <0B><02>ヲg<EFBDA6> 、ヤ<EFBDA4>
ヲg<EFBFBD>、ヤ<EFBDA4>ヲヨ<EFBDA6>
@@<40>、ヤヲヤ<EFBDA6><06><11>;オオ)オ<18><>エ棍ヲB<EFBDA6>
ヲA<EFBFBD>C<><00>@~<><>`<>、Q4モ<34><13>X`<60><>0_<05> €<00>0_<05>0_ B<><08>1ム`餌4モ]&0^,<2C>4ラ`q鏗琢4モ`1<05><EFBFBD>カ韃5ヨ`ュ[ュJュ9ュ(<28><01> Bウ券&<26><>!?∬3 <00><>"?€・償1デ。k、g<EFBDA4>ス5ウ|ウ元惶ャウシォ0¬ウ圧xウ桁w<E6A181>!<<01> <07><><・償!<><EFBFBD><><11>ァ時<18><><>ヘ・┝7ヨ€<>。キシ<EFBDB7>。ァ<00>t。vウv“<76>。ニヒ<EFBE86>at<>!<0F><>8<EFBFBD><00><00><07>0リ延ィ2リat<>VゥQ)Q_頏゚<E9A08F>7ヨ隙コ、ヲゥ0<EFBDA9>3列7゙€比二尼_ミ"<01>5<>"<22>q<01>- 5<>
@6J<00>@J"JBBB>J,J,JBBB><01>RJ,<18>、ヤ、ヨヲ疲、ラヲ扇ヲ匁、ヨ<EFBDA4><05>
ヲ先、ラヲ匁、ユヲ捺、ヤヲ疲、ヨ<EFBDA4><03><02><1D><>5ミxァ<02>セ€。ヲB<EFBDA6>)5メ|<7C><11>5ヨP<><10><01><10><01><10>5ヨT<><10>5ヨHFDB@><:86<02><01><01><01><01><01><01><01>3<><04>_<05><02>0<><><E38398>鏥_讎W珒管#<04><08><><00>
<EFBFBD>=只琢賑売幡 k: v@!A_X<> 
オ オ<>€!<>セ€セセ太)セ「<00>2<00><00><00> 
<>ァョ<EFBDA7>"沢ミ"。7奉aq<><0F> <EFBDA7><04>vゐ<76>尼肉ミ3。'恋劣!<00><EFBFBD>Aq<><00><07>aq<>!<00>。ウ<0F>Aq<>ス?<3F><>ミ87ヨ<>7゙J,JBBB>D: <02>0, <02><02><02><02><02><02><02>:,<02><02><03>J"X<><10>5ヨ\<5C> <10>4ラl<>4ラ`スサq0<>+6<>)5メ€6<><11>7ヨP<>!ォ<10><01><10><01><10>7ヨT<><10>7ヨX<><10>7ヨ\<5C> ゥ31<10>4モl<>4モ`9<>1ミ<01><01><01><01><01><01>€~|z<03><03><03><03>セ:セウセKシFェ琥蓑オUオD溌禰蓑オUオD蓑オUオD面オ雰<EFBDB5>苳*<2A>峰朋<E5B3B0>、W
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>畑。<EFBFBD><0F>5メ|9<04>ヲB<EFBDA6>$ _<05>5ヨ€ヲチ<EFBDA6>zア<7A>q4モl9€@>㊥<><07><00><00><00><00><00><00><00><00>420.,*(&|ノ<0F>、埋<EFBDA4>X5リ<00>5レx5ヤ<00>5ヨ|!<0F>ゥ0<EFBDA9>3_ミx<EFBE90> _<05>>0_ B<> _<05>€€頤 _<05>g竟 _<05>韜_J<>_ト__<>1ムJ  JJBBB> D<06><06><06><06><06><06><06><06><06><06><06><06><06><06><06><06><06><06><06><00><06><06><06>  6 f <06><06><06> 8 *<06><06>€ €<06><06>*z
0ム]<5D><00>п2ム]ザ<>5ミx<00><11><><16>ц<>4モ[<5B><>4モY<>4モ^ 8ヲ<04><02><><>.8ザ<EFBFBD>5<><01>-$<00>#<01><01><01><04><04><05><>弔キ孫€<E5ADAB>*<2A>__ B<>_<05>05メ|ヲA<EFBDA6>:<3A>9<03>、W宙矧<E5AE99>_ヲA<EFBDA6><> ァッ<EFBDA7>
<EFBFBD>
<EFBFBD><07>ァ乗<05><08><>、Wヲg<EFBDA6><0F>弔キ孫€<E5ADAB>*<2A><08>_$" VNJF:,<01><01>xvz5メ|5ヨ€サq0ザ<30> _<05>`0_ B<>€<>_<07>!@>ヲ@<40>ヲA<EFBDA6>!@3<>!@<>_j。ゐ_<08>ルみ_蔓拈<>ヲG覈 _<05><><EFBFBD>€€f<06><06><06><06><06><06><06><06><06><06> X R <0C>J
<EFBFBD>
~&!5<>(<01>--7,/*5<>13<01>-5<>*<2A>"<22><00>4<>

D@<07> X 
<07>@><3E>、W。p<EFBDA1>鴻_jタ 0リ]<5D>_<10>0ミ]汝<00>2ミ]_6歴2ミ]<5D>ザ0ムY0ル[1ミx<00> ヲ捺、ラ、ユヲ第、ラ、ヤヲ呈、ヨ<EFBDA4>'ァ<04><06>!ヲ捺、ユ、ヨヲ<EFBE96>trpnljhfdb`^\ZXVTRPNLJ5メ€<>1二<0F>只琢<E58FAA>゚范1゚譌1゚阯1゚齬1゚<31><EFBE9F><EFBFBD><EFBFBD>€!@>ヲW<EFBDA6>_,「P<EFBDA2>__ B<>スト蓑オ匏<EFBDB5><E58C8F>ヲ蓑オ匏<EFBDB5>ェオ匏<EFBDB5>jオYオHセ<> <09><03> <0B><>1<>、W<00><00><00><00><00><00><00><00><00><01><01><01><01><01><01><01><01><01><01><01><01><01><01><01><01>50
pdecoded稽inusinf
epu_n
$1敗qrin フDlvry1Fdiv3
&Flbcd8<0E>lil92<00>cr9<00><08>ound60腎emp<00>ARG2 琶ntu0TFlcb13fFlcb21JFlC65`wpdst€Fsqr炉RemS13 彿ntnext get_cpu *Fneg<00> scinstctldd€FresflgィFldctl^Fmul24 、Dlvry53トFcpレFremstep<65>`     <0C> <0C> <0C> <0C><02><02><02><02><02><02><02><02><02><02><02><00>SEGTRAPremnod<00>ARG4 tDlvry11tFlcb23皆lcb31トunder レwillstuf<75>"scfcw廡RemS15、ldi0<:86420.,Fsub52カFsqr221pshifD1<05>etup
誑rc1Fsubdotrap
~ldd0タFmul1
ホfpepu197Fwpreg7oFlbcd39,Flbcd55Ns_or_d<00>0NTRAPS敗etup31Fsqr22`actint6Fldil FldPFlil71^stafcw8FRemS1<00>XFER_SCミfdnan resinfィroundupクRvsD5ミactadd<02>cp2<00>ARG1、actldi<02><02><02><02><02>
<EFBFBD>
x
t
0
,
(
 <0C>
 ヤfpepu567xwpop1 Bdelivery麒tsunder
<EFBFBD>eg1トFcpx~nonre3:Fcp33
<EFBFBD>eg99<00> cr6*(&$" 
<EFBFBD><00>
<EFBFBD>
,

  z<00> d0 @<00> 2<01>  |  <00>^lwpsrc曦mul30under2 トDlvry35 jDlvry51 <09>pu_s 8Fabs$round41<00>sub578Fdiv10,FlC6nonre10Fcp31臑dddst0€Fsub15ェFsub31<00>cr4lFsqr200リFlC12FlC20:cmps0XnonrestoNFlcb12VFlcb20@FlC64Lgstep2b over64@addno lmemadrsFadd 彷pepu556(setup14<01>ivn<0E><0E><0E><0E>~zv@ Fsub336addsrc0<0F>lC14 FlC22、Frf1Fsub1vnowroundワfdzun
bFlbcd20<04>gstep3 <0B>tuffmem\ZXVTRPNLJHFDB@> b ^ Z T N2^FlC70タFrf9 リFldbcd,resinv Rldnan|wpdadrsetup12vsetup20 cmpsinfニFsqr11<00>
4Flbcd10イgstep1fReSrc37
ニfpepu192\wpcntlwpreg2 €Fint<00>cr12 0over643廡lcb34<0F>Flcbo<03>sqr21 $memerr<00>staregjshiftdigミFlil54:Flil70<00>cr3nFsub14曦sub30€FRemS6メ__text__data"remno LDlvry54、Flcb90<06>etup101
jfpepu17lddjnkbFsub10BFRemS2 Ftil(wpreg4 トFint27<00>MEM_SC<0E>lil20>resprec
&epuニFRemS36PwpcregsェNoMoD1foolsrou<6F>gett J > 0 &  €~|zxvtrpnljhfdbnr14メFlil60<00>cr1
epu_xXFRemS4詣pmad<00>EPUTRAP
<EFBFBD>ddno廃lusinfXwpflgs
nfrombinFlC11ヲgstep0<00>$frm_set<00>staevnt
wpreg1
セfpepu191<EFBFBD>cr11 €Dlvry13セtoptab~Flcb25芳lcb33 麈p_epuワFsqr12<00>nr15<02>mpunor<00>cr2 0getiwordフFlC10ヲsqrnoresdstwpreg0rounfpepu10ヤunder20エFlC16cmpcasePwpfigepuwp remnz
.Flbcd9,cmpeqハFsub37クFsqr222<00><00> d<>x<>
鐸!スP<EFBDBD>"<22>3播崩琢スU<EFBDBD>"<22>3<>"ス2a<>弐琢スT<EFBDBD>"<22>3峰鐸認スP<EFBDBD>"<22>3播崩烈<E5B4A9>"<01>弐琢スP<EFBDBD>"<22>3峰鐸認スT<EFBDBD>"y55トFlil51<06>FnoopFcp11<00>cr0dFsub11從earest<00> SC0TRAP イFint21<00>ARG3.makenannFlbcd50<00>INTSIZE $Fld4 エfpepu560 Xldno<00>stapcsgxFmul25
鑚rc99Fstpェldinoжpstate「ldijnkFdiv2HFsqr26dround11ヨFcpztFlil750d_pre<00>LONGd カFint23<00>
ARG5€Fsetflg<00>cr10麝ocunder|Flcb24色lcb32曦lcb40 8over68"addinfгhifD2FlC50イFrf5レover34
龝rc2<00>getmem墨ormordireszero Fld2ネFmul2unde<64>3播崩烈ス <01>$&(&__text__data<00>ARG2<00>0NTRAPS<00>cr4<00>cr12<00>cr9gtFlcb22€Flcb30ZFlC66bFlC90<00>NMITRAP 4over66<00>(FRAMESZ<00>BDOS_SCヲFRemS30 フfpepu566<36>BIOS_SClbcd50<00>INTSIZE $Fld4 エfpepu560 Xldno<00>stapcsgxFmul25
鑚rc99SIZE<5A>cr8
ヤdst2Rs_preFlC16Xcpzcase<00>ctmul<wpreg6ヨFcpzx
レdst99Dcmpno<fdninfzwpop2Fsqr25vcplt
<EFBFBD>eg2 fFldmJresnsrc<00>cr7actdiv
リdst1ョFrf2r3<00>$scseglcpgt
`fpepu15
ヲfpepu23ーumultlTwpctrpBresndst*FldctlbカRvsD4彗ctrem舩xt<00>nr14<00>cr1<00>EPUTRAP<00>SEGTRAP<00>ARG4<00>"scfcw<00> cr6<00>MEM_SCgettext<00> scinstイsetup32<00>pserrFsqr23TFlil72rnonre2<00>
cr5|Fsqr201<00>PITRAP礑lC13,unpack
6Flbc裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹Fmul21誦nder1麈dun<0E>Flil22>actld
ヲfpepu21<00>DEBUG_SCリFRemS70<00>mulィRvsD2詈ntadjusメover31<0F>lC15
ハfpepu1952wpreg5Rdivdz コDlvry33フFdiv睦emvsdiv<69>&scpc廡lil21
XfpepFcp1^ReSrc30reminv<00> TRACETRgstep2_2FFlcb11 over636FlC63<00>PCSIZE
レFlbcd37臠step2a_stafcw<00>XFER_SC<00>ARG1stareg<00>cr3staevnt<00>cr11<00>LONGSIZE<5A>cr8<00>DEBUG_SC<53>cr0d11cmp2infwpreg30cmpd0<00>cr13 Dyankmem 灰lvry15 ョDlvry31cmpdinf DFclr€wpsadr
H裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹fFsetmodedonone<06>ouble&FlC61<08>ver61
「Flbcd35 診pepu553<07>normdigsツoversetup11 ZDlvru12ワunder22mulnoーNoMoD2@round31zsqrcaseressrc<00>putmemシFrf7瀰ver60 FlC60<00> SC0TRAP<00>ARG3<00>NMITRAP<00>(FRAMESZ<00>BDOS_SC<00>BIOS_SC<00>
cr5<00>PITRAP<00>cr13,getmem<00>$sc**********************
; ***** 8/15/84 R.F.W. *****
sect
_sysseg: .block 2 ;system segment
_usrseg: .block 2 ;user segment
_sysstk: .block 4 ;system stack pointer
_psap: .bl<62>ハ/<2F>。|<7C>]
<12>!<07><>^L<><EFBFBD>a<>ハ`<60>ネ.~$琢凧
<EFBFBD>紘鐸_<><EFBDA9>ゥ蠇ヌ鞴ス _Q<>S<>S<>_Zゥ<5A>_a<>$鐸
<EFBFBD> the value of the label LOADER false
;(0) the normal Bios code will be generated
;while setting the label to true (1) will 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹seg<00> TRACETR<00>PCSIZE<00>nr15<00>cr2<00>
ARG5<00>cr10<00>cr7<00>&scpcRputmem<00>INTSIZE*********************
; ***** 8/15/84 R.F.W. *****
ock 4 ;program status area ptr
;****************************************************
;*
;* Trap vector table
;*
;* entrv<72>工琢_<><EFBDA9><EFBFBD>_ゥ睆<EFBDA9>o<>。I 嬾<><E5ACBE>
??<3F>`
ア /<2F><00>`<60><>.臭<><E887AD>`<60><>`ォ`<60>`ア`/<2F>`.櫚<>^ _a<>a `<60>
;provide the loader Bios code.
;
LOADER .equ 1 ; 1 or 0 which ever
;
;
.input "biosdefs.8kn"
.input "biosboot.8kn"
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹stapcsg裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ies 0..31 are misc. system traps
;* entries 32..47 are system calls 0..15
;*
;***********************************************アp。{`<60> ア``<60>アPⅢス@ΧゥFウk。j`<60> アp<00>。カ甲ウs〒^ _a<>a<>M<><08>
。浴w∞av/<2F>^。浴㌔~ア`<00>。g頷ス _a
a<>
.input "biosif.8kn"
.input "biosio.8kn"
.input "biosmem.8kn"
.input "biostrap.8kn"
.input "syscall.8kn"
;********<2A>
x0<> <>F<>f<>T<>^a<>紘^T<>断^"a<>工a<E5B7A5>
<1C>_
<EFBFBD>a<><>T<><02>a<>工T<E5B7A5>咫/q。7紘<37>!8_stapcsg裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹*****
_trapvec:
.block NTRAPS*4
;****************************************************
;******************************紘`ュアPウo`<60>ア0`ゥ<10>ア*<2A>&派Q<E6B4BE>諾_<>_a<>`<60>?n<><6E><EFBFBD> ア`ゥ`n<><6E>
 <20>L<><4C><EFBFBD><EFBFBD>ミn<EFBE90><6E><EFBFBD><EFBFBD>@<40>スv^`<60>?`<60><>********************************************
;*
;* Data
;*
;****************************************************
__bss: .a<>a<>T<>L<>ノ]<5D>フスタ。<EFBE80>!^。粒p/<2F>
<EFBFBD>_<>3。粒p/<2F>。墨<07>*v<>ネ/<2F>Ja<4A>ハLh a<>ハLXa<>ハ/<2F>
<EFBFBD>_<>|<7C>v<>ネ/<2F>Ja<4A>;*********************************************
;Build the assembly modules using conditionals
;
__text: .sect
;
;by setting裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ア`吉<>a`\后`<60><>0`<60> <20>#ア@④<1F>`<60><><EFBFBD> スp鞐`<60><><EFBFBD>`<60><><EFBFBD>
<EFBFBD>
<EFBFBD>_<> <00><>スt靄スp霽ス _a<>ス殼<EFBDBD><> <> 鵠¬磑スp闔ス _
<EFBFBD>a紘鐸_<><EFBDA9>
<EFBFBD>_<>
<EFBFBD>!"工琢_<><EFBDA9>
<EFBFBD>_<>t<EFBFBD>!<07><>^aoi ~ア`<00>。g頸ス _!
€<EFBDBD>aアp^!顯ス _a<><04>
<EFBFBD>€ ~ア`/<2F>
<EFBFBD>_<> <0C><> _a<><>!F^
<EFBFBD>_n_
<EFBFBD>_n<>
<EFBFBD>(_n
<EFBFBD>>_n_^ _
<EFBFBD>
<00><00><00>
& 2BHNj
v <01><01>  ワn<EFBE9C><EFBFBD><EFBFBD><EFBFBD><E7B88B>/<2F>a<><61>
<EFBFBD>!<07><>韋a
avo a
aT
oスp靺ス _a<>a<>a<><08><>€。湊<EFBDA1> }.m。ァォ<EFBDA7>衡ⅷ^_a<>a<>スャ『。<E3808E>HVt]tPt<00>スr濶鐡a€K<00>(aC€<C280><>aC€。Y。絡h鐸只
<EFBFBD>a工琢_<><EFBDA9>ゥ蠇鄭o<00>1 €<>ス紳Mq<00><><><EFBDB3>a`~ア`スPテゥV抗ウ<E68A97>`~港`<60> アpア`㍑<1F>^ _a<>/<2F>B。y`<60> アp及<70>`<60>アp<00>^`<60> アp及<70>!€頽!€K<00>
ai ~ア`<00>。g<EFBDA1>_。y <09><><EFBFBD>。与。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『vz€<EFBDBD>a€K<00>
ai ~ア`<00>。g<EFBDA1>__<>
<EFBFBD>_<07>
<EFBFBD>!"紘鐸_<><EFBDA9>
<EFBFBD>
<EFBFBD>_<>x <00><>
<EFBFBD>_T。x剛<78>
<EFBFBD>_<07>
<EFBFBD>!紘鐸_<><EFBDA9><>!v<>t:>VZ<02><02><02><02><02>,
0Fbr<03> 廠p ?n<><6E>湊寸<E6B98A>€ \ア@ kア0<EFBDB1>4<><> アp^
墾魲L<E9ADB2> <09>$ <20>
??<3F>a`m恒アp 愕@烏アPⅣ<50> アp鞳  廠p 楹`曳?<3F>
<EFBFBD>a紘鐸_<><EFBDA9>
<EFBFBD>_<> hao<00>! €只
<EFBFBD>_<>
<EFBFBD>!"紘鐸_<><EFBDA9>
<EFBFBD>_<>絡h僕<68>剛郞スp^
Boot error.
Openス _a<>aav<06>。mL<6D> €€<C280> /<2F>錐t<E98C90>!^L<> /<2F><03>`<60> ア`<00><EFBFBD>!韵/<2F>ミ。z/<2F>日虹_<>y鵠<79>!鞜`<60> h€ アp/<2F><>。y <09><><EFBFBD>スs^。ァゥ<EFBDA7><EFBFBD>.~ゥ€ 矗スp頡ス _a<>『『ax`~ア`。ja 。オゞゞTRVR<00>,。ァ!R^<04><>⑦ⅣR<00>]\<00>] 。㎜€o
<EFBFBD>_o<>r_ <07><><EFBFBD>スs^M<00><03>MM<00>スq頤ス€<EFBDBD>/<2F>
$ <07><><EFBFBD>スs韜。〟w『]t]r€K]]<03><03>4@`lp<04><04>
<04> アp勒 アp靠ス_a<>
<EFBFBD>S<>虹_ミゥ<EFBE90><EFBDA9><EFBFBD><EFBFBD>`<60> n<><6E>
<EFBFBD> 虹S<E899B9>_、ゥ<EFBDA4><EFBDA9><EFBFBD><EFBFBD> `<60> €€n<C280>`<60><>p^_a<>スー 廠p!^ or Read error on
Bad file format on CPM.SYS<00><00><00><00>h<06>CPM SYSRゥ<52>ヤ!_`n<><EFBFBD><E8B9B2>L<><EFBFBD>]<5D><EFBFBD>]<5D>
o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>^ _
<EFBFBD>a 紘鐸_<><EFBDA9><EFBFBD>工琢_fゥ<66> _a<>a
紘V]。オゞゞ。ロ(VR]R。ア<EFBDA1><11>P<00>スr^スp顰\<00>。キ『『Tt<04><><EFBFBD>]t。カ。ウ<EFBDA1>3<EFBFBD>3T0V`]o 。㍾hV]。オゞゞ。ロ(TP]]]]]]MMMMa<00>3<EFBFBD>3a<33>rT ]0T&R]6aゞゞTRVRV]€<EFBDBD> /<2F>
ぃy鵠<EFBFBD>。苓畠€KBZt|<05><05><05><05>*t<06>゙`<60>アp/<2F>ア`賑
<EFBFBD> _<><EFBDA9><0E>4a<34>a<>
v<EFBFBD><EFBFBD>h鐸<>_<>/<2F>
<EFBFBD>
_<>!附H琢S<E790A2><53><EFBFBD>
<EFBFBD>_<>/<2F>
<EFBFBD> _<><EFBDA9>
<EFBFBD> _<>
<EFBFBD>
_
 <0B> <0B> <0B> <0B> <0B>0`|€ <00><00> ス占&。<><03>
。無a<EFBFBD><EFBFBD>。k/獷ヲ衡<EFBDA6>!<07><>^/<2F><>ウyA 肉虹a<E899B9>`ゥ<><EFBDA9><>韭ゥ尻ゥ聆!<00>鞳!_`<60>アp<00> <0F>!<07><>^`<60><00> ]P。キ『『。エTrPB<00>スr霪スp霙\<00>] 。㍾hV]<00><04><>⑦ⅣR<00>]\<00>a<><04>3<EFBFBD>3T0]。㍾hV]<00>。キ『" <06><06>(<HV`fr<07><07><07>"JLNaloc<6F>_bssloc<00>_stkloc<00>_textsiz<69>_datasiz<69>_bsssiz<00>_stksiz<00>_split<00>_seg<00>_gp<00>_mydma<00>__text_bios3@_udiv_bios5_bios28_swap_bios4"_bios1<00>_bio裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
N1
^C
l
<EFBFBD>
<EFBFBD>#
<EFBFBD>#
<EFBFBD>7
6
4

"VXZ\^`bd
.
*
ヨ裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹P==<07> <07><07>
"&4_x_hdr<00>_segsiz<00>_seglim<00>_segloc<00>_textseg<65>_dataseg<65>_bssseg<00>_stksegn_pstring棒badload<61>_startlds<00>_chainp<00>_map_adr<64>_mem_cpy<_seldskp_openfilメ_dirscan濱seqread<61>タ_gblsZ__bdosJ_tmp_sel.裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹)
)
<EFBFBD>-
<EFBFBD>-
<EFBFBD>4
<EFBFBD>4 5  * 5 *5 :6 >5 B* F: N. R. `5 f5 v4 z5 <0B>'裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<%D
L$RZb2j1rz<08><08>3<08>/<08>0543*<08>)<08>(<08>'<08>リ_ldcpmT_load ホ_readhdr
$_readxsg
<EFBFBD>loadseg h_fillbuf_bios28_swap_bios4"_bios1<00>_bio_bdos<00>csv<00>switch2<00>cretf_rdsecミ_blkindx_blknumR_do_io神new_extB_calcext<03>_get_rc;;;;;;Build cpmldr.sys;;;;;;
asz8k -o lbiosasm.o lbiosasm.8kn
zcc -c -M1 -Dloader bios.c
ld8k -o ldrbios.rel -r lbiosasm.o bi <0B>' <0B>+ <0B>+ . * ( 6 ( , , <0B>4 <0B>4 <0B>5 <0B>2 1
2 1 2 "1 81 @
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹-<08>,<08>+<08>. 7 8
9 : 7 "6 *. .5 28 :6 >5 B. F* P `3 l t2 |
リ_ldcpmT_load ホ_readhdr
$_readxsg
<EFBFBD>loadseg h_fillbuf_bios28_swap_bios4"_bios1<00>_bioネ_do_phioヲ_dir_rd、_moveミ_match<00>switch1<00>@_x_sg<00>_xfer<00>_context"_cpmfcb<00>_textloc<6F>_datos.o
;make relocatable version
ld8k -o cpmldr.rel -r ldrbios.rel ldrbdos.rel
;make a stripped version thats smaller
ld8k -s H  P1 T1 f2 n
 z € <0C>2 <0C>1 <0C> 
  裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 <09> <09> <09>
21132 <09>1 <09>1 <09>1
C

(
4#
<2
D1
J1裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹-o cpmldrs.sys cpmldr.rel -lcpm
era bootldr.a
ar8k qv bootldr.a ldrbios.rel ldrbdos.rel
ar8k qv bootldr.a lbiosasm.o bios.o
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹Function 10 = Set Track */
#define SETSEC 11 /* BIOS Function 11 = Set Sector */
#define BSETDMA 12 /* BIOS Functio裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹tm) Ver. 1.1, Copyright 1984, Digital Research Inc.";
char *serial = "XXXX-0000-654321";
/* HISTORY
**
** 830801 F. Zlot
;Use the stripped version as its much smaller.
pip c:cpmldr.sys[g0]=cpmldrs.sys
user 0
putboot cpmldr.sys a:
;;;;;;;;; THE /*=======================================================================*/
/*+------------------------------------------------裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹n 12 = Set DMA Addr */
#define WSECTOR 14 /* BIOS Function 14 = Write Sector */
XADDR physdir; /* Segmented address of;;;;;;;;;;;;;;;;;;;;;;
;Make putboot.z8k
;03/16/84 RFW
;;;;;;;;;;;;;;;;;;;;;;
asz8k -o trk.o trk.8kn
zcc -c -M1 putboot.nick (Zilog) -- written
** 840524 rfw modified includes
*/
#include "portab.h"
#include "osif.h" /* cpm.h and bdos.h rEND ;;;;;;;;;;
---------------------+*/
/*| |*/
/*| CP/M-Z8K(tm) Bootstrap Writer for the OLIVETTI M20 (Z8000) |*/
/*| |裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 dirbuf */
struct dpbs idpb; /* Disk Parameter Block */
struct bios_parm ibp; /* BIOS param block for BDOS callc
ld8k -w -i -o putboot.z8k startup.o opt1.o putboot.o trk.o -lcpm
era putboot.o
eplaces with */
#include "stdio.h" /* osif.h 03-15-84 rfw */
#include "bdos.h"
#include "xout.h"
#define CDATA ND ;;;;;;;;;;
*/
/*| Copyright 1984, Digital Research Inc. |*/
/*| |*/
/*+--------------------------------------------------裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 50*/
XADDR physibp; /* physical address of ibp structure*/
extern long map_adr(); /* Function to return physical addr */
ld8k -w -i -o putboot.z8k startup.o opt1.o putboot.o trk.o -lcpm
era putboot.o
0 /* Parameter for map_adr() */
#define DIRSEC 1 /* Parameter for BIOS Write call */
#define SETTRK 10 /* BIOS 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹-------------------+*/
/*=======================================================================*/
char *copyrt = "CP/M-Z8K(
#define BPLS 128 /* Bytes per logical sector */
#define BPS 256 /* Bytes per sector */
#define BPS0 128 /* Bytes per); j++)
*p++ = (char) getc(fin);
if( xs.x_sg_typ != X_SG_BSS && xs.x_sg_typ != X_SG_STK)
fsize += xs.x_sg_len;
}
*argv[0]);
exit(1);
}
curdsk = _ret_cdisk();
_get_dpb(map_adr((long) &idpb, CDATA)); /* Physaddr of idpb */
if( (finogical sectors in boot*/
register char *p; /* ptr to next part of code */
int track; /* Current track */
int se1 Sector 0 */
extern char T1S1[]; /* Track 1 Sector 1 */
#define HDRSIZE 24 /* # bytes in track 1 sect 1 header */
#endifrray named "syscode", preceded by a bunch of PCOS garbage
** which the Olivetti boot PROM expects to find there. Now we use d sector, trk 0 */
#define SPT 16 /* sectors per track */
#define LSPT 32 /* Logical sectors per track */
#define SYSTRKS
if (fsize > SYSSIZE) {
printf("Bootstrap too big\n");
exit(1);
}
else
printf("Bootstrap file is %ld bytes\n", fsi = fopenb(system, "r")) == NULL) {
printf("putboot: Can't open bootstrap file %s\n", system);
exit(1);
}
fsize = 0L;
ctor; /* Current sector */
physibp = map_adr( (long) &ibp, CDATA );
nlsecs = SYSTRKS * LSPT; /* size / log secs pe
struct x_hdr xh;
struct x_sg xs;
int dsknum; /* Drive number 0-15 = A-P */
main(argc,argv)
int argc;
char *argv[];irect
** BIOS calls to write the syscode array out to the proper area on disk.
** For the Olivetti, this is tracks 1 and 2, 2 /* Number of boot tracks */
#define SYSSIZE SPT*BPS*SYSTRKS /* Max size of bootstrap */
#define STARTRK 1 /* Track numbze);
p = syscode;
#ifdef OLIVETTI
for( i = 0; i < BPS; i++) *p++ = T1S0[i];
for( i = 0; i < HDRSIZE; i++) *p++ = T1S1[i];
/* read file header */
p = (char *) &xh;
for (i = 0; i < sizeof(xh); i++)
*p++ = (char) getc(fin);
/* read andr trk */
/* Pause for the user to insert disk */
/* pause(drvname); */
#ifdef OLIVETTI
/* Olivetti Track 0 Sector
{
register int i, j, c;
register char *p;
long fsize;
int curdsk; /* Good to remember, & reset*/
if(argc != 3) since track 0 is special.
*/
putboot(syscode);
printf("Bootstrap has been written.\n");
_sel_disk(curdsk); /* reselecer to start on */
FILE *fin;
char syscode[SYSSIZE]; /* Hold the entire bootstrap here! */
char *system = "CPMLDR.SYS";
#endif
while(fsize--) {
if( (c = getc(fin)) == EOF) {
printf("Unexpected EOF in %s, %ld left\n",system,fsize);
ex count segment headers to get file size */
for (i = 0; i < xh.x_nseg; i++) {
p = (char *) &xs;
for( j = 0; j < sizeof(xs0 is special */
_sel_disk(dsknum); /* select as current disk */
putblk(0, 0, T0S0);
#endif
p = code;
for(i = 0; i < nlusage();
system = *++argv;
if( (dsknum = **++argv - 'a') < 0 || dsknum > 15) {
printf("putboot: Illegal drive code %c\n",t original disk*/
}
putboot(code)
char *code;
{
register int i; /* Handy index */
register int nlsecs; /* # l/* Name of the prog to boot */
#ifdef OLIVETTI
extern char T0S0[]; /* Track 0 Sector 0 */
extern char T1S0[]; /* Track it(1);
}
*p++ = c;
}
/*
** At this point, the entire bootstrap program code and data has been loaded
** into the asecs; i++) {
track = STARTRK + i/LSPT;
sector = i%LSPT;
putblk(track, sector, p);
p += BPLS;
}
}
/*
* Functi裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹bp.p1 = DIRSEC; /* Complete write immediately */
_bios_call( physibp ); /* Do it! */
}
/*
* If the user invoked us witple protocall on the
serial port. I have also run in to a problem with the new ZCC compiler
the -D option no longer works so ;
n = sec + 1; /* sector number */
ibp.req = SETSEC; /* BIOS request number 11 */
ibp.p1 = (long) n; /* parameter = 12/19/84
The present release of CP/M-8000 you have just recieved is slightly
restructured. the bios assembly modules have bon to select a given track for writing on, on the current disk.
* Makes use of the BDOS direct BIOS call to issue Bios functio裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹h the wrong number of args...
*/
usage()
{
printf("Usage: putboot <filename> <drivecode>\n");
exit(1);
}
now the loader define must be set to 1
at the beginning of bios.c in order to produce a LOADER BIOS.
COPY.Z8K is now providsector # */
_bios_call( physibp ); /* Pass seg ibp address */
/* Sector is now set; now set dma address. */
ibp.req een setup for conditional
assembly through 2 modules their names are lbiosasm.8kn and biosasm.8kn
these have one equate which n 10.
*/
settrk(n)
int n;
{
ibp.req = SETTRK; /* BIOS request number 10 */
ibp.p1 = (long) n; /* parameter = track # 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 the wrong number of args...
*/
usage()
{
printf("Usage: putboot <filename> <drivecode>\n");
exit(1);
}
ed with the system
A new and working DDT.Z8K that portable and supports floatin point instructions
note that there is a new= BSETDMA; /* BIOS Request number 12 */
ibp.p1 = map_adr( (long) addr, CDATA);
/* param = seg address of I/O buffer */
controls the differences between the loader
specific and normal bios assembler modules. By doing these modules this
way the sy*/
_bios_call( physibp ); /* Pass seg ibp address */
}
/*
* Function to put block i of the boot track.
*/
putblk(trk裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 entry in the bios memory region table for ddt..
A new version of the C compiler which fixes numerous bugs in all programming
_bios_call( physibp ); /* Call BIOS */
/* Now can do a write */
ibp.req = WSECTOR; /* BIOS Request number 14 */
istem is reduced by 2k in size and removes the need for duplicate
files.
The bios.c module has changed little; added are sim, sec, addr)
int trk, sec;
char *addr;
{
register int n;
_sel_disk(dsknum); /* select as current disk */
settrk(trk)裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
areas.
A much faster ld8k is provided
A asz8k that supports floating point
Numerous bug fixes to the library
A
;****************************************************
;*
;* Context Switch Routine
;*
;* xfer(context)
;* long contextr CP/M-8000(tm) BIOS
;*
;* 820927 S. Savitzky (Zilog) -- created.
;* 840815 R. Weiser (DRI) -- conditional assembly
;*
__r2: 0
;* returns
;* rr6: physical addr
;*
;* space codes:
;* 0: caller data
;* 1: caller program
;* 2: system data
;* 3裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹m/User Memory Access
;*
;* _mem_cpy( source, dest, length)
;* long source, dest, length;
;* _map_adr( addr, space) -> pat a later date their will be a Segmented library provided
a newer compiler, assembler,and linker.
;
;*
;* context is the physical (long) address of:
;* r0
;* ...
;* r13
;* r14 (normal r14)
;* r15 (normal r15)
;* ignoretext: .sect
;****************************************************
;*
;* NOTE
;* The following system call interface routi: system program
;* 4: TPA data
;* 5: TPA program
;*
;* x+256 return segmented instruction address,
;* not data access ad裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ddr
;* long addr; int space;
;*
;* _map_adr( addr, -1)
;* sets user segment # from addr.
;*
;* _map_adr( addr, -2)
;* tra a later date their will be a Segmented library provided
a newer compiler, assembler,and linker.
d word
;* FCW (had better specify normal mode)
;* PC segment
;* PC offset
;*
;* The system stack pointer is not affected.
nes
;* are designed to be called from non-segmented
;* C programs.
;*
;* Addresses are passed as LONGs.
;*
;*************dress
;*
;* FFFF set user-space segment from address
;*
;****************************************************
_mem_cpy:裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹nsfer to context block at addr
;*
;* system call: mem_cpy
;* rr6: source
;* rr4: dest
;* rr2: length (0 < length <= 64K)
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹;*
;* Control never returns to the caller.
;*
;****************************************************
_xfer:
ldl rr6,ARG***************************************
.global _xfer
.global _mem_cpy
.global _map_adr
.global _bios
.global _bdos
;copy memory C subroutine
;===
ldl rr6,ARG1(r15)
ldl rr4,ARG3(r15)
ldl rr2,ARG5(r15)
sc #MEM_SC
ret
_map_adr;********** syscall.8kn cpm.sys + cpmldr.sys ********
;* Copyright 1984, Digital Research Inc.
;*
;* System Call interface fo;* returns
;* registers unchanged
;*
;* system call: map_adr
;* rr6: logical addr
;* r5: space code
;* r4: ignored
;* r裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹1(r15)
ldl rr4,#-2
subl rr2,rr2
sc #XFER_SC
ret
;****************************************************
;*
;* Syste: ;map address C subroutine
;===
ldl rr6,ARG1(r15)
ld r5, ARG3(r15)
subl rr2,rr2 ; 0 length says map
sc #MEM_SC
rFILSIZEnt sector; /* CurPCPMx01.01

tbp = map_adr( (long) &ibp, CDATA );
nlsecs = SYSTRKS * LSPT; /* size / log se裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ld r5,ARG1(r15)
ldl rr6,ARG2(r15)
sc #BDOS_SC
ret
.endif
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹et
.if LOADER
.else ; not used by Loader Bios
;****************************************************
;*
;* long _bios(ILSIZEcs per trk */
/* Pause for the user to insert disk */
/* pause(drvname); */
#ifdef OLIVETTI
/* Olivetti Track 0 Se裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>€<00><00>€((8<00>''PCOS裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹code, p1, p2)
;* long _bdos(code, p1)
;* int code;
;* long p1, p2;
;*
;* BIOS, BDOS access
;*
;**************************裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹__text__data<00>ソ<>SYSSTK<00>"rtc_ext<00>BPT<00>HDRSIZE<00>BOOTPSA<00>鏨1SIZE_T0S裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹lect original disk*/
;
{
register int i; /* Handy index */
register int nlsecs; /裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹**************************
_bios:
ld r3,ARG1(r15)
ldl rr4,ARG2(r15)
ldl rr6,ARG4(r15)
sc #BIOS_SC
ret
_bdos:
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹0<00>SYSPSA<00>SYSTEM<00>SEG2€_T1S1<00>BPS<01>1data<00>SEG4<00> NBLKS€_T1S0<00>鏨YSSIZE<00>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹* # logical sectors in boot*/
register char *p; /* ptr to next part of code */
int track; /* Current track */
i裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 ld r5,ARG1(r15)
ldl rr6,ARG2(r15)
sc #BDOS_SC
ret
.endif
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹