Files
chibi-pc09/emu/z80pack-1.9/cpmsim/disks/driveb.cpm
Amber 783d32a495 copy all local files to repo
cp/m files, sprites, circuit design
2020-05-15 09:07:45 -04:00

5141 lines
250 KiB
Plaintext
Raw 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.

裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹藉YSGEN BAKEX COME
CLS MACSURVEY MACw !"#$%&'()*+,-裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹NF EQU 15 ;DISK OPEN FUNCTION
DREADF EQU 20 ;DISK READ FUNCTION
;
MAXTRY EQU 10 ;MAXIMUM NUMBER OF RETRIES ON EACH READ/WRITE藉YSGEN SYM<08>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹RATING SYSTEM TRACKS
NDISKS EQU 4 ;NUMBER OF DISK DRIVES
SECSIZ EQU 128 ;SIZE OF EACH SECTOR
LOG2SEC EQU 3 ;LOG 2 SECSIZ
SKEEX MAC€3456789:;<XYZ[\]CLS COMBOOT Z80GSURVEY COM 裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹
CR EQU 0DH ;CARRIAGE RETURN
LF EQU 0AH ;LINE FEED
STACKSIZE EQU 16 ;SIZE OF LOCAL STACK
;
WBOOT EQU 1 ;ADDRESS OF WARM BOO裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹W EQU 6 ;SECTOR SKEW FACTOR
;
FCB EQU 005CH ;DEFAULT FCB LOCATION
FCBCR EQU FCB+32 ;CURRENT RECORD LOCATION
TPA EQU 0100H ;TEX MAC€^_`abcdefghijklmEX MACznopqrstuvwxyz{|}BIOS HEX BOOT HEX裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 .Z80
ASEG
ORG 0100H
LD C,9
LD DE,CLEAR
CALL 5
RET
CLEAR: DB 1BH,5BH,48H,1BH,5BH,32H,4AH,'$' ; clear screen UNI裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹RANSIENT PROGRAM AREA
LOADP EQU 900H ;LOAD POINT FOR SYSTEM DURING LOAD/STORE
BDOS EQU 5H ;DOS ENTRY POINT
BOOT EQU 0 ;JMP TOCPM64 COMB
SYSGEN SUBBIOS Z80hPABCDEFGHIJ蕷UTSYS BAKKxsub
b:
a:z80asm boot/h
a:z80asm bios/h
a:
ddt movcpm.com
s234
0
0
0
.
s2cb
0
0
0
.
i64 *
g
save 34 b:cpm64.co裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹X xterm
END
裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹 'BOOT' TO REBOOT SYSTEM
CONI EQU 1 ;CONSOLE INPUT FUNCTION
CONO EQU 2 ;CONSOLE OUTPUT FUNCTION
SELF EQU 14 ;SELECT DISK
OPE蕋UILDSYSBAKL藉YSGEN PRN€KL~€≠ヤ<E289A0><E383A4>葛悟SYSGEN HEX<15><>藉YSGEN PRN誌葬m
b:
a:ddt cpm64.com
iboot.hex
r900
ibios.hex
r2580
g0
a:
save 34 b:cpm64.com
; now use sysgen b:cpm64.com
<1A>'AクX(OテI艚+界ツ疳ク\. <0B>疳ク\$)イネト|<7C>@0 <09><>=園ネ~L<03><03><><EFBFBD>€<1F><01><18>'AクX<1 bテ ーハ,4
<EFBFBD>陲oエG<EFBDB4>!<21><00>5タY<>y<>
&<26>ーネe1巡チpク\. <0B>疳ク\. <0B>疳ク\$k<>Yp|悛0 <09>XmKパ<4B>?タタ5タ<03>ッf
&<26>ーネe1巡Qpク\. <0B>疳ク\. <0B>疳ク\$k<>*<2A>7]ア2<EFBDB1>"^タチ €:20FA0000C389FBC3A6FBC30BFCC30EFCC311FCC315FCC31CFCC320FCC323FCC328FCC34575
:20FA2000FCC349FCC353FCC35AFCC35EFCC319FCC34DFC73FA|ミ"2
&<26>ーネe1巡!pク\. <0B>疳ク\. <0B>疳ク\$k€]圻"2Qョ70"、t<00>$ムP 5タI\;v
&<26>ーネe1巡#TIME FOR MISSED SECTORS
; WHEN SLOW CONTROLLERS ARE INVOLVED. TRANSLATION TAKES
; PLACE ACCORDING TO THE "SKEW" FACTOR SET ABチA<EFBE81>リ)Gツ疳ク\$kサU ル雫9=<3D>@
<EFBFBD>0
4<EFBFBD> <00><01>5タH$ィ!A睚|. <0B>疳ク\. <0B>疳ク\. <0B>疳ク\$kサT :2000000001020016322100E43E00D30A78D30B79D30C7DD30F7CD310AFD30DDB0EFE00CAC9
:1800200023007615CA00FA318000390C79FE1BDA0C000E01045タqレ<71>><3E>
&<26>ーネe1巡}ク\. <0B>疳ク\. <0B>疳ク\$k安<>佞`B{ ト*A !|5タ<03>m%
&<26>00000000000065FC8DFA60E1
:20FA4000FEE5FC73FA00000000000065FC8DFA70FE04FD73FA00000000000065FC8DFA802E
:20FA6000FE23FD73FA000000  $@<40>HlカH
免D。$<24><00>OVE.
;
OST: DB NTRKS ;OPERATING SYSTEM TRACKS
SPT: DB NSECTS ;SECTORS PER TRACK (CAN BE PATCHED)
TRAN: ;BASE OF TRANSLATE 哽W墺0 ト<>$ヘGト€ <00><01>5タシウ+黛ネ|. <0B>疳ク\. <0B>疳ク\. <0B>疳ク\$k佳B<><04><>)myHノムH`C30C0006
:00000001FF
ーネe1巡チク\. <0B>疳ク\. <0B>疳ク\$kキD`<00><><06>\ユi<EFBE95>4薔ミョ X<00>5タ爆セ<18>
&<26>ーネe1巡涜ク\. <0B>疳ク\00000065FC8DFA90FE42FD01070D1319050B111703090F159D
:20FA800002080E141A060C1218040A10161A00030700F2003F00C00010000200ACFA0000E3
<EFBFBD>2.=テY+ッ2.=テ@ >2.=テY+ッテ}+><3E>テ}+:后/o:<3A><キハY+}2后2*=テY+>2<><テY+ッ2<EFBDAF><テY+><3E>2<EFBFBD><ヘト(ッ2<EFBDAF><zキツ<EFBDB7>:><3E> タ{=<3D><><04><><2<><ッgkテ4ヘト(zキツ<EFBDB7>:<3A><キネ{キハTABLE
TRELT SET 1 ;FIRST/NEXT TRAN ELEMENT
TRBASE SET 1 ;BASE FOR WRAPAROUND
REPT NSECTS ;ONCE FOR EACH SECTOR ON A TRACK
]<5D>l岬:<3A> <0C>ーニp6 f30ーニc3<0F>疳ク\. <0B>疳ク\$k<>|蛮jヲ「エRチN!<21> C€<01>QU 36 ;WBOOT+36 FOR READ FUNCTION
WRITF EQU 39 ;WBOOT+39 FOR WRITE FUNCTION
;
ORG TPA ;TRANSIENT PROGRAM AREA
JMP START
. <0B>疳ク\$kソD` (z1<7A><31>%ヲ3・dエU<EFBDB4>@Sh5タ@コQQ<51>
&<26>ーネe1巡栃ク\. <0B>疳ク\. <0B>疳ク\$k<> R
:20FAA0000000000065FC2CFBA0FE61FD0102030405060708090A0B0C0D0E0F1011121314F0
:20FAC00015161718191A1B1C1D1E1F2021222324252627282<38>+<2B>  >2.=テY+ッテ}+><3E>テ}+:后/o:<3A><キハY+}2后2*=テY+>2<><テY+ッ2<EFBDAF><テY+><3E>2<EFBFBD><ヘト(ッ2<EFBDAF><zキツ<EFBDB7>:><3E> タ{=<3D><><04><><2<><ッgkテ4ヘト(zキツ<EFBDB7>:<3A><キネ{キハDB TRELT ;GENERATE FIRST/NEXT SECTOR
TRELT SET TRELT+SKEW
IF TRELT GT NSECTS
TRBASE SET TRBASE+1
TRELT SET TRBASE
ENDIF
5タER
&<26>ーネe1巡pク\. <0B>疳ク\. <0B>疳ク\$k<>混-!楼H
<>!<21> エリ<07>5タDB 'COPYRIGHT (C) 1978, DIGITAL RESEARCH '
;
; TRANSLATE TABLE - SECTOR NUMBERS ARE TRANSLATED
; HERE TO DECREASE THE SYSGEN 92A2B2C2D2E2F303132333496
:20FAE00035363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535476
:20FB000055565758595A5B5ALID MEMORY SIZE$!$ハ。~/wセ/wハ<77>|蹊g<E8B98A>*"z砒|<0F>?ツク>@G!<21>>0w#w!<21>4~<7E>:レマ60+4ツチ~ヘu!N#Fナ! <11>xアハ, <0F>セツ#
<>ッ; GET OR PUT CP/M (RW=0 FOR READ, 1 FOR WRITE)
; DISK IS ALREADY SELECTED
;
LXI H,LOADP ;LOAD POINT IN RAM FOR CP/M DURING SD
:20FBE00016010CCD45FCC3BAFB3EC33200002103FA2201003205002106EC220600018000F5
:20FC0000CD53FCFB3A04004FC300E4DB00C9DB01C979D30C5D5E5F606162636465666768696A6B6C6D6E6F707172737455
:20FB200075767778797A7B7C7D7E7F808000040F00F707FF03FFFF0000000036344B20435E=ツ!<21>"z!w6ヘ<11>!<19>u<03>#チテ<EFBE81>眞+<11>w+wz
<EFBFBD>>ツZチ眷xニG}双|枠"|<03>! チナ:m<00> ハc テp!<21>"xアハp ~#テc<>*|<03>!:m<00> ハYSGEN
SHLD DMADDR
;
; CLEAR TRACK TO 00
MVI A,-1 ;START WITH TRACK EQUAL -1
STA TRACK
;
RWTRK: ;READ OR WRITE NEXT TRA1C979D303C9DB02C979D305C962
:20FC2000DB05C90E00C345FC21000079FE04300CD30A6F292929291133FA19C9FE08C0D388
:20FC40000A219CFAC979D
:20FB4000502F4D20566572732E20322E3220284342494F532056312E3120666F72205A3862
:20FB60003053494D2C20436F707972696768742031393838<33> xアハタテ、
SYNCRONIZATION ERROR$ {<7B>ツー縷#縊}oメシ<1A>テシ<>*zセツZ#
ツノ:m<00> ハm€! ~キツ #<><02>*€<> DM! xアハ  wCK
LXI H,TRACK
INR M ;TRACK = TRACK + 1
LDA OST ;NUMBER OF OPERATING SYSTEM TRACKS
CMP M ;= TRACK NUMBER ?
JZ ENDRW ;E30BC979D30CC9EB096E2600C979D30F78D310C9AFC360FC3E01FC
:05FC6000D30DDB0EC90D
:00000001FF
718191A1B1C1D1E1F20212223242526272822D323030362062792055646F35
:20FB8000204D756E6B290D0A00318000213BFB7EB7CA9CFB4FCD11FC23C38FFBAF3203004F
:20FBA000320400C3E9FB31#テ<>!N#F! D!_>0w#wハ1!`4~<7E>:レ60+4テ*<2A>"e@ヘu
READY FOR "SYSGEN" OR
"SAVE 33 CPM64.COM"$*|<19><00><>
テ,COPYRIGHT (C) DIGITAL RESEARCH, 1979 1]<1A><><01>?ハ<>!<13> ハ_キハ_ヨ0<EFBE96>
メr)<29>))チ O テ@|キツr}<7D>レr.g))テ・{ヘu
INVi"j=HL
;
DREAD: ;DISK READ FUNCTION
MVI C,DREADF
JMP BDOS
;
OPEN: ;FILE OPEN FUNCTION
MVI C,OPENF ! JMP BDOS
;
GETPUT:
80000E00CD28FCCD23FC062C0E0016022100E4C5D5E54ACD4990
:20FBC000FCC1C5CD53FCCD5AFCFE00C2A6FBE111800019D1C105CAE9FB147AFE1BDABAFBFCONSTRUCTING 64k CP/M vers 2.2$j<0E> ツル靉「菘ル頌ヘツ蠶鯱蒿テ倩ムテ<EFBE91>ヘ^<5E> ツB<EFBE82>R鯱ァ莽9<E88EBD>!<07>5ツら#~<7E>Yツら#"井ヘT<EFBE8D><><EFBE8D><フ<><EFBFBD>ALL (Y/N)?ヘ^貭 賚T靉ミ萍ァ鯱倅!<21>6<EFBFBD>!<21>~<7E>€<C280><EFBFBD>#~<7E>?ツ <09>
輾キノDIR ERA TYPESAVEREN USER!<10>y<><>セツO<EFBE82>#ツ<<3C><1A> ツT轌ノ#ツO<EFBE82> テ3遽2<07>1ォ<31>y<1F>_ヘ袁ク<E8A281>2ォ<32>y<EFBFBD>2<>ヘス<EFBE8D>:莵ツ!<21><00><><00><><EFBFBD><EFBFBD><00><>テY<EFBE83>add ix,<bc,de,ix,sp>..........$ラ<> ツヌ<07>Q<EFBFBD>><3E> Q<>0!<21><00><><00><><EFBFBD><EFBFBD><00><><EFBFBD><>テテ<EFBE83><1E>蜃㊦<E89C83>!<21>カ2ノ:<3A>2<>aリ<61>{ミ訐ノ:ォ<>ハ門:<3A>キ>トス<EFBE84><>ヒ萍門:サ<>=2フ<32><><EFBDAC>ツ門<07>!€€ヘB<EFBE8D>!コ<>6#5<>レ萍門:<3A>テeSwitched to Z80 processor.
$Switched to 8080 processor.
$>0テ[><>2ケ テ5ッ2ク2ケ=龝ヘV*<00>A ヘ5!蓊ツ<E8938A>魃w4!€ヘY諧<59><>ヘ御ヘツ蠶<EFBE82>テt<EFBE83>=ハ<>ヘル醢f霤 賚<><E8B39A>^貭 賚T<E8B39A><><EFBFBD>ムヘ 衞隆ッ2溿<32>&)|オハ<EFBDB5>+<2B>!€袁リ<E8A281><>衽眥隆テヤ<EFBE83><><EFBFBD><ツ<01><07>ァ倡1ォ<31>倅ヘミ衄Aヘ御>>ヘ御ヘ9<EFBE8D>€ヘリ袁ミ<E8A281>2<EFBFBD>ヘ^貽 <09>:<3A>キツ・<EFBE82>.<2E>!チ軅~#fo駢<6F>饐鬲<E9A590><><E9BD8A>!<21>"<00>!゚酖ァ膤EAD ERROR<01>テァ膀O FILEヘ^<5E>:<3A>キツ<EFBDB7>_ネ(饌dd iy,<bc,de,iy,sp>..........$ラニ@<40><~gzm゚a[) fイ<66>8<00><00>Hy伝aluop a,nn.................キトス<EFBE84>!莽ャ莽ツ衞ァ袁ン蠹らヘン袁<1A>
ヘ)<29>!腱#xキハコ蛬ヘ0蚰テォ蚰!<08>"井ノ キネキノ€!ォ<>キネ6ッヘス<EFBE8D><><EFBDAC>:<3A>テス<EFBE83>(<28>!<00>セツョ~#カハ<EFBDB6>+ヘD<>:ク<> ヘ5:ケキハヘN$<02><02>D$<05><05>Dd$<08><08>D 、 
d
$ <0B> <0B> D $<0E><0E>Dd$<11><11>D2!<00>>
xモ yモ }モ|モッモ
<0E>ハ#v<00>1€9 y<>  莽ユ蠹<EFBE95>NO SPACEヘ^貭 <09>:<3A><>T靉鱠ツy<EFBE82>!ヘ<><>ヘB<EFBE8D>*井<>O<EFBFBD>=ハ?<3F>_ツs<EFBE82>#"井ヘ^貭s<E8B2AD>G!<21>~キハY<EFBE8A>pツs麪ッ2ヘ<32>鱠ハm<EFBE8A><><><EFBFBD><EFBFBD>ヘf霤 <09>れヘァ菘 <09>!ホ<> ~<7E> ハ3<EFBE8A>#ヨ0<EFBE96>
メ 觚x赳ツ 諄€レ 諤レ 謔レ 襾
靄~<7E><09>#
ツ3閂ノ~#ツB靄!€∀Y諧ノッ2ヘ<32>:<3A>キネ=!<21>セネテス<EFBE83>:<3A>キネ=!<21>セネ:<3A>テス莽^賚T<E8B39A>!ホ<>...$ラ€>ナ:WML 綰ヲミ;サュ?<00><00><00><><EFBFBD><EFBFBD><00>Cーaluop a,<b,c,d,e,h,l,(hl),a>..$ラン<EFBE97><00>nヌマャG(ン"5タナ8K# 9<>#<>衙ヘ倅*贋~<7E> ハ"豺ハ"趺ヘ御<EFBE8D>#テ<0F>>?ヘ御ヘ倅ヘン蠹らキネ<EFBDB7> レ 貶<>=ネ<>_ネ<5F>.ネ<>:ネ<>;ネ<><ネ<>>ネノキネ<EFBDB7>テO諷oミ$ノ>!ヘ<>Y趺蟇2<E89F87>*井<>O跋"贋<>キハ画゙@d<13>Dd$<17><17>d$<1A><1A>ラ鍈,ヨO+<2B>9ウ~cモ運F8!<21><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><><EFBFBD>旺<adc,sbc> hl,<bc,de,hl,sp>.テ\酖X<E98596> COPYRIGHT (C) 1979, DIGITAL RESEARCH qヘ.*ャ<1E> 
ノ!ッq*ッ&<00>ノ!アp+q*ー<1E>2ョ<1E>FILE EXISTS<><EFBE8D>メ 訐:ホ<> ハ 賚蠹雅ヘ<E99B85>:ホ<> ツト<EFBE82>:<3A>キハ雅=2<>ヘ)袁ス菘雅<><1A> ツ 贏ヘT靦!<21>ヘ@靉ミ萍k<E8908D>!褄ヘリ<EFBE8D><><EFBE8D><01>€艟倒墺q<E5A2BA><EFBFBD> ツ剰 6?#ツ郁ユヘ鱠フ<E9B1A0><1B>:鸙訌O>
ヘK<EFBFBD>鰉{<><03>フ靉倅ナヘミ蠱ニAヘ剃>:ヘ剃テヤ靉「<E99D89>>:ヘ剃ヘ「<EFBE8D>xヘK韆<E99F86><><EFBE82><EFBFBD><>> ヘK韆<E99F86><0E>> ヘ剃x<> <00><00><00><><EFBFBD><EFBFBD>mZaluop a,<ixh,ixl,iyh,iyl>.....$ラン<EFBE97><><01>2n@ワチEn栁 8<00><00>G<1A>:ハ先:<3A>wテ匁x2<78>pヘ0賁ケ<E8B381>#<23>*ツゥ<EFBE82>6?テォ誣ツ俶ヘ0賁タ<E8B381>テッ<EFBE83>#6 ツケ<EFBE82><03>.ツ鱶ヘ0賁鱶#<23>*ツル<EFBE82>6?テロ誣ツネ賚0賁<30>テ゚<EFBE83>#6 ツ鱶#6<><EFBE82>"井<> ...$ラ ・トヌト&メP<EFBE92>鷙f<E9B799>゙ノ<EFBE9E>0!<21><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><>e<>add hl,<bc,de,hl,sp>..........$ラン ャン板[cモ3vj 哿h<E593BF>60ノ!ウp+q*_ナヘ御チノ>
ヘ剃>
テ剃> テ剃ナヘ倅痿キネ#袁御眦ャ<E79CA6>
_2鸙<ノテテ莟2溿<><EFBFBD>テテ<EFBE83>テテ<EFBE83>テテ<EFBE83><><EFBFBD>キノ<><>=ツq<EFBE82>f靉^<5E>!<21>蛬2ヘ<32>>ヘ`趁~2ン<32>2溿\!ヘ<>!ヘB<EFBE8D>!艤キハ><3E> ハ><3E>#テ0<EFBE83><11>~キハO<EFBE8A>#テC<EFBE83>2€ヘ倅ヘユ袁1ォ<31>)袁ス菘らヘf霤 <09>z<>ァ菘<EFBDA7>BAD LO鍼gnaluop a,(<ix,iy>+1)...........$SンヒFu <01><圦t=Q'8S<00><>gbit n,(<ix,iy>+1).............$ラ4Vク| ><3E>~Ⅴレ\7<00>ク:ワ<><inc,dec> (hl)................$ラ3o4ぶiムガ筈v<E7AD88>[<5B>疼ッフ<inc,dec> e...................$ラ$<15><EFBFBD>+&ヲ(<00>奓}<inc,dec> h...................$ラ"ミrwSr?鹽€<E9B9BD>-<2D>5<00><>」`季ld (nnnn),hl..................$ラ﨎ワタヨムZ侔<5A>ッァlD<6C>
?<00>_h"d<inc,dec> b...................$ラ力ォDノ阪耄<>IM*!<21>鉧コ<E989A7><inc,dec> iyl.................$ラ彅<><EFBDA8><EFBFBD>ohル<68>リK<00><>MEゥャld <bc,de>,(nnnn).............$Sヒ@<00>><3E>フzaセ<61>P$<24>?S<00><00><><EFBFBD><EFBFBD><00>{U貶bit n,<b,c,d,e,h,l,(hl),a>....$ラ愰カヌエr<EFBDB4><>タ0」<30>!<21>]ャユ'<inc,dec> sp..................$ラン4n<>(,蝿WP3o( <00>...$ラ#<00>mOツ<4F>*8珮テ!<21><00>
mJ<inc,dec> hl..................$ラン#<シ<>
<EFBFBD><EFBFBD><13> <00><>X_ラld (nnnn),sp..................$ラン"テl<EFBE83>
i<>ヨ胱テニル゚ツ <00><><EFBFBD><EFBFBD>メョ;<3B><inc,dec> bc..................$ラ 荷5 [<05>'<27><>`<00>ツФL<inc,dec> c...................$ラ*c<>0xw <20>ア彧クォ`<00><>_<>$㌫d hl,(nnnn)..................$ラ垬<01>ラWa!<>レ'<27>`<60>
<00>ィBcpd<r>........................$ラ悅HMJッk<EFBDAF>qN屠|<7C>
<00> Xp<inc,dec> (<ix,iy>+1).........$ラン$8クl1ヤニ>XΧ∇YB<00>oF6b<inc,dec> ixh..............!<21>・Mセ1<inc,dec> ix..................$ラ<>#配c<E9858D>1Zニ魎エォ<16>m!<21>*kld (nnnn),<ix,iy>.............$ラ\F-ケ支`アtウFムフ00<00><>゙9ild <bc,de,hl,sp>,nnnn.........$ラ槇コ_琇侘8ジC\ス<00>E#゙<inc,dec> d...................$ラ.4ノ(ハ
g<EFBFBD>.:程T<E7A88B><00><>zホ。ld sp,(nnnn)..................$ラン*ラ゙孖€<E5AD96>$゙<>c豊 <00><>゙ウVcpi<r>........................$ラ'A!<21> `Y・[酵<>持)<>姙ヲu<daa,cpl,scf,ccf>.............$ラン,M`tヤv<EFBE94>「2<!ヨラ・<EFBE97><00>{<7B>,<inc,dec> ixl.................$ラン$6(o<>損aヒ<61>竰s見<00>P]Q」<inc,dec> iy..................$ラ,1€ ・VC エチ<EFBDB4>゚ム<「><00>Vヘ<06><inc,dec> l...................$ラン! ス峺Sr蝪Q<> <00><>"}ユ%ld <ix,iy>,nnnn...............$ラ
ィウ*<1D>ャBニア趣!<21>ョニヤ,<inc,dec> de..................$ラ/`
L$<24><>
2%Y<00><00><>ld <ix,iy>,(nnnn).............$ラ銈<01>M┏竟ノ]ノa準?ソヌ<00><><EFBFBD><EFBFBD>d<1E>ld (nnnn),<bc,de>.............$ラ<゚Jリユ伜+寛ァCDZ0ミ<00><>、<inc,dec> a...................$ラ#ヨ-Caz€≧Z<E289A7><1E><EFBFBD>-僕<><inc,dec> iyh.................$ラン,ニラユb棧9p~>汾ル"<00><00><>ー♂5ld a,<(bc),(de)>..............$ラト暉=ム9迦UtSタ U8<00>q:ヘ《hf/rot (<ix,iy>+1)...........$ラヒ<00>J]<07><01><13>0Cxュ=?€<00><00><><EFBFBD><EFBFBD>W<EFBFBD><00>MXshf/rot <b,c,d,e,h,l,(hl),a<00><><>ldi<r> (1)....................$ラ恝ホJnツ鯵-泪<00><>G<1A> 6チム睨#<>ナユ<EFBE85>!i<00><19>キハ<G<1A>ツ8x<07>ツ66#wッ瞋チノ#...$ラ@、r$<24>ャaq酪趣?<00><00><><EFBFBD><EFBFBD><EFBFBD>tKld <bcdehla>,<bcdehla>........$ラン@ナシツ/タ<>ヘ; ?<00><><00>zLOld (<bc,de>),a................$蛬#fo~2フ#<23>Aヘー(iヘー!i6,<00>オVld <b,c,d,e,h,l,(hl),a>,nn....$ラン6Eチユヌaトスタ<EFBDBD><00><00>&ロG~ld (<ix,iy>+1),nn..........>..$ラヒ€ユ,ォ<>9KムイjS'8オ<00><00><><EFBFBD><EFBFBD><EFBFBD><><set,res> n,<bcdehl(hl)a>.....$ランヒ<01><> コセhリ2^gィ x<00><>ldi<r> (2)....................$ラ蓜「8k_4ル膰ヨメBFCZフ <>j<;スneg........................<00>ユ褫﨎<E8A4AB>1<01>矍矣ムチ<EFBE91>{<>1<><1D>ユ袿<EFBE95>褊{<7B><1D>*"<22>!<21>~贐w<11>!>ツヨ瞋チ<E79E8B>~ヘ#<><00><00><><EFBFBD><EFBFBD><EFBFBD>G競kld <bcdexya>,<bcdexya>........$ラ2h<><68><EFBFBD>DCオSコヘメOリ<00><><00> ヘ5ヘ*:ゥ<1D>vハ<76><>ンツ<EFBE9D>:ェ<1D>vト<76><><><<><11>ハリ>2ク<11> ヘ5 ヘ5!> ヘ5<1E>##ノ<>>2W2{!A"X!i"| ...$ランF`B9<> <00><>ィld <b,c,d,e>,(<ix,iy>+1)......$ランfR恙ァカI<EFBDB6><> <00>フc<EFBE8C><set,res> n,(<ix,iy>+1).......$ランp
':キ{稲刎p<00><><EFBFBD><EFBFBD>...$ラ刕ヒ窓トb<EFBE84> 轌エ@<00><>票」&<rrd,rld>.....................$ラ塚Cm<43>
<EFBFBD>S <0E><>@<00><>~ヘ#<><E79C9E><1E>ナユ褂<0F>
レ(ニ'ニ0_ヘ5瞋チ<E79E8B><EFBE81>ユ袁瞋チ<E79E8B>Z80 instruction exerciser
Undefined status bits NOT taken intoノ&-虱d a,(nnnn) / ld (nnnn),a.....$ラ愷R傅h。fチhキ <00><>簸'ildd<r> (1)................. <># ノナユ薇~<7E>ハ5<0F>>ワZO<>ツ$~<7E>ハP<0F>>ワ~O<>ツA瞋yチノ<>*XF!W~Ow<>ツs*X#"Xx。眞ネ><><00><><00>*Mld <h,l>,(<ix,iy>+1)..........$ラン~カリ゚ミ廚ヲ蝣 <00><>bjソld (<ix,iy>+1),<b,c,d,e>......$ランtdカャ頷オ<E9A0B7>f<> <00><>j<1A>1ld (<ix,iy>+1),<h,l>.......<00>%0ョ<rlca,rrca,rla,rra>...........$ランヒッン<<3C><><EFBFBD><EFBFBD>ルa 8€<00>W account
$ OK
$ ERROR **** crc expected:$ found:$
$All tests successful.
$Some failure detected.
$ナユ<EFBE85>>セツ<EFBDBE>#<>瞋...$ラ愷.<2E>*<2A>G<><00><>Z厨ヤldd<r> (2)....................$ラ恝0<>X``<60>&*|F!{~Ow<><>*|#"|x。眞ネ><><EFBFBD>6T] 擎瞋チ<E79E8B><EFBFBD>(<><1C>^{。ハニyO<>ツタ#ツソz蹂o&z<><G>€<>wノナユ<EFBE85>!A<00><19>4~<7E>・鬯dld a,(<ix,iy>+1)..............$ラン&S<@Fy<46>w<><1A><00>$閧詰d <ixh,ixl,iyh,iyl>,nn.......$ランwッgODラシPャッ_ <00>フセZ僕d (<ix,iy>+1),a..............$ラ; <>l桾チ!鄂チノ<EFBE81>ユ裹ョo&))<29>!B<19>ィFw#
瞋チ<E79E8B><EFBE81><EFBFBD>!>><3E>w#ツ4<>w0矢a,<2C> Qコmトpj<70>馗・5枦淵<>2yワク、獨<EFBDA4>淋ル<E6B78B> カL+~ア|ス邵-<11><><EFBFBD><EFBFBD><EFBFBD>"C<>{2ヨ<32>!"E<>9"<0F>1A<31>2瓊2゙<32>!t<>y<EFBFBD>)ミK!G<>^#V*C<><43>抦譿﨔<E8ADBF><12><><E285B9><EFBFBD><E89599><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>
<EFBFBD><11>,<1D>djー <20>ケqH╂A゙レヤ}mン蓁<EFBE9D>オQφ<51>l老dkィタ<EFBDA8>b<EFBFBD>各ノ<E59084>\Oclル<6C>=c<>
<EFBFBD>;n ネLi^ユ`A茲gqr<葭KヤGメ
<EFBFBD>
オk5オィⅲイ詫ロサノヨャシ<EFBFBD>2リl絋゚\uワヨ
マォム"襌ノ*襌}エノ:テ<>*襌)=ツ栓"錏:ト<>:脩。オo"襌ノ*C<> ノ*C<><19>!ノヘョ<EFBE8D>2脩<32>2碼ヘヲ<EFBE8D>:ナ<>2糴ノヘョ<EFBE8D>:ユ<>ヅ<EFBE82>O:脩『<E884A9>:碼wノ
ネ|キg}oテ<6F>€*ケ<><EFBDB9>#
<EFBFBD><>」メ<01>i<><EFBE82>W]€egヒl6qnk<06>v箇+<2B>レzZgンJフ<4A>゚o疾<6F>キセC`ー遮ヨヨ」陦ム冬8リツトO゚<4F>ムサg<EFBDBB>シWg?オンHイ6Kリ
+レッ
L6J<>z`゚`<60>ィg゚U1n趣Fiナ袁涖チテx鮱:
<EFBFBD><EFBFBD>! <0C>2
<EFBFBD><EFBFBD>!
<EFBFBD>5ツ咒テ<EFBFBD>#wナ薜ヘ涖チ~<7E>xツス<EFBE82>ケレ<EFBDB9>
テH楨<01><01><ハ瑁<ハ 弡ハ茸ヘ 愑<01>:<01>!qノ<71>Dテモ楨#<1D>djー <20>ケqH╂A゙レヤ}mン蓁<EFBE9D>オQφ<51>l老dkィタ<EFBDA8>b<EFBFBD>各ノ<E59084>\Oclル<6C>=c<>
<EFBFBD>;n ネLi^ユ`A茲gqr<葭KヤGメ
<EFBFBD>
オk5オィⅲイ詫ロサノヨャシ<EFBFBD>2リl絋゚\uワヨ
マォム<EFBFBD><17><1D>&<26>-<2D><><EFBFBD><EFBFBD><0E><><04><04><>!ハ<><EFBFBD>ノ!ユ<><EFBFBD>!碆テエ<EFBE83>!ワ<>褌テBdos Err On : $Bad Sector$Select$File R/O$袁ノ<E8A281>:B<>A2ニ<32><>モ暿ヘモ<EFBE8D>!<0E>6=Y&ル0ャQ゙:ネラQ€ソミa!エ<>Vウト#マコ蕗クス・(ク枩<05> ルイア <0B>$/o|hLチaォカf-=vワA<EFBE9C>ロq來 シ<>*qア<71>カオ涸茹雕ヤ3xノ「<00>4<EFBFBD> ィ若<0E>j
m=-租l玲cツ<63><EFBE82>
ネ)テ<05>:B<>!<04>yオoxエgノ*ュ<>:B<><EFBFBD>}<7D>ノ!ュ<>#Fヘ <0B>"ュ<>*ネ<>#<23>*ウ<>#rノヘ^<5E> ~ミ!<0F>J<EFBFBD><1E>!
<EFBFBD>J<EFBFBD>*ケ<>:鴿<>ミ$ノ*C<>~ノヘi<EFBE8D>6ノヘi<EFBE8D>€wノ*セyヒaウ絃f<E7B583>%oメ<6F>Rh<52>6フ w塀 G"ケU&/ナコ;セイス (+エZ箪ウjツラ<EFBE82>ァオミマ1,ル梛[゙ョ嫖ツー<EFBE82><EFBDB0>&uj」<6A>m<>
<EFBFBD> <>6?rg<>W柄Jやクz{ア+ョ 8辻寺袗セ
|ワ<> <>2E<32>><01>メ):ィ<1E>[ツヘア!N5!ゥ6ノテア:ェ<1E>ハ5ノ!。6<>#6>!「レー!! <0B>#V<>
w#テP<EFBE83>:B<>僴オネ^#V#"ウ<>##"オ<>##"キ<>##<23>"ミ<>!ケ<>ヘ=Y&ル0ャQ゙:ネラQ€ソミa!エ<>Vウト#マコ蕗クス・(ク枩<05> ルイア <0B>$/o|hLチaォカf-=vワA<EFBE9C>ロq來 シ<>*qア<71>カオ涸茹雕ヤ3xノ「<00>4<EFBFBD> ィ若<0E>j
m=-租l玲cキタテ 敎隯ヘ<>ヘ戦<EFBE8D><E688A6>
<EFBFBD>
<EFBFBD><><> ノ:<0E>ツE楨ネヘ <09>ツB楨 <09>ッノ2<0E>>ノ:
<EFBFBD>ツb杦ヘ#暿ナヘ 愠ナ:
<EFBFBD>愠y! <0C>ネ4<EFBE88> ミ5~キネy<EFBE88>ツy<EFBE82>5ノ<35>
タ6ノy\kkQ<6B>lab<61>0リ<30>Nl・{<7B><08><>トWeールニキ餘鏡ク<E98FA1><EFBFBD>bンレ-I胡|<7C>ヤLeMイaX:オQホ」シtヤサ0祀゚・A=リ勉、ムトmモヨ<EFBE93>Ci駛4nル<6E>g<EFBFBD>レ`クミD-s3
L_ン
<EFBFBD><EFBFBD>*ウ<><EFBDB3>#z榾ヘ<EFBE8D>r+sノ{賓z徃ノ<0E>*<2A><>*フ<>報ミナヘ<EFBE85>*ス<>*<2A> ハト<EFBE8A>ネヘ<EFBE8D>ヘ,<2C>wノヘ懴ヘ瑰ヘク<EFBE8D><EFBFBD>瑰ヘイ<EFBE8D>!ア<>胝!ケ<>#Fテ$<24>*ケ<>*ア<>€テO<EFBE83>!<21>~#セタ<ノ!<21>゚!<21>メヤ<EFBE92>磽hンウ<EFBE9D>レハ∪<>&[oーw<EFBDB0>キGw<47>Z<>jpf;ハ \銃<><E98A83>ョiak<61>lマE<EFBE8F>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サ槐Gイマ0オO<EFBDB5>*サ<>!チ<>ヘO<EFBE8D>*ニ<>!ン<>6<EFBFBD>キハ晢6><3E>キノヘ崧*オ<>#w*キ<>#wノヘ'愑サ<E68491>*弡ネ! <09>J<EFBFBD>*<2A><>"襌"<22>!襌N#F*キ<>#V*オ<>#foy度墺橆<E5A2BA>*チ<>廟z弩<7A>+テ蔡<EFBE83>*チ<>レ\kkQ<6B>lab<61>0リ<30>Nl・{<7B><08><>トWeールニキ餘鏡ク<E98FA1><EFBFBD>bンレ-I胡|<7C>ヤLeMイaX:オQホ」シtヤサ0祀゚・A=リ勉、ムトmモヨ<EFBE93>Ci駛4nル<6E>g<EFBFBD>レ`クミD-s3
L_ン
橫戦<E6A9AB>^ヘH瀨<48>Oy<4F> ツH<EFBE82> ヘH<EFBE8D>: <0C>ツ弥ノヘャ<EFBE8D> <0C> <0C>#ヘH楨ノ<E6A5A8>: <0C>! <0B> ヘH朎ケ<E69C8E>
ヘH<EFBFBD>
テH<EFBFBD>
<EFBFBD>$ネナOヘ戦チテモ<EFBE83>: <0C>2 <0B>*C<>#<23>ナ袁隯<E8A281><7F>
ハチ<EFBFBD>
ハADCOMヘf靉^<5E>:ホ<> !<21>カツ 貪ら*~2<>*<2A>#"<22>$$$ SUBテm!6<>テm!6<>テm!6 <>テm<00>2<7F>テm<>"<22>ノ*ネ<>*<2A>#"<22>ヘ報メ<19><><EFBFBD>:<3A><><05><20>2鴿キタナヘテ<EFBE8D><EFBFBD>テ橢y<E6A9A2><_Wy<0F>Ox㊦㊦<E38AA6>Ox<0F>G*ソ<> ~ツV<EFBE82>ユヘ5<EFBE8D><35>チアツd<EFBE82>ノヘ^<5E>
ネユ:ン<>ハ允<EFBE8A>鮨ス<E9AEA8>ハコツ慨ウ<E685A8>0$エ」ヲコミ6ヘラ典゙W)#ルgソウfz.トaJク]h*o+閥 セ7テ 治Z-<02><>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サ槐Gイマ0オ<0F>富憇<0F><>#テ橆眷ユ褄*ホ<>DMヘ昉*オ<>#rム*キ<>#rチy徹x哦*ミ<>ヘ0ⅣDテ!<21>!テ<>:脩キ
ツE<EFBFBD>>飽:糴
ハ\<5C>テS<EFBE83>ノ*C<> :ン<>ハq<EFBE8A>&ノ ^#V<>ヘ><3E>ヘ^<5E>ノPq<'Aェセ  <20>hオ% o<>ケfヤ ホa茵^゙<>)ルノ于ミ<E4BA8E>"ヌラィエYウ=.エ
<EFBFBD>ス\;タコlュ昤<EFBDAD> 堊ウカ<> tアメ夛ユG9旆wッロ&sワ<16>c 播;<3B>
mj>zjZィ<5A> <0B> <09><>
ョ'}<>荿キハ<EFBDB7>: <0C>2
<EFBFBD>p<EFBFBD>ツ&荿キハ<EFBDB7>~+テゥ<EFBE83>ツ7鎤袁ノ撝2 <0B><><EFBFBD>ツH鮱!
<EFBFBD>>殆眦<E6AE86><E79CA6>ツ_髜: <0B>! <0C>メ硼5ヘ、朎N<E69C8E>ツk隆ア涖テ硼<EFBE83>ツヲ鎤ヘア暿砒ナxキハ基#Nナ薇テ儒
ナN#F蠣ーハ暈*ニ<>掃儘\<5C>#チテu<EFBE83>*ニ<><>#DM*ソ<>6# xアツア<EFBE82>*ハ<>*ソ<>#rヘ。<EFBE8D>*ウ<>6#6<><EFBE8D><0E><05><>ネヘ^<5E>>蠕ハメ<EFBE8A>:A<><EFBFBD>#~ヨ$ツ<>=2E<32>ヘk<EFBE8D>佼テメrs to load
;
; we aren't using a stack, so use <sp> as scratch register
; to hold the load address increment
;
LD SP,128 ve A
OUT (DRIVE),A
;
; load the next sector
;
LSECT: LD A,B ; set track
OUT (TRACK),A
LD A,C ; set sector
OUT (SECテャ<EFBE83> 4~<7E>ハカ<EFBE8A><18><>ツャ<EFBE82>:モ<><ハカ<EFBE8A>$<24><>ハカ<EFBE8A><EFBFBD>Z<EFBFBD><EFBFBD><01><05>x<EFBFBD>>2ユ<32>><3E>2モ<32><EFBFBD>:脩!碼セレ踞<EFBE9A>€ツ顥ヘZ<EFBE8D>2脩:E<>ツ顥ヘw<EFBE8D><77>ハ顥ヘ嬉ヘム<EFBE8D><EFBFBD><EFBFBD><05>>TS EQU SIZE/128 ; # of sectors to load
;
; I/O ports
;
DRIVE EQU 10 ; fdc-port: # of drive
TRACK EQU 11 ; fdc-port: #テS<EFBE83>:<3A><>2E<32>!ヤ<>ミッwノヘ<EFBE89><EFBE8D>><3E><01>T<EFBFBD> <18><>ネヘD<EFBE8D>^<5E>6<EFBFBD>ヘk<EFBE8D><EFBFBD>-<2D><EFBFBD>Yyーハム<EFBE8A> ユナヘ5<EFBE8D><>チム*ニ<>布慥<E5B883>ナユBKヘ5<EFBE8D><>ムチテタ<EFBE83><ヘd<EFBE8D>ムノyーツタ<EFBE82>!<1E>:ヤ<><01><>:ナ<>/Gy<47>O<EFBFBD>チノ><3E>2ヤ<32>!リ<>*C<>"ル<><EFBE99><EFBFBD><EFBFBD><05><>ハ樋*ル<><1A>衞J<E8A19E><EFBE8D>メ樋ヘ^<5E>:リ<>yキハ<EFBDB7><1A>?ハ|<7C><>
ハ|<7C> ハs<EFBE8A><73>ツ-<2D>|<7C>Nヘ<07>ツ-<2D>#
; 128 bytes per sector
ADD HL,SP ; <hl> = <hl> + 128
;
INC C ; sector = sector + 1
LD A,C
CP 27 ; last sector of traTOR),A
LD A,L ; set dma address low
OUT (DMAL),A
LD A,H ; set dma adress high
OUT (DMAH),A
XOR A ; read sector
OU2ユ<32>>2モ<32>T<EFBFBD>*C<>G<EFBFBD><EFBFBD>:脩<>€<05>w<EFBFBD><77>ツn<EFBE82>><3E>2ラ<32>キハ;<3B> ヘ^<5E>Mヘセ<EFBE8D>エツH<EFBE82>><01>"襌<>*C<> :ン<>:ラ<>d<EFBFBD>d<EFBFBD>テl<EFBE83> s#r:E<>タナヘ嬉:ユ<>==ツサ<EFBE82> of track
SECTOR EQU 12 ; fdc-port: # of sector
FDCOP EQU 13 ; fdc-port: command
FDCST EQU 14 ; fdc-port: status
DMA ユ*C<> <09>^<5E>ヘO<EFBE8D><EFBFBD><EFBFBD>T<EFBFBD> <18>*C<>wヘ<77>ネヘD<EFBE8D> <01>-<2D>'<27> <18><> <01>-<2D>@<40><18><>ネヘヲ<EFBE8D><EFBDA6>ヘ^<5E>*C<> ユヘO<EFBE8D>x<EFBFBD>! N!F碵wyセ; CP/M 2.2 boot-loader for Z80-Simulator
;
; Copyright (C) 1988 by Udo Munk
;
ORG 0 ; mem base of boot
;
MSIZE EQU 64 ;ck ?
JP C,LSECT ; no, go read another
;
; end of track, increment to next track
;
LD C,1 ; sector = 1
INC B ; track T (FDCOP),A
IN A,(FDCST) ; get status of fdc
CP 0 ; read successful ?
JP Z,CONT ; yes, continue
HALT ; no, halt cpu
ナy==ツサ<EFBE82>*ケ<>w#<14><>瑰*錏"襌ナヘム<EFBE8D>ヘク<EFBE8D>*襌:ト<>・ク#ツ奚<EFBE82>"襌ヘレ<EFBE8D><EFBFBD>ナヘク<EFBE8D>:脩!碼セレメ<EFBE9A>4
ツ゚<EFBFBD>ヘi<EFBFBD>w<EFBFBD><00>:ユ<><00><EFBFBD>Z<EFBFBD>!E<>キツ<EFBDB7><EFBE82>=2脩6L EQU 15 ; dma-port: dma address low
DMAH EQU 16 ; dma-port: dma address high
;
; begin the load operation
;
COLD: xハ偶>レ偶>€*C<>wノ~#カ+タw#w+ノッ2E<32>2<EFBFBD>2<EFBFBD><1E>ヘi<EFBE8D>€<18><>ヘ^<5E> <09>*C<> :ン<>ハ頡~キツロ<EFBE82>キツ磑~セツ<1F><><EFBFBD><EFBFBD><EFBFBD>セツ<1F>#セツ<1F>
#
mem size in kbytes
;
BIAS EQU (MSIZE-20)*1024 ; offset from 20k system
CCP EQU 3400H+BIAS ; base of the ccp
BIOS EQU CCP+16= track + 1
JP LSECT ; for another group
END ; of boot loader

CONT:
; go to next sector if load is incomplete
DEC D ; sects=sects-1
JP Z,BOOT ; head for the bios
;
; more sectoテメ<EFBE83>2ユ<32>*C<>!!~<7E><EFBFBD>#~<17>O~<1F>G<>#n,-.ツ隅! w! y鳴G<E9B3B4>!x匁<EFBE8A>ユヘ「<EFBE8D>チ.:E<><ハ<>! q!pヘQ<EFBE8D>:E<><ツ<EFBE82>ナ. <>ヘ$<24>.:E<><ハ<>チLD BC,2 ; b=track 0, c=sector 2
LD D,SECTS ; d=# sectors to load
LD HL,CCP ; base transfer address
LD A,0 ; select driツヘ<EFBE82><01> <09> セレ<17> <09> ~><3E>2メ<32><10>!E<>5ノヘT<EFBE8D>*C<>!ャ<>"C<><18><><EFBFBD>"C<><43>!ッw#
ツF<EFBFBD>!
wヘ佼ヘ<E4BDBC><EFBE8D>x<EFBFBD>2メ<32><EFBFBD><EFBDA2>ネ*C<> ~<<3C>wハ<77>G:ナ<>!メ<>ハ寿00H ; base of the bios
BIOSL EQU 0300H ; length of the bios
BOOT EQU BIOS
SIZE EQU BIOS+BIOSL-CCP ; size of cp/m system
SECッテ<01>ヘi<EFBE8D>6タ眞}2E<32>x<EFBFBD><0E><03><EFBFBD><03><03><>N! ~諤^><00>~<0F>€G!~㊦㊦<E38AA6>G<EFBFBD>}盞<> <18>*C<>!蚌#r#rヘ<72> <0C>^<5E>ヘ・<EFBE8D>蘋y<E8988B>#x<>#{樛<>テ、鈊 <09> <0C><0F><13><1A><1E>!<21>&<26>C<EFBFBD>G<EFBFBD>Q<EFBFBD>X<EFBFBD>\<5C><17>K<EFBFBD><4B>c<><EFBFBD>腋s<E8858B>c<><EFBFBD><02>s<EFBFBD>c<><EFBFBD>!<21>s<EFBFBD>c<><EFBFBD>@<40>
  €ヘX<EFBE8D>:OテノロノyモノyモノロノyモノロテH<EFBE83>!y<>メ?<3F>
o))))3<><>タモ
!戌ノyモ ノyモ <> <09>o&ノyモxモノッテe<EFBE83>>
<>>テ2!<03>"2!<06>"G<1A>:ハ先:<3A>wテ匁x2<78>pヘ0賁ケ<E8B381>#<23>*ツゥ<EFBE82>6?テォ誣ツ俶ヘ0賁タ<E8B381>テッ<EFBE83>#6 ツケ<EFBE82><03>.ツ鱶ヘ0賁鱶#<23>*ツル<EFBE82>6?テロ誣ツネ賚0賁<30>テ゚<EFBE83>#6 ツ鱶#6<><EFBE82>"井<> テ拐ティ鈊
<EFBFBD><10><13><17><1E>"<22>%<25>*<2A>H<EFBFBD>L<EFBFBD>X<EFBFBD>_<EFBFBD>c<EFBFBD><1B>P<EFBFBD><50>j<><EFBFBD><E98BB9>s<EFBFBD>j<><EFBFBD> <09>s<EFBFBD>j<><EFBFBD>(<28>s<EFBFBD>j<><EFBFBD>G<EFBFBD>
  <00>+p+qヘ-<2D>蔔睨*C<> ヘ・<EFBE8D>!!q#p#wノ*ッ<>:B<><EFBFBD>褄ヘY<EFBE8D>フG<EFBE8C>リ*ッ<>Dヘ <0B>"ッ<><EFBFBD>:ヨ<>!B<>ネwテ!<21>><3E>2゙<32>*C<><43>=2ヨ<32>メu<EFBE92>:B<>2゚<32>2瓊赳wヘE<EFBE8D>:A<>*C<>wノ>" 
<00>?<>c<>,薰<>_<EFBFBD>
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST€ヘX<EFBE8D>:OテノロノyモノyモノロノyモノロテH<EFBE83>!y<>メ?<3F>
o))))3<><>タモ
!戌ノyモ ノyモ <> <09>o&ノyモxモノッテe<EFBE83>>
#~<7E>?ツ <09>
輾キノDIR ERA TYPESAVEREN USERチ!<10>y<><>セツO<EFBE82>#ツ<<3C><1A> ツT轌ノ#ツO<EFBE82> テ3遽2<07>1ォ<31>y<1F>_ヘ袁ク<E8A281>2ォ<32>y<EFBFBD>2<>ヘス<EFBE8D>:莵ツ 
<00>?<>j<>,詹<>f<EFBFBD>
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST<01>!"ュ<>"ッ<>2B<32>!€"ア<><EFBFBD>!<21>r<EFBFBD>Q<EFBFBD>Q<EFBFBD>Q<EFBFBD><EFBFBD><00><>?ハツ<EFBE8A><EFBFBD><EFBDA6>?トr<EFBE84>Q<EFBFBD><18>鴦*ル<>"C<>Q<EFBFBD>-<2D>鴦ヘQ<EFBE8D>懽テ<01>Q<EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD>r<EFBFBD>Q<EFBFBD>$<24>Q<EFBFBD><16><01>*ッUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€€<00><07><03><>64K CP/M Vers. 2.2 (CBIOS V1.1 for Z80SIM, Copyright 1988-2006 by Udo$@B <00>B<10> 辿辿 II$垂@<40>€棚 A<08>I€$"$<10><>$<10><><00>€@<40>$<24>$I! 辿!9"j1オ
 *** System Survey (June 82) ***
<EFBFBD>!<00>メP<02>
Drive<76>>AЮヘ"
:<3A>砒\o`<60> }キツ<EFBDB7>*.<~2r##n&"UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€€<00><07><03><>64K CP/M Vers. 2.2 (CBIOS V1.1 for Z80SIM, Copyright 1988-2006 by Udoキトス<EFBE84>!莽ャ莽ツ衞ァ袁ン蠹らヘン袁<1A>
ヘ)<29>!腱#xキハコ蛬ヘ0蚰テォ蚰!<08>"井ノ キネキノ€!ォ<>キネ6ッヘス<EFBE8D><><EFBDAC>:<3A>テス<EFBE83>(<28>!<00>セツ<EFBDBE>)<29>:B<><01>"ア<><EFBFBD>*ソ<>)<29>*ュ<>)<29>Q<EFBFBD>;<3B><01>*サ<>"E<>:ヨ<><EFBE96>ツ;<3B>:A<><01>2A<32>ヘQ<EFBE8D>肉ヘQ<EFBE8D>戈ヘQ<EFBE8D><EFBFBD>*C<>/_|/*ッ<>W}」_*ュ<>"ッ<>」o|「g"ュ<>:゙<>ハ茸*C<>6xsub
b:
a:z80asm boot/h
a:z80asm bios/h
a:
ddt movcpm.com
s234
0
0
0
.
s2cb
0
0
0
.
i64 *
g
save 33 b:cpm64.co:瓊キハ茸w:゚<>2ヨ<32>E<EFBFBD>*<0F>*E<>DノヘQ<EFBE8D>>2ユ<32><07><03><>€s テケ>?2J##~2r###~#fo"s#|キg}oツ、E:s<05>ハケ<04>~メナ
ツタ#ツスヘ'袁ン
K bytes in<69>J!<00><>㊦㊦<E38AA6>€_<1A><> Munk)
1€!;隝<1A>ハ檢Oヘ<13>#テ埴ッ22<>1€ヘ*<2A>%<25>,!菁ユ蕭ヘL<EFBE8D>ナヘX<EFBE8D>_<EFBFBD>ツィ鎤€ムチ<>z<>レシ<EFBE9A> ヘH<EFBE8D><EFBFBD>>テ2!<03>"2!<06>"<>#<>衙ヘ倅*贋~<7E> ハ"豺ハ"趺ヘ御<EFBE8D>#テ<0F>>?ヘ御ヘ倅ヘン蠹らキネ<EFBDB7> レ 貶<>=ネ<>_ネ<5F>.ネ<>:ネ<>;ネ<><ネ<>>ネノキネ<EFBDB7>テO諷oミ$ノ>!ヘ<>Y趺蟇2<E89F87>*井<>O跋"贋<>キハ画゙@:瓊キハ茸w:゚<>2ヨ<32>E<EFBFBD>*<0F>*E<>DノヘQ<EFBE8D>>2ユ<32><07><03><>€. <09><08>  8 m^<00>am
b:
a:ddt cpm64.com
iboot.hex
r900
ibios.hex
r2580
g0
a:
save 33 b:cpm64.com
; now use sysgen b:cpm64.com
#J<>ヘン
 files with<74>*s<05>ヘ'<05>|/g}/o#ヘン
K bytes remaining
<EFBFBD>$-ツ<

Memory map:
0 8 16 24 32 40 48 56 64
expcrc <0ffh,082h,03eh,077h>,<095h,05bh,0a3h,026h>,<0,0,0,0> ; expected crc
tmsg '<rrd,rld>'
; <rlca,rrca,rla,rra> (6144 cyask ; flag mask
tstr <0edh,044h>,038a2h,05f6bh,0d934h,057e4h,0d2d6h,04642h,043h,05ah,009cch
tstr 0,0,0,0,0,0,0,0d7h,-1,0
;
;24/Jun/80 - Removed MACLIB statement, included required macros
; in source. Bruce R. Ratoff
;
.Z80
ASEG+|オツ€!<1E>zG2<47><00><>ハコクハコz跼サハュ

額跼_zユ袁}瞋#ヘ
<05><>

艦ン
 Ports active
<EFBFBD>*j<05>ナユ<EFBE85><01><11><> <>
<09>オト<EFBDB5>{ニ0__ヘ equate
; Bill Bolton - Software Tools, Australia
;
;01/Jun/82 - Tidied up and fixed port display, added display
; of
| | | | | | | | |
ヤ!l6<>#6#6<>!?ッ2p2q~G/w朴ツヘ<02>!l4ツノ#4眦<34>2p><3E><EFBFBD>:qァハ<EFBDA7><>2q<05>!n4ツ<34>#4<>#ッイウツカ<>:pァツ#%;***************************************;
; ;
; S U R V E Y ;
; ;
;***************************************;
; (16,384 cycles)
tstr 0,0,0,0,0,0,0,0,0,0 ; (1 cycle)
expcrc <0d6h,038h,0ddh,06ah>,<06ah,03ch,03bh,0bdh>,<0,0,0,0> ; expe
;*******************************;
; SYSTEM MACROS ;
;*******************************;
;Increments 16 bit memory loc瞋チノヘ<EFBE89>ノ耻~W<>_袗ヘ"<>#>€<C280> ム翹:r<05>ツ3k&<>ツ@{<0F>oテ0G<>)ツD???????????<>{ニ0__ヘcontents of low memory. David Bennett - Alfred
; Hospital, Australia
;
;29/Jun/80 - Added version number test and calcula:シレ
ヤテ5:シレ
テテ5
ツテ5:qァハ1
メテ5
<05>
ツャ

T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at<61><EFBFBD><03>;By Michael Friese 9/22/79
;* Lists Kbytes used and remaining plus number of files
; on all logged disks (up to 8)
;* cted crc
tmsg 'neg'
; <rld,rrd> (7168 cycles)
rld: db flgmask ; flag mask
tstr <0edh,067h>,091cbh,0c48bh,0fa62h,msbt,0eation X
INXI MACRO X
LOCAL JUST8
PUSH HL
LD HL,X
INC (HL)
JP NZ,JUST8
INC HL
INC (HL)
JUST8: POP HL
,msbt,2,014h,02dh,0a39fh
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,-1,0,0,0,0,0,0d7h,0,0 ; (22 cycles)
expcrctions for CP/M
; version 2 compatibility. This program should now work
; properly on all versions 1.4 and later. BRR
<><03><>'ホ@'_:ヘ}:ヘ}
 iobyte<74>:ヘ}
 drive<76>:ヘ}
 BDOS at<61>:ヘ}:ヘ}

<EFBFBD>*l袁ン
 Bytes RAM <09>*n袁ン
 Prints Memory map and synopsis of all machine memory
;* Lists all active I/O Ports
;* Uses disk allocation block for all 720h,0b479h,040h,006h,08ae2h
tstr <0,8>,0ffh,0,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,-1,0 ; (14 cycles)
ENDM
;..............................................................
;
; SAVE MACRO SAVE SPECIFIED REGISTERS
;
; SA <0e9h,0eah,0d0h,0aeh>,<0ebh,059h,089h,01bh>,<0,0,0,0> ; expected crc
tmsg 'ldi<r> (2)'
; neg (16,384 cycles)
neg: db flgm;
;28/Jun/80 - Added IMS400 equate (prevents Industrial Micro Systems
; controller from hanging up during port scan). BRR
Bytes ROM <09>*ヘン
 Bytes in TPA
<EFBFBD><19>|/g}/oヘン
 Bytes Empty 蚊ヘン
 Total Active Bytes
€*j<05>Active I/O portsコ!disk calculations
;
;VERSION LIST - Most recent version first.
;
;06/Jul/82 - Added Godbout DISK 1 equate and added SKIPVE R1,R2,R3,R4
;
; R1-R4 MAY BE B,D,H OR PSW SAVED IN ORDER SPECIFIED
; IF REGS ARE OMITTED SAVE B,D AND H
;
SAVE MA,H
OR L ;;TEST FOR ZERO
CALL NZ,@DECOUT ;;RECURSIVE CALL
LD A,E
ADD A,'0' ;;CONVERT FROM BCD TO HEX
LD E,A ;;CONVERT A POSITIVE INTEGER TO DECIMAL AND OUTPUT
; TO THE CONSOLE.
;
; DECOUT ADDR
;
; IF ADDR OMITTED, NUMBER ASSU*******************;
TRUE EQU -1
FALSE EQU NOT TRUE
TARBEL EQU FALSE ; Tarbell FDC dmb 31-may-82
IMS400 EQU FALSE ;2>,<R3>,<R4>>
IF NUL R
EXITM
ENDIF
POP R
ENDM
ELSE
POP HL
POP DE
POP BC
ENDIF
ENDM
;
;..RCA
RRCA
RRCA
RRCA ;;SHIFT RIGHT 4
CALL OUTCHR
RESTORE PSW
OUTCHR: AND 0FH ;;MASK 4 BITS
ADD A,90H ACRO R1,R2,R3,R4
IF NOT NUL R1&R2&R3&R4
IRP R,<<R1>,<R2>,<R3>,<R4>>
IF NUL R
EXITM
ENDIF
PUSH R
ENDM
ELSTO E FOR OUTPUT
CHAROUT ;;CONSOLE OUTPUT
RESTORE ;;POP STACK
RET
ENDDEC:
DECOUT MACRO ?ADDR
IF NOT NUL ?ADMED TO BE IN HL, ELSE LOADED TO HL
; LEADING ZEROS SUPRESSED. MAXIMUM NUMBER 65,767
;
DECOUT MACRO ADDR
LOCAL ENDDEC,D Industrial Micro Systems FDC
GODBOUT EQU FALSE ; Godbout Disk 1 FDC
SKIP EQU TARBEL OR IMS400 OR GODBOUT ; Will be true............................................................
;
; CHAROUT MACRO CONSOLE OUTPUT FROM A
;
; CHAROUT ADDR
;;ADD OFFSET
DAA ;;DEC ADJUST
ADC A,40H ;;ADD OFFSET
DAA ;;DEC ADJUST
LD E,A ;;TO E FOR OUTPUT
LD C,coE
PUSH BC
PUSH DE
PUSH HL
ENDIF
ENDM
;
; . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;
; RDR
LD HL,(?ADDR)
ENDIF
CALL @DECOUT ;;CALL THE SUBROUTINE
ENDM
DECOUT ADDR
ENDM
;
;
;...............X
JP ENDDEC
@DECOUT:
SAVE ;;PUSH STACK
LD BC,-10 ;;RADIX FOR CONVERSION
LD DE,-1 ;;THIS BECOMES NO DIVIDED BY
; if any skip needed
IF TARBEL
TARBAS EQU 0F8H ; Base of Tarbell
SKIPORT EQU TARBAS+4 ; Port # to skip if Tarbe;
CHAROUT MACRO ADDR
IF NOT NUL ADDR
LD A,(ADDR)
ENDIF
LD C,consoleOutputCmd ;;CONOUT
LD E,A ;;CHAR TO E
CnsoleOutputCmd ;;CONOUT
JP BDOS ;;CALL BDOS
HEXEND:
HEXOUT MACRO ?ADDR
IF NOT NUL ?ADDR
LD A,(?ADDR)
ENDIF
ESTORE MACRO RESTORE REGISTERS (INVERSE OF SAVE)
;
; RESTORE R1,R2,R3,R4
;
; R1-R4 MAY BE B,D,H OR PSW RESTORED IN OR...............................................
;
; HEXOUT MACRO CONVERT BINARY NO AND OUTPUT TO CONSOLE
;
; HEXOUT ADDRRADIX
DX: ADD HL,BC ;;SUBTRACT 10
INC DE
JP C,DX
LD BC,10
ADD HL,BC ;;ADD RADIX BACK IN ONCE
EX DE,HL
LD ll FDC
ENDIF
IF IMS400
SKIPORT EQU 08FH ; Port # to skip if IMS FDC
ENDIF
IF GODBOUT
GODBAS EQU 0C0H ; Base ALL BDOS ;;CALL BDOS
ENDM
;
;
;.............................................................
;
; DECOUT MACRO
CALL HEXPRN
ENDM
HEXOUT ADDR
ENDM
;
;
;*******************************;
; SYSTEM EQUATES ;
;************DER SPECIFIED
; IF REGS OMITTED RESTORE H,D AND B
;
RESTORE MACRO R1,R2,R3,R4
IF NOT NUL R1&R2&R3&R4
IRP R,<<R1>,<R
;
; NUMBER ASSUMED IN A IF NO ARGUMENT
;
HEXOUT MACRO ADDR
LOCAL OUTCHR,HEXEND
JP HEXEND
HEXPRN: SAVE PSW
Rof Godbout FDC
SKIPORT EQU GODBAS+1 ; Port # to skip if Disk 1 FDC
ENDIF
BDOS EQU 5 ; jump to BDOS
BIOS EQU 0 ; jo if version 1
OR A
JP NZ,V2X ; otherwise, use 2.x style params
LD HL,(BDOS+1) ; get vers 1 style params
LD L,3CH
E
DB 'Drive'
DB ' '+EOL
LD A,'A' ; Get ASCII bias
ADD A,H ; Add to drive #
LD E,A ; Print drive letter
CALLlocated
INC DE ; Inc group counter
NOBIT: DEC C ; Dec bit counter
JP NZ,NXBIT
INC HL ; Index next byte
DEC B
*****************;
;
ORG 100H
;
START: LD HL,0 ; Save stack pointer
ADD HL,SP
LD (OLDSP),HL
LD SP,FINIS+64
L ; (double precision)
LD H,(HL)
LD L,A
LD (MAXALL),HL
INC HL
LD B,3 ; map size is (MAXALL+1)/8
V2SH: LD A,H
ump to BIOS dmb 1-jun-82
CRLF EQU 0A0DH ; CR LF sequence
CRLFE EQU 8A0DH ; CR LF with EOL
EOL EQU 80H ; End of line
T
LD A,(HL) ; get block shift factor
LD (BLKSHF),A
INC HL
INC HL
LD L,(HL) ; get max. block number
LD H,0
LD TCHR
CALL TYPE ; and colon
DB ':',' '+EOL
POP HL ; Restore drive #
PUSH HL
;Print K already allocated
LD E,H JP NZ,NXBYTE
CALL SHF16
PUSH HL
CALL BINDEC
CALL TYPE
DB 'K bytes in',' '+EOL
;Print number of files
LD DE, CALL TYPE ; Type initial CRLF
DB TAB,TAB,'*** System Survey (June 82) ***'
DW CRLF,CRLFE
;DISK SURVEY
LD HL,8 ; In
OR A ; do 16 bit right shift
RRA
LD H,A
LD A,L
RRA
LD L,A
DEC B ; 3 times
JP NZ,V2SH
LD B,L
LDAB EQU 'I'-40H ; Tab character
ESC EQU 1BH ; Escape character
TABS EQU 9 ; Tab columns
consoleOutputCmd EQU 02h
re (MAXALL),HL
LD B,32 ; assume 32 bytes in block map
JP GETALC ; continue
V2X: LD A,'?' ; Use wild user #
LD (FCB),
LD C,selectDiskCmd ; Log drive
CALL BDOS
LD C,getADDRALLOCCmd ; Index allocation vect
CALL BDOS
LD L,A ; Put inFCB ; Fake file cont block
LD C,searchForFirstCmd ; Search for 1st file
CALL BDOS
LD HL,0 ; File counter
LOOK: CP 2it drive counter
LD C,returnLoginVectorCmd ; Get login vector
PUSH HL
CALL BDOS
POP HL
ROTBIT: RRA ; RAR login A,(MAXALL) ; allow for leftover bits if any
AND 3
JP Z,GETALC
INC B
GETALC: POP HL
LD DE,0 ; Init group counterturnVersionNumberCmd EQU 0Ch
selectDiskCmd EQU 0Eh
searchForFirstCmd EQU 11h
searchForNextCmd EQU 12h
returnLoginVectorA ; in filename search
LD C,getADDRDiskParmsCmd ; Get 2.x parameter block
CALL BDOS
INC HL
INC HL
LD A,(HL) ; G decent regs
LD H,B
PUSH HL ; save for later
LD C,returnVersionNumberCmd ; get version #
CALL BDOS
LD A,L ; zer55 ; Failure
JP Z,PFILE
ADD A,A ; File offset times 2
ADD A,A ; 4
ADD A,A ; 8
ADD A,A ; 16
ADD A,A ; 32bit to C
JP NC,NOTLOG ; Drive not logged
PUSH AF ; Save login
PUSH HL ; and counter
;Print drive letter
CALL TYP
NXBYTE: LD C,8 ; Bit counter for byte
LD A,(HL) ; Get map byte
NXBIT: RRA ; Rotate to C
JP NC,NOBIT ; No group alCmd EQU 18h
getADDRALLOCCmd EQU 1Bh
getADDRDiskParmsCmd EQU 1Fh
;***********************;
; MAIN PROGRAM ;
;******et and save ablock shift factor
LD (BLKSHF),A
INC HL
INC HL
INC HL
LD A,(HL) ; Get maximum block number
INC H
ADD A,80H ; Make sure it's not a deleted file
LD E,A
LD D,0
LD A,(DE)
CP 0E5H
JP Z,LOOK1
INC HL ; Bump B (HL) ; Check for good write
LD (HL),B ; Restore orignl data
JP NZ,NOTMEM ; Wasn't good write
INXI RAM ; Bump memor
DB ' ' ; dmb 31-May-82
DB 'T'+EOL
LD HL,RAM
LD (HL),LOW 1023 ; Init RAM counter
INC HL
LD (HL),HIGH 1023
LD
NOMEM: CALL TYPE
DB ' '+EOL
NEXTK: POP HL
POP BC
DEC C ; Decrement K counter
JP NZ,BEGANA
CALL TYPE
DW CRsubtract
CALL BINDEC ; K remaining
CALL TYPE
DB 'K bytes remaining'
DW CRLFE
;Set up to print next drive
POP HP NZ,NOTRAM ; No
DEC H ; drop H to make compares right
LD A,(BDOS+2) ; Is it under BDOS ?
CP H
JP C,NOTTPA ; No
file counter
LOOK1: LD DE,FCB ; Restore FCB
LD C,searchForNextCmd ; Look for addtl files
PUSH HL ; Save file counter
y counter
JP NEXT ; To next byte
NOTMEM: LD (RAMF),A ; Not considered RAM
LD A,0FFH ; Is it empty space?
SUB B
J B,4 ; Clear ROM, EMP
CLREG: INC HL
LD (HL),0
DEC B
JP NZ,CLREG
LD HL,1024 ; Init memory pointer
LD C,63 ; KLF
DB 'T=TPA',TAB,'C=CPM',TAB,'B=BIOS or unassigned'
DB TAB,'R=ROM or bad'
DW CRLFE
;
; contents of first page
CL ; Restore bit counter
POP AF ; and bitmap byte
NOTLOG: INC H ; Bump drive counter
DEC L ; Dec bit counter
JP NZ CALL TYPE ; Yes, it's TPA
DB 'T'+EOL
JP NEXTK
NOTTPA: LD A,(bios+2) ; is it under bios ?
CP H
JP C,NBDOS
CALL
CALL BDOS
POP HL
JP LOOK
PFILE: CALL BINDEC ; Print # of files
CALL TYPE
DB ' files with',' '+EOL
;Print K reP NZ,NOTEMP ; Inc ROM, set flag
LD A,(EMPF) ; Any non empty space
AND A ; before here?
JP Z,NEXT
JP NOTEM ; To ne to be checked
;Start of analysis loop
BEGANA: LD DE,1024 ; Byte counter
XOR A ; Clear flag bytes
LD (RAMF),A
LD ALL type
DB 'BIOS at',' '+EOL
HEXOUT BIOS+2
HEXOUT BIOS+1
CALL TYPE
DB TAB,'iobyte',' '+EOL
HEXOUT BIOS+3
C,ROTBIT
;MEMORY SURVEY
;Create header
MSURV: CALL TYPE
DW CRLF
DB 'Memory map:'
DW CRLF
DB '0',TAB,'8',TAB,'16 type ; yes, it's BDOS
DB 'C'+eol
JP nextk
nbdos: CALL TYPE ; Assume it's BIOS
DB 'B'+EOL
JP NEXTK
;
NOTRAM:maining
LD HL,(MAXALL) ; Get number of blocks
EX DE,HL
INC DE ; Inc for actual value
CALL SHF16
EX DE,HL
POP xt byte
NOTEMP: LD (EMPF),A ; Set no empty flag
NOTEM: INXI ROM
NEXT: INC HL ; Index next byte
DEC DE ; Decrement K c(EMPF),A
ANALP: LD A,(HL) ; Get test byte and
LD B,A ; store for later
CPL
LD (HL),A ; Put invertd tst byte
SUALL TYPE
DB TAB,'drive',' '+EOL
HEXOUT BIOS+4
CALL TYPE
DB TAB,'BDOS at',' '+EOL
HEXOUT BDOS+2
HEXOUT BDOS+1
',TAB,'24',TAB,'32'
DB TAB,'40',TAB,'48',TAB,'56',TAB,'64'
DW CRLF
REPT 8
DB '|',TAB
ENDM
DB '|'
DW CRLF
LD A,(EMPF) ; Is it empty?
AND A
JP Z,NOMEM ; Yes, no memory
CALL TYPE ; No, must be ROM
DB 'R'+EOL
JP NEXTK
HL
LD A,H ; Ones comp & move
CPL
LD H,A
LD A,L
CPL
LD L,A
INC HL ; Twos complement
ADD HL,DE ; and ounter
XOR A
OR D
OR E
JP NZ,ANALP ; K counter not 0
PUSH BC
PUSH HL
LD A,(RAMF) ; Is it RAM?
AND A
J
CALL TYPE
DW CRLF,CRLFE
;
;MEMORY SYNOPSIS
LD HL,(RAM)
PUSH HL ; Save RAM
CALL BINDEC ; Type RAM
CALL TYPOCRLF: LD A,D ; Get port #
PUSH DE
PUSH HL
HEXOUT
POP HL
POP DE
INC HL ; count another one found
CALL typ
IF SKIP ; Single port mask
CP SKIPORT
JP Z,ISPORT ; Print mask port
ENDIF
LD B,A ; save port #
LD (INPORTives block size)
CP 3 ; Is it 1K (std)?
JP NZ,NOT3
LD L,E ; Yes, use present #
ZH: LD H,0
RET
;
NOT3: CP 2 ',TAB+EOL
POP HL ; Restore RAM+ROM
CALL BINDEC
CALL TYPE
DB ' Total Active Bytes'
DW CRLF,CRLF
DB EOL
LD H; Get type data
LD D,A ; Save for later
AND 7FH ; Mask ASCII
LD E,A
PUSH HL
PUSH DE
CALL TCHR
POP DE
PE
DB ' Bytes RAM',TAB,TAB+EOL
LD HL,(ROM)
PUSH HL
CALL BINDEC ; Type ROM
CALL TYPE
DB ' Bytes ROM',TAB,TAB+EOe
DB ' '+eol
NEXTPT: INC D ; Bump port counter
JP NZ,PORTLP ; Not done
CALL TYPE ; Done
DW CRLFE
CALL BINDEC
+1),A
INPORT: IN A,(0) ; Modifiable code
; by trial and error, inactive port could return FF or echo port #
CP 0FFH
J ; Is it minifloppy?
JP NZ,NOT2
LD A,E ; Yes, divide by 2
RRCA
AND 7FH
LD L,A
JP ZH
NOT2: SUB 3 ; Must beL,(OLDSP) ; UM: don't test I/O ports on Z80SIM
LD SP,HL
RET
;PORT SURVEY
DB 'Active I/O ports',':'+EOL
LD HL,1000H ; OP HL
INC HL
LD A,EOL ; End of line bit
AND D
JP P,TYPELP ; Not done
POP DE
EX (SP),HL ; Get return addressL
LD HL,(BDOS+1)
CALL BINDEC
CALL TYPE
DB ' Bytes in TPA'
DW CRLFE
POP DE ; Get RAM
POP HL ; Get RAM
A
CALL TYPE ; Type Active Ports
DB ' Ports active'
DW CRLFE
CCP: LD HL,(OLDSP)
LD SP,HL
RET
;*************P Z,NEXTPT
CP B
JP Z,NEXTPT
ISPORT: LD A,D ; got a live one, probably
AND 0f0h ; is port in same group as last ?
something
LD B,A ; larger like double
EX DE,HL ; sided or double dens
BITSHF: ADD HL,HL ; 16 bit 2^(B-1)
DEC B
DELAY SO MESSAGE OUTPUT
PDLY: DEC HL ; DOESN'T GIVE A FALSE READING
LD A,H ; ON CONSOLE STATUS PORT
OR L
JP NZ,PDLY
RET
;Types a single character on console
TCHR: LD C,consoleOutputCmd
JP BDOS
;Checks sectors per block and mDD HL,DE ; Add 'em
PUSH HL ; and save result
LD DE,0 ; Subtract from this
LD A,H ; Complement 16 bits
CPL
LD**********;
; SUBROUTINES ;
;***********************;
;Binary to decimal conversion
BINDEC: DECOUT ; From LIB
RET
CP E
JP Z,NOCRLF
CALL type ; no, start a new line
DW crlfe
LD A,D ; save for next time
AND 0f0h
LD E,A
N JP NZ,BITSHF
RET
;***********************;
; DATA STORAGE ;
;***********************;
FCB: DB 0,'???????????',0,
LD HL,0 ; Init active port counter
LD D,0 ; Init port counter
LD E,0ffh ; init port group variable
PORTLP: LD A,Dultiplies or divides block size
;Enter with data in D. Result returned in H,L
;
SHF16: LD A,(BLKSHF) ; Get shift factor (g H,A
LD A,L
CPL
LD L,A ; 2s comp bias in D
ADD HL,DE ; Subtract
CALL BINDEC
CALL TYPE
DB ' Bytes Empty
;Types a string of text terminated with bit 7 high
TYPE: EX (SP),HL ; Get string address
PUSH DE
TYPELP: LD A,(HL) 0,0 ; File control block
DS 17 ; Extra FCB workspace
OLDSP: DS 2 ; Old stack pointer
RAM: DS 2 ; RAM counter
ROM:rs 9,10,11,12
DEFB 21,2,8,14 ;sectors 13,14,15,16
DEFB 20,26,6,12 ;sectors 17,18,19,20
DEFB 18,24,4,10 ;sectors 21,22,23,24
0000H
DEFW DIRBF,DPBLK
DEFW CHK00,ALL00
; disk parameter header for disk 01
DEFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DP block for harddisk
;
HDBLK: DEFW 128 ;sectors per track
DEFB 4 ;block shift factor
DEFB 15 ;block mask
DEFB cter out
JP LIST ;list character out
JP PUNCH ;punch character out
JP READER ;reader character out
JP HOME ;move head toHDTRA: DEFB 1,2,3,4,5,6,7,8,9,10
DEFB 11,12,13,14,15,16,17,18,19,20
DEFB 21,22,23,24,25,26,27,28,29,30
DEFB 31,32,33,34,35,36 DS 2 ; ROM counter
RAMF: DS 1 ; RAM good flag
EMPF: DS 1 ; Empty so far flag
BLKSHF: DS 1 ; block shift factor
DEFB 16,22 ;sectors 25,26
;
; disk parameter block, common to all IBM 8" disks
;
DPBLK: DEFW 26 ;sectors per track
DEFB 3 ;BLK
DEFW CHK01,ALL01
; disk parameter header for disk 02
DEFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK02,ALL00 ;extent mask
DEFW 2039 ;disk size-1
DEFW 1023 ;directory max
DEFB 255 ;alloc 0
DEFB 255 ;alloc 1
DEFW home position
JP SELDSK ;select disk
JP SETTRK ;set track number
JP SETSEC ;set sector number
JP SETDMA ;set dma addres,37,38,39,40
DEFB 41,42,43,44,45,46,47,48,49,50
DEFB 51,52,53,54,55,56,57,58,59,60
DEFB 61,62,63,64,65,66,67,68,69,70
DEFB 7MAXALL: DS 2 ; maximum block number
FINIS EQU $ ; End of program
END
block shift factor
DEFB 7 ;block mask
DEFB 0 ;extent mask
DEFW 242 ;disk size-1
DEFW 63 ;directory max
DEFB 192 ;alloc2
; disk parameter header for disk 03
DEFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK03,ALL03
;
; sector transla 0 ;check size
DEFW 0 ;track offset
;
; signon message
;
SIGNON: DEFM '64K CP/M Vers. 2.2 (CBIOS V1.1 for Z80SIM, '
DEFM s
JP READ ;read disk
JP WRITE ;write disk
JP LISTST ;return list status
JP SECTRAN ;sector translate
;
; fixed data tabl1,72,73,74,75,76,77,78,79,80
DEFB 81,82,83,84,85,86,87,88,89,90
DEFB 91,92,93,94,95,96,97,98,99,100
DEFB 101,102,103,104,105,0e6h,063h,05ch,001h
db 06bh,06bh,051h,0f4h
db 01ch,06ch,061h,062h
db 085h,065h,030h,0d8h
db 0f2h,062h,000h,04eh
db 06c 0
DEFB 0 ;alloc 1
DEFW 16 ;check size
DEFW 2 ;track offset
;
; fixed data tables for 4MB harddisk
;
; disk parameter headte vector for the IBM 8" disks
;
TRANS: DEFB 1,7,13,19 ;sectors 1,2,3,4
DEFB 25,5,11,17 ;sectors 5,6,7,8
DEFB 23,3,9,15 ;secto'Copyright 1988-2006 by Udo Munk)'
DEFB 13,10,0
;
; end of fixed tables
;
; individual subroutines to perform each function
; ses for four-drive standard
; IBM-compatible 8" disks
;
; disk parameter header for disk 00
DPBASE: DEFW TRANS,0000H
DEFW 0000H,106,107,108,109,110
DEFB 111,112,113,114,115,116,117,118,119,120
DEFB 121,122,123,124,125,126,127,128
;
; disk parameter;cold start
WBOOTE: JP WBOOT ;warm start
JP CONST ;console status
JP CONIN ;console character in
JP CONOUT ;console charaer
HDBASE: DEFW HDTRA,0000H
DEFW 0000H,0000H
DEFW DIRBF,HDBLK
DEFW CHKHD,ALLHD
;
; sector translate vector for the hardisk
;
implest case is to just perform parameter initialization
;
BOOT: LD SP,80H ;use space below buffer for stack
LD HL,SIGNON ;pto load, check for track change
INC D
LD A,D ;sector=27?, if so, change tracks
CP 27
JP C,LOAD1 ;carry generated if sectorall
CALL SETDMA ;set dma address from b,c
; drive set to 0, track set, sector set, dma address set
CALL READ
CP 00H ;any er0 instruction set exerciser
; Copyright (C) 1994 Frank D. Cringle
;
; This program is free software; you can redistribute ithe next sector to read
; note that we begin by reading track 0, sector 2 since sector 1
; contains the cold start loader, which title 'Z80/8080 instruction set exerciser'
.z80
genz80 equ 1 ; 0 = undefined status bits taken into account
; 1 = underint message
BOOTL: LD A,(HL)
OR A
JP Z,BOOTC
LD C,A
CALL CONOUT
INC HL
JP BOOTL
BOOTC: XOR A ;zero in the accum
LD (I<27
; end of current track, go to next track
LD D,1 ;begin with first sector of next track
INC C ;track=track+1
; save regisrors?
JP NZ,WBOOT ;retry the entire boot if an error occurs
; no error, move to next sector
POP HL ;recall dma address
LD DE and/or
; modify it under the terms of the GNU General Public License
; as published by the Free Software Foundation; either vis skipped in a warm start
LD HL,CCP ;base of cp/m (initial load point)
LOAD1: ;load one more sector
PUSH BC ;save sectorfined status bits NOT taken into account
isZ80 equ 1 ; 0 = code runs on 8080, only 8080 instructions are tested
; implieOBYTE),A ;clear the iobyte
LD (CDISK),A ;select disk zero
JP GOCPM ;initialize and go to cp/m
;
; simplest case is to read thter state, and change tracks
CALL SETTRK ;track address set from register c
JP LOAD1 ;for another sector
; end of load opera,128 ;dma=dma+128
ADD HL,DE ;new dma address is in h,l
POP DE ;recall sector address
POP BC ;recall number of sectors remersion 2
; of the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be count, current track
PUSH DE ;save next sector to read
PUSH HL ;save dma address
LD C,D ;get sector address to register cs genz80 = 1
; 1 = code requires Z80, Z80 instructions are tested
; on SIMH, the CPU is automatically set
trace equ 0 ;e disk until all sectors loaded
;
WBOOT: LD SP,80H ;use space below buffer for stack
LD C,0 ;select disk 0
CALL SELDSK
CALtion, set parameters and go to cp/m
GOCPM:
LD A,0C3H ;c3 is a jmp instruction
LD (0),A ;for jmp to wboot
LD HL,WBOOTE ;wbooaining, and current trk
DEC B ;sectors=sectors-1
JP Z,GOCPM ;transfer to cp/m if all have been loaded
; more sectors remain useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS
CALL SETSEC ;set sector address from register c
POP BC ;recall dma address to b,c
PUSH BC ;replace on stack for later rec 0 = no output of state information on console
; 1 = output state information on console (can be huge!)
; zexlax.z80 - Z8L HOME ;go to track 00
;
LD B,NSECTS ;b counts # of sectors to load
LD C,0 ;c has the current track number
LD D,2 ;d has tt entry point
LD (1),HL ;set address field for jmp at 0
;
LD (5),A ;for jmp to bdos
LD HL,BDOS ;bdos entry point
LD (6),HE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public Licee next 2
; vectors. Each 1 bit in the increment vector specifies a bit to be
; cycled in the form of a binary counter. For iincement vector,
; the shift vector,
; the expected crc,
; a short descriptive message.
;
; The flag mask byte is used to ped a reference implementation (or
; real system) is available, a failing test case can be isolated by
; hand using a binary sesters iy,ix,hl,de,bc,af,sp
; for a total of 16 bytes.
; The program tests instructions (or groups of similar instructions)
1 bits in it.
; The total number of test cases is the product of those caused by the
; counter and shift vectors and can eanse
; along with this program; if not, write to the Free Software
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
nstance, if the byte
; corresponding to the accumulator is set to 0ffh in the increment
; vector, the test will be repeated forevent undefined flag bits from
; influencing the results. Documented flags are as per Mostek Z80
; Technical Manual.
;
; Tarch of the test space.
sz80: db 'Switched to Z80 processor.',cr,lf,'$'
s8080: db 'Switched to 8080 processor.',cr,lf,'$'
; by cycling through a sequence of machine states, executing the test
; instruction for each one and running a 32-bit crc over sily become unweildy. Each
; individual test case can take a few milliseconds to execute, due to
; the overhead of test setup
aseg
org 100h
cr equ 13
lf equ 10
printst equ 9
conout equ 2
bdosO equ 5
wboot equ 0
simh equ 0feh
set8080 equ 20
r all 256 values of the
; accumulator. Note that 1 bits don't have to be contiguous. The
; number of test cases 'caused' by he next three parts of the descriptor are 20 byte vectors
; corresponding to a 4 byte instruction and a 16 byte machine state.
sw8080: ld a,set8080
ld de,s8080
jp dosw
swz80: ld a,setz80
ld de,sz80
dosw: out (simh),a
ld (nsw),a
ld c,printst
the resulting
; machine states. At the end of the sequence the crc is compared to
; an expected value that was found empirica and crc calculation, so test design is a
; compromise between coverage and execution time.
; This program is designed to de
setz80 equ 19
jp start
; machine state before test (needs to be at predictably constant address)
msbt: ds 14
spbt: ds the increment vector is equal to
; 2^(number of 1 bits). The shift vector is similar, but specifies a
; set of bits in the te
; The first part is the base case, which is the first test case of
; the sequence. This base is then modified according to th jp bdos
start: xor a
ld (erfnd),a ; reset error flag
ld (nsw),a ; = 0: does not need switch, <> 0: needs switch
dec ally on a real Z80.
; A test case is defined by a descriptor which consists of:
; a flag mask byte,
; the base case,
; the tect differences between
; implementations and is not ideal for diagnosing the causes of any
; discrepancies. However, provid2
; For the purposes of this test program, the machine state consists of:
; a 2 byte memory operand, followed by
; the regist case that are to be successively inverted.
; Thus the shift vector 'causes' a number of test cases equal to the
; number of ; parity even shows that we are running on an 8080
if isz80
jp po,start1 ; correct CPU detected
call swz80
e ;(16 cycles)
dw ld167 ;(16 cycles)
dw ld168 ;(64 cycles)
dw ld16im ;(64 cycles)
dw ld16ix ;(32 cycles)
dw ld8bd dw incde ;(1536 cycles)
dw ince ;(3072 cycles)
dw inch ;(3072 cycles)
dw inchl ;(1536 cycles)
dw incix ;(1536 cycl cycles)
dw incm ;(3072 cycles)
dw incsp ;(1536 cycles)
dw ld162 ;(16 cycles)
dw ld166 ;(16 cycles)
dw ld16im ;(6isZ80
dw adc16 ;(38,912 cycles)
dw add16 ;(19,456 cycles)
dw add16x ;(19,456 cycles)
dw add16y ;(19,456 cycles)
dw dw srzx ;(1792 cycles)
dw st8ix1 ;(1024 cycles)
dw st8ix2 ;(256 cycles)
dw st8ix3 ;(64 cycles)
dw stabd ;(96 cyclelse
jp pe,start1
call sw8080
endif
start1: ld hl,(bdosO+1)
ld sp,hl
ld de,msg1
ld c,printst
call bdos
ld;(44 cycles)
dw ld8im ;(64 cycles)
dw ld8imx ;(32 cycles)
dw ld8ix1 ;(512 cycles)
dw ld8ix2 ;(256 cycles)
dw ld8ixes)
dw inciy ;(1536 cycles)
dw incl ;(3072 cycles)
dw incm ;(3072 cycles)
dw incsp ;(1536 cycles)
dw incx ;(6144 4 cycles)
dw ld8bd ;(44 cycles)
dw ld8im ;(64 cycles)
dw ld8rr ;(3456 cycles)
dw lda ;(44 cycles)
dw rot8080 ;(61 alu8i ;(28,672 cycles)
dw alu8r ;(753,664 cycles)
; dw alu8rx ;(376,832 cycles)
dw alu8x ;(229,376 cycles)
dw bitx s)
else
dw add16 ;(19,456 cycles)
dw alu8i ;(28,672 cycles)
dw alu8r ;(753,664 cycles)
dw daa ;(65,536 cycles hl,tests ; first test case
loop: ld a,(hl) ; end of list ?
inc hl
or (hl)
jp z,done
dec hl
call stt
jp loop
do3 ;(128 cycles)
; dw ld8ixy ;(32 cycles)
dw ld8rr ;(3456 cycles)
; dw ld8rrx ;(6912 cycles)
dw lda ;(44 cycles)
dw cycles)
; dw incxh ;(3072 cycles)
; dw incxl ;(3072 cycles)
; dw incyh ;(3072 cycles)
; dw incyl ;(3072 cycles)
dw ld144 cycles)
dw stabd ;(96 cycles)
endif
dw 0
tstr macro insn,memop,iy,ix,hl,de,bc,flags,acc,sp
local lab
lab: d;(2048 cycles)
dw bitz80 ;(49,152 cycles)
dw cpd1 ;(6144 cycles)
dw cpi1 ;(6144 cycles)
dw daa ;(65,536 cycles)
dw)
dw inca ;(3072 cycles)
dw incb ;(3072 cycles)
dw incbc ;(1536 cycles)
dw incc ;(3072 cycles)
dw incd ;(3072 cycne: ld a,(erfnd)
or a
ld de,allok
jp z,noerr
ld de,erfndt
noerr: ld c,printst
call bdos
ld a,(nsw)
or a
jp z,wbldd1 ;(44 cycles)
dw ldd2 ;(44 cycles)
dw ldi1 ;(44 cycles)
dw ldi2 ;(44 cycles)
dw neg ;(16,384 cycles)
dw rld 61 ;(32 cycles)
dw ld162 ;(16 cycles)
dw ld163 ;(16 cycles)
dw ld164 ;(32 cycles)
dw ld165 ;(64 cycles)
dw ld166 b insn
ds lab+4-$,0
dw memop,iy,ix,hl,de,bc
db flags
db acc
dw sp
if $-lab ne 20
error 'missing parameter'
inca ;(3072 cycles)
dw incb ;(3072 cycles)
dw incbc ;(1536 cycles)
dw incc ;(3072 cycles)
dw incd ;(3072 cycles)
les)
dw incde ;(1536 cycles)
dw ince ;(3072 cycles)
dw inch ;(3072 cycles)
dw inchl ;(1536 cycles)
dw incl ;(3072oot
if isz80
call sw8080
else
call swz80
endif
jp wboot ; warm boot
tests:
if ;(7168 cycles)
dw rot8080 ;(6144 cycles)
; dw rotxy ;(416 cycles)
; dw rotz80 ;(6784 cycles)
dw srz80 ;(7936 cycles)
endif
endm
tmsg macro m
local lab
lab: db m
if $ ge lab+30
error 'message too long'
else
ds lab+30fh,092h,01eh,071eah
tstr <0,030h>,0,0f821h,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,-1,0,0,-1,-1,0d7h,0,-1 ; (38 cycles)
edd hl,<bc,de,hl,sp>'
; add ix,<bc,de,ix,sp> (19,456 cycles)
add16x: db flgmask ; flag mask
tstr <0ddh,9>,0ddach,0c294h,06 handlers
;
; console status, return 0ffh if character ready, 00h if not
;
CONST: IN A,(CONSTA) ;get console status
RET
;
; concycles)
tstr 0,0,0,0,-1,-1,-1,0d7h,0,-1 ; (38 cycles)
expcrc <0d4h,08ah,0d5h,019h>,<0f3h,090h,089h,0a0h>,<0,0,0,0> ; expectlgmask ; flag mask
tstr 080h,0c53eh,0573ah,04c4dh,msbt,0e309h,0a666h,0d0h,03bh,0adbbh
tstr 03fh,0,0,0,0,0,0,0,-1,0 ; (16,0-$,'.'
endif
db '$'
endm
if isz80 eq 0
flgmask equ 0d7h
expcrc macro crc1,crc2,crc3
db crc3
endm
xpcrc <039h,0c8h,058h,09bh>,<05fh,0c8h,028h,0e9h>,<0,0,0,0> ; expected crc
tmsg 'add iy,<bc,de,iy,sp>'
; aluop a,nn (28,67235bh,033d3h,06a76h,0fa20h,094h,068h,036f5h
tstr <0,030h>,0,0,0f821h,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,-1,0,-1,-1,0d7h,0sole character into register a
;
CONIN: IN A,(CONDAT) ;get character from console
RET
;
; console character output from registeed crc
tmsg '<adc,sbc> hl,<bc,de,hl,sp>'
; add hl,<bc,de,hl,sp> (19,456 cycles)
add16: db flgmask ; flag mask
tstr 9,0c384 cycles)
tstr 0,0ffh,0,0,0,-1,-1,0d7h,0,0 ; (46 cycles)
expcrc <006h,0c7h,0aah,08eh>,<0feh,043h,0b0h,016h>,<0b8h,05bh,0e else
if genz80
flgmask equ 0d7h
expcrc macro crc1,crc2
db crc2
endm
else
flgmask equ 0ffh
expcrc macro cycles)
alu8i: db flgmask ; flag mask
tstr 0c6h,09140h,07e3ch,07a67h,0df6dh,05b61h,00b29h,010h,066h,085b2h
tstr 038h,0,0,,-1 ; (38 cycles)
expcrc <0b1h,0dfh,08eh,0c0h>,<0c3h,059h,0f7h,0a2h>,<0,0,0,0> ; expected crc
tmsg 'add ix,<bc,de,ix,sp>'
r c
;
CONOUT: LD A,C ;get to accumulator
OUT (CONDAT),A ;send character to console
RET
;
; list character from register c
;
L4a5h,0c4c7h,0d226h,0a050h,058eah,08566h,0c6h,0deh,09bc9h
tstr 030h,0,0,0,0f821h,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,-1,-1L ;address field of jump at 5 to bdos
;
LD BC,80H ;default dma address is 80h
CALL SETDMA
;
EI ;enable the interrupt systcrc1
db crc1
endm
endif
endif
; <adc,sbc> hl,<bc,de,hl,sp> (38,912 cycles)
adc16: db flgmask ; flag mas0,0,0,0,0,-1,0 ; (2048 cycles)
tstr <0,-1>,0,0,0,0,0,0,0d7h,0,0 ; (14 cycles)
expcrc <051h,0c1h,09ch,02eh>,<048h,079h,093
; add iy,<bc,de,iy,sp> (19,456 cycles)
add16y: db flgmask ; flag mask
tstr <0fdh,9>,0c7c2h,0f407h,051c1h,03e96h,00bf4h,051IST: LD A,C ;character to register a
OUT (PRTDAT),A
RET
;
; return list status (0 if not ready, 0xff if ready)
;
LISTST: IN A,-1,0d7h,0,-1 ; (38 cycles)
expcrc <0d9h,0a4h,0cah,005h>,<011h,065h,0fch,090h>,<026h,015h,08bh,0ebh> ; expected crc
tmsg 'aem
LD A,(CDISK) ;get current disk number
LD C,A ;send to the ccp
JP CCP ;go to cp/m for further processing
;
;
; simple i/ok
tstr <0edh,042h>,0832ch,04f88h,0f22bh,0b339h,07e1fh,01563h,0d3h,089h,0465eh
tstr <0,038h>,0,0,0,0f821h,0,0,0,0,0 ; (1024 h,060h>,<03fh,092h,0a2h,073h> ; expected crc
tmsg 'aluop a,nn'
; aluop a,<b,c,d,e,h,l,(hl),a> (753,664 cycles)
alu8r: db f,(PRTSTA)
RET
;
; punch character from register c
;
PUNCH: LD A,C ;character to register a
OUT (AUXDAT),A
RET
;
; read chara,1 ;write command -> A
;
; enter here from read and write to perform the actual i/o
; operation. return a 00h in register a ifate the sector given by BC using the
; translate table given by DE
;
SECTRAN:
EX DE,HL ;HL=.trans
ADD HL,BC ;HL=.trans(secto;check vector harddisk
;
ENDDAT EQU $ ;end of data area
DATSIZ EQU $-BEGDAT ;size of data area
END ;of BIOS
arameter header address
OUT (FDCD),A ;selekt disk drive
LD L,A ;L=disk number 0,1,2,3
ADD HL,HL ;*2
ADD HL,HL ;*4
ADD HLust be available,
; however, between "begdat" and "enddat").
;
; scratch ram area for BDOS use
;
BEGDAT EQU $ ;beginning of datcter into register a from reader device
;
READER: IN A,(AUXDAT)
RET
;
;
; i/o drivers for the disk follow
;
; move to the track the operation completes
; properly, and 01h if an error occurs during the read or write
;
; in this case, we have saved the disr)
LD L,(HL) ;L = trans(sector)
LD H,0 ;HL= trans(sector)
RET ;with value in HL
;
; set dma address given by registers b ,HL ;*8
ADD HL,HL ;*16 (size of each header)
LD DE,DPBASE
ADD HL,DE ;HL=.dpbase(diskno*16)
RET
SELHD: CP 8 ;select the ha area
DIRBF: DEFS 128 ;scratch directory area
ALL00: DEFS 31 ;allocation vector 0
ALL01: DEFS 31 ;allocation vector 1
ALL02: 00 position of current drive
; translate this call into a settrk call with parameter 00
;
HOME: LD C,0 ;select track 0
JP SETk number in 'diskno' (0-3)
; the track number in 'track' (0-76)
; the sector number in 'sector' (1-26)
; the dma address iand c
;
SETDMA: LD A,C ;low order address
OUT (DMAL),A
LD A,B ;high order address
OUT (DMAH),A ;in dma
RET
;
; perform reaarddisk?
RET NZ ;no, error
OUT (FDCD),A ;select disk drive
LD HL,HDBASE ;HL=hdbase for harddisk
RET
;
; set track given by DEFS 31 ;allocation vector 2
ALL03: DEFS 31 ;allocation vector 3
ALLHD: DEFS 255 ;allocation vector harddisk
CHK00: DEFS 16 TRK ;we will move to 00 on first read/write
;
; select disk given by register C
;
SELDSK: LD HL,0000H ;error return code
LD A,n 'dmaad' (0-65535)
;
WAITIO: OUT (FDCOP),A ;start i/o operation
IN A,(FDCST) ;status of i/o operation -> A
RET
;
; the remaind operation
;
READ: XOR A ;read command -> A
JP WAITIO ;to perform the actual i/o
;
; perform a write operation
;
WRITE: LD Aregister c
;
SETTRK: LD A,C
OUT (FDCT),A
RET
;
; set sector given by register c
;
SETSEC: LD A,C
OUT (FDCS),A
RET
;
; transl ;check vector 0
CHK01: DEFS 16 ;check vector 1
CHK02: DEFS 16 ;check vector 2
CHK03: DEFS 16 ;check vector 3
CHKHD: DEFS 0 C
CP 4 ;must be between 0 and 3
JR NC,SELHD ;no carry if 4,5,...
; disk number is in the proper range
; compute proper disk pder of the CBIOS is reserved uninitialized
; data area, and does not need to be a part of the
; system memory image (the space m; CBIOS for Z80-Simulator
;
; Copyright (C) 1988-2006 by Udo Munk
;
MSIZE EQU 64 ;cp/m version memory size in kilobytes
;
header for disk 00
DPBASE: DEFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK00,ALL00
; disk parameter header character in
JP CONOUT ;console character out
JP LIST ;list character out
JP PUNCH ;punch character out
JP READER ;r00H
DEFW 0000H,0000H
DEFW DIRBF,HDBLK
DEFW CHKHD,ALLHD
;
; sector translate vector for the hardisk
;
HDTRA: DEFB 1,2,3 data port
FDCD EQU 10 ;fdc-port: # of drive
FDCT EQU 11 ;fdc-port: # of track
FDCS EQU 12 ;fdc-port: # of sector
FDCOP E15,16
DEFB 20,26,6,12 ;sectors 17,18,19,20
DEFB 18,24,4,10 ;sectors 21,22,23,24
DEFB 16,22 ;sectors 25,26
;
; disk para
; "bias" is address offset from 3400H for memory systems
; than 16K (referred to as "b" throughout the text).
;
BIAS EQU (MSfor disk 01
DEFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK01,ALL01
; disk parameter header for disk 02
Deader character out
JP HOME ;move head to home position
JP SELDSK ;select disk
JP SETTRK ;set track number
JP SETSEC ,4,5,6,7,8,9,10
DEFB 11,12,13,14,15,16,17,18,19,20
DEFB 21,22,23,24,25,26,27,28,29,30
DEFB 31,32,33,34,35,36,37,38,39,40
QU 13 ;fdc-port: command
FDCST EQU 14 ;fdc-port: status
DMAL EQU 15 ;dma-port: dma address low
DMAH EQU 16 ;dma-port: dmameter block, common to all IBM 8" disks
;
DPBLK: DEFW 26 ;sectors per track
DEFB 3 ;block shift factor
DEFB 7 ;block mIZE-20)*1024
CCP EQU 3400H+BIAS ;base of ccp
BDOS EQU CCP+806H ;base of bdos
BIOS EQU CCP+1600H ;base of bios
CDISK EQU 0004EFW TRANS,0000H
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK02,ALL02
; disk parameter header for disk 03
DEFW TRANS,0000H ;set sector number
JP SETDMA ;set dma address
JP READ ;read disk
JP WRITE ;write disk
JP LISTST ;return list status DEFB 41,42,43,44,45,46,47,48,49,50
DEFB 51,52,53,54,55,56,57,58,59,60
DEFB 61,62,63,64,65,66,67,68,69,70
DEFB 71,72,73,74 address high
;
ORG BIOS ;origin of this program
NSECTS EQU (BIOS-CCP)/128 ;warm start sector count
;
; jump vector for iask
DEFB 0 ;extent mask
DEFW 242 ;disk size-1
DEFW 63 ;directory max
DEFB 192 ;alloc 0
DEFB 0 ;alloc 1
DEFW 16 H ;current disk number 0=A,...,15=P
IOBYTE EQU 0003H ;intel i/o byte
;
; I/O ports
;
CONSTA EQU 0 ;console status port
DEFW 0000H,0000H
DEFW DIRBF,DPBLK
DEFW CHK03,ALL03
;
; sector translate vector for the IBM 8" disks
;
TRANS: DEFB 1,7
JP SECTRAN ;sector translate
;
; fixed data tables for four-drive standard
; IBM-compatible 8" disks
;
; disk parameter,75,76,77,78,79,80
DEFB 81,82,83,84,85,86,87,88,89,90
DEFB 91,92,93,94,95,96,97,98,99,100
DEFB 101,102,103,104,105,106,107ndividual subroutines
;
JP BOOT ;cold start
WBOOTE: JP WBOOT ;warm start
JP CONST ;console status
JP CONIN ;console ;check size
DEFW 2 ;track offset
;
; fixed data tables for 4MB harddisk
;
; disk parameter header
HDBASE: DEFW HDTRA,00CONDAT EQU 1 ;console data port
PRTSTA EQU 2 ;printer status port
PRTDAT EQU 3 ;printer data port
AUXDAT EQU 5 ;auxiliary,13,19 ;sectors 1,2,3,4
DEFB 25,5,11,17 ;sectors 5,6,7,8
DEFB 23,3,9,15 ;sectors 9,10,11,12
DEFB 21,2,8,14 ;sectors 13,14,,108,109,110
DEFB 111,112,113,114,115,116,117,118,119,120
DEFB 121,122,123,124,125,126,127,128
;
; disk parameter bl address
LD C,D ;get sector address to register c
CALL SETSEC ;set sector address from register c
POP BC ;recall dma ad C,0 ;select disk 0
CALL SELDSK
CALL HOME ;go to track 00
;
LD B,NSECTS ;b counts # of sectors to load
LD C,0 ;c has A,0C3H ;c3 is a jmp instruction
LD (0),A ;for jmp to wboot
LD HL,WBOOTE ;wboot entry point
LD (1),HL ;set address fiel each function
; simplest case is to just perform parameter initialization
;
BOOT: LD SP,80H ;use space below buffer for sPM ;transfer to cp/m if all have been loaded
; more sectors remain to load, check for track change
INC D
LD A,D ;sector=2ock for harddisk
;
HDBLK: DEFW 128 ;sectors per track
DEFB 4 ;block shift factor
DEFB 15 ;block mask
DEFB dress to b,c
PUSH BC ;replace on stack for later recall
CALL SETDMA ;set dma address from b,c
; drive set to 0, track set the current track number
LD D,2 ;d has the next sector to read
; note that we begin by reading track 0, sector 2 since sectd for jmp at 0
;
LD (5),A ;for jmp to bdos
LD HL,BDOS ;bdos entry point
LD (6),HL ;address field of jump at 5 to bdos
tack
LD HL,SIGNON ;print message
BOOTL: LD A,(HL)
OR A
JP Z,BOOTC
LD C,A
CALL CONOUT
INC HL
JP BOOTL
BOOTC: XO7?, if so, change tracks
CP 27
JP C,LOAD1 ;carry generated if sector<27
; end of current track, go to next track
LD D,1 0 ;extent mask
DEFW 2039 ;disk size-1
DEFW 1023 ;directory max
DEFB 255 ;alloc 0
DEFB 255 ;alloc 1
, sector set, dma address set
CALL READ
CP 00H ;any errors?
JP NZ,WBOOT ;retry the entire boot if an error occurs
; no eor 1
; contains the cold start loader, which is skipped in a warm start
LD HL,CCP ;base of cp/m (initial load point)
LOAD1:
;
LD BC,80H ;default dma address is 80h
CALL SETDMA
;
EI ;enable the interrupt system
LD A,(CDISK) ;get current disR A ;zero in the accum
LD (IOBYTE),A ;clear the iobyte
LD (CDISK),A ;select disk zero
JP GOCPM ;initialize and go to cp/ ;begin with first sector of next track
INC C ;track=track+1
; save register state, and change tracks
CALL SETTRK ;track DEFW 0 ;check size
DEFW 0 ;track offset
;
; signon message
;
SIGNON: DEFM '64K CP/M Vers. 2.2 (CBIOS V1.1 for Z80Srror, move to next sector
POP HL ;recall dma address
LD DE,128 ;dma=dma+128
ADD HL,DE ;new dma address is in h,l
POP ;load one more sector
PUSH BC ;save sector count, current track
PUSH DE ;save next sector to read
PUSH HL ;save dmak number
LD C,A ;send to the ccp
JP CCP ;go to cp/m for further processing
;
;
; simple i/o handlers
;
; console statm
;
; simplest case is to read the disk until all sectors loaded
;
WBOOT: LD SP,80H ;use space below buffer for stack
LDaddress set from register c
JP LOAD1 ;for another sector
; end of load operation, set parameters and go to cp/m
GOCPM:
LDIM, '
DEFM 'Copyright 1988-2006 by Udo Munk)'
DEFB 13,10,0
;
; end of fixed tables
;
; individual subroutines to performDE ;recall sector address
POP BC ;recall number of sectors remaining, and current trk
DEC B ;sectors=sectors-1
JP Z,GOCus, return 0ffh if character ready, 00h if not
;
CONST: IN A,(CONSTA) ;get console status
RET
;
; console character into rr c
;
SETSEC: LD A,C
OUT (FDCS),A
RET
;
; translate the sector given by BC using the
; translate table given by DE
;
nge
; compute proper disk parameter header address
OUT (FDCD),A ;selekt disk drive
LD L,A ;L=disk number 0,1,2,3
ADD HL,nitialized
; data area, and does not need to be a part of the
; system memory image (the space must be available,
; however, d character into register a from reader device
;
READER: IN A,(AUXDAT)
RET
;
;
; i/o drivers for the disk follow
;
; moead and write to perform the actual i/o
; operation. return a 00h in register a if the operation completes
; properly, and 01egister a
;
CONIN: IN A,(CONDAT) ;get character from console
RET
;
; console character output from register c
;
CONOUT: SECTRAN:
EX DE,HL ;HL=.trans
ADD HL,BC ;HL=.trans(sector)
LD L,(HL) ;L = trans(sector)
LD H,0 ;HL= trans(sector)
RHL ;*2
ADD HL,HL ;*4
ADD HL,HL ;*8
ADD HL,HL ;*16 (size of each header)
LD DE,DPBASE
ADD HL,DE ;HL=.dpbase(disknobetween "begdat" and "enddat").
;
; scratch ram area for BDOS use
;
BEGDAT EQU $ ;beginning of data area
DIRBF: DEFS 128 ve to the track 00 position of current drive
; translate this call into a settrk call with parameter 00
;
HOME: LD C,0 ;seleh if an error occurs during the read or write
;
; in this case, we have saved the disk number in 'diskno' (0-3)
; the trackLD A,C ;get to accumulator
OUT (CONDAT),A ;send character to console
RET
;
; list character from register c
;
LIST: LD ET ;with value in HL
;
; set dma address given by registers b and c
;
SETDMA: LD A,C ;low order address
OUT (DMAL),A
*16)
RET
SELHD: CP 8 ;select the harddisk?
RET NZ ;no, error
OUT (FDCD),A ;select disk drive
LD HL,HDBASE ;HL=hdbase ;scratch directory area
ALL00: DEFS 31 ;allocation vector 0
ALL01: DEFS 31 ;allocation vector 1
ALL02: DEFS 31 ;allocationct track 0
JP SETTRK ;we will move to 00 on first read/write
;
; select disk given by register C
;
SELDSK: LD HL,0000H ;e number in 'track' (0-76)
; the sector number in 'sector' (1-26)
; the dma address in 'dmaad' (0-65535)
;
WAITIO: OUT (FA,C ;character to register a
OUT (PRTDAT),A
RET
;
; return list status (0 if not ready, 0xff if ready)
;
LISTST: IN A,(LD A,B ;high order address
OUT (DMAH),A ;in dma
RET
;
; perform read operation
;
READ: XOR A ;read command -> A
JP Wfor harddisk
RET
;
; set track given by register c
;
SETTRK: LD A,C
OUT (FDCT),A
RET
;
; set sector given by registe vector 2
ALL03: DEFS 31 ;allocation vector 3
ALLHD: DEFS 255 ;allocation vector harddisk
CHK00: DEFS 16 ;check vector 0
rror return code
LD A,C
CP 4 ;must be between 0 and 3
JR NC,SELHD ;no carry if 4,5,...
; disk number is in the proper raDCOP),A ;start i/o operation
IN A,(FDCST) ;status of i/o operation -> A
RET
;
; the remainder of the CBIOS is reserved uniPRTSTA)
RET
;
; punch character from register c
;
PUNCH: LD A,C ;character to register a
OUT (AUXDAT),A
RET
;
; reaAITIO ;to perform the actual i/o
;
; perform a write operation
;
WRITE: LD A,1 ;write command -> A
;
; enter here from rCHK01: DEFS 16 ;check vector 1
CHK02: DEFS 16 ;check vector 2
CHK03: DEFS 16 ;check vector 3
CHKHD: DEFS 0 ;check vector CR EQU 0DH ;CARRIAGE RETURN
000A = LF EQU 0AH ;LINE FEED
0010 = STACKSIZE EQU 16 ;SIZE OF LOCAL STACKP EQU 900H ;LOAD POINT FOR SYSTEM DURING LOAD/STORE
0005 = BDOS EQU 5H ;DOS ENTRY POINT
0000 = BOOT EQU 0 ;JRANSIENT PROGRAM AREA
LOADP EQU 900H ;LOAD POINT FOR SYSTEM DURING LOAD/STORE
BDOS EQU 5H ;DOS ENTRY POINT
BOOT EQU 0 ;JMP TO NSECTS EQU 26 ;NO. OF SECTORS PER TRACK
0002 = NTRKS EQU 2 ;NO. OF OPERATING SYSTEM TRACKS
0004 = NDISK TITLE 'SYSGEN - SYSTEM GENERATION PROGRAM 8/79'
; SYSTEM GENERATION PROGRAM, VERSION FOR Z80SIM
VERS EQU 20 ;X.X
;
; COPYRIharddisk
;
ENDDAT EQU $ ;end of data area
DATSIZ EQU $-BEGDAT ;size of data area
END ;of BIOS

;
0001 = WBOOT EQU 1 ;ADDRESS OF WARM BOOT (OTHER PATCH ENTRY
; POINTS ARE COMPUTxsub
b:
a:z80asm boot/h
a:z80asm bios/h
a:
ddt movcpm.com
s234
0
0
0
.
s2cb
0
0
0
.
i64 *
g
save 34 b:cpm64.co 'BOOT' TO REBOOT SYSTEM
CONI EQU 1 ;CONSOLE INPUT FUNCTION
CONO EQU 2 ;CONSOLE OUTPUT FUNCTION
SELF EQU 14 ;SELECT DISK
OPES EQU 4 ;NUMBER OF DISK DRIVES
0080 = SECSIZ EQU 128 ;SIZE OF EACH SECTOR
0003 = LOG2SEC EQU 3 ;LOG 2 SECSIZGHT (C) DIGITAL RESEARCH
; 1976, 1977, 1978, 1979
;
NSECTS EQU 26 ;NO. OF SECTORS PER TRACK
NTRKS EQU 2 ;NO. OF OPExsub
b:
a:z80asm boot/h
a:z80asm bios/h
a:
ddt movcpm.com
s234
0
0
0
.
s2cb
0
0
0
.
i64 *
g
save 34 b:cpm64.coED RELATIVE TO WBOOT)
0018 = SELDSK EQU 24 ;WBOOT+24 FOR DISK SELECT
001B = SETTRK EQU 27 ;WBOOT+27 FOR SET m
b:
a:ddt cpm64.com
iboot.hex
r900
ibios.hex
r2580
g0
a:
save 34 b:cpm64.com
sysgen b:cpm64.com
NF EQU 15 ;DISK OPEN FUNCTION
DREADF EQU 20 ;DISK READ FUNCTION
;
MAXTRY EQU 10 ;MAXIMUM NUMBER OF RETRIES ON EACH READ/WRITE
0006 = SKEW EQU 6 ;SECTOR SKEW FACTOR
;
005C = FCB EQU 005CH ;DEFAULT FCB LOCATION
007C RATING SYSTEM TRACKS
NDISKS EQU 4 ;NUMBER OF DISK DRIVES
SECSIZ EQU 128 ;SIZE OF EACH SECTOR
LOG2SEC EQU 3 ;LOG 2 SECSIZ
SKEm
b:
a:ddt cpm64.com
iboot.hex
r900
ibios.hex
r2580
g0
a:
save 34 cpm64.com
sysgen cpm64.com
TRACK FUNCTION
001E = SETSEC EQU 30 ;WBOOT+30 FOR SET SECTOR FUNCTION
0021 = SETDMA EQU 33 ;WBOOT+33 FOR SET0 ;DISK READ FUNCTION
;
000A = MAXTRY EQU 10 ;MAXIMUM NUMBER OF RETRIES ON EACH READ/WRITE
000D =
CR EQU 0DH ;CARRIAGE RETURN
LF EQU 0AH ;LINE FEED
STACKSIZE EQU 16 ;SIZE OF LOCAL STACK
;
WBOOT EQU 1 ;ADDRESS OF WARM BOO= FCBCR EQU FCB+32 ;CURRENT RECORD LOCATION
0100 = TPA EQU 0100H ;TRANSIENT PROGRAM AREA
0900 = LOADW EQU 6 ;SECTOR SKEW FACTOR
;
FCB EQU 005CH ;DEFAULT FCB LOCATION
FCBCR EQU FCB+32 ;CURRENT RECORD LOCATION
TPA EQU 0100H ;T ; COPYRIGHT (C) DIGITAL RESEARCH
; 1976, 1977, 1978, 1979
;
001A = DMA ADDRESS
0024 = READF EQU 36 ;WBOOT+36 FOR READ FUNCTION
0027 = WRITF EQU 39 ;WBOOT+39 FOR WRITE FUNCTIOxsub
b:
a:z80asm boot/h
a:z80asm bios/h
a:
ddt movcpm.com
s234
0
0
0
q
s2cb
0
0
0
q
i64 *
g
save 34 b:cpm64.coOVE.
;
OST: DB NTRKS ;OPERATING SYSTEM TRACKS
SPT: DB NSECTS ;SECTORS PER TRACK (CAN BE PATCHED)
TRAN: ;BASE OF TRANSLATE 27 FOR SET TRACK FUNCTION
SETSEC EQU 30 ;WBOOT+30 FOR SET SECTOR FUNCTION
SETDMA EQU 33 ;WBOOT+33 FOR SET DMA ADDRESS
READF ERET
;
CRMSG: ;PRINT MESSAGE ADDRESSED BY H,L TIL ZERO
;WITH LEADING CRLF
PUSH H! CALL CRLF! POP H ;DROP THRU TO OUTMSG0
O<00>w<>s<inc,dec> b...................$<24>力ォDノ阪耄<>IM*!<21> LOG2SEC ;LOG 2 OF SECTOR SIZE
DAD H
ENDM
RET ;WITH HL = SECTOR * SECTOR SIZE
;
GETCHAR:
; READ CONSOLE CHARACTER TO REm
b:
a:ddt cpm64.com
iboot.hex
r900
ibios.hex
r2580
g0
a:
sysgen
TABLE
TRELT SET 1 ;FIRST/NEXT TRAN ELEMENT
TRBASE SET 1 ;BASE FOR WRAPAROUND
REPT NSECTS ;ONCE FOR EACH SECTOR ON A TRACK
QU 36 ;WBOOT+36 FOR READ FUNCTION
WRITF EQU 39 ;WBOOT+39 FOR WRITE FUNCTION
;
ORG TPA ;TRANSIENT PROGRAM AREA
JMP START
UTMSG:
MOV A,M! ORA A! RZ
; MESSAGE NOT YET COMPLETED
PUSH H! CALL PUTCHAR! POP H! INX H
JMP OUTMSG
;
SEL:
; SELECT DIメョ;<3B><inc,dec> bc..................$<24> 荷5 [<05>'<27><>`<00><1A>ァ<inc,dec> c................GISTER A
MVI C,CONI! CALL BDOS!
; CONVERT TO UPPER CASE BEFORE RETURN
CPI 'A' OR 20H ! RC ;RETURN IF BELOW LOWER CASE A
CA:XSUB$ 64 *$OM$*
save 34 cpm64.com
DB TRELT ;GENERATE FIRST/NEXT SECTOR
TRELT SET TRELT+SKEW
IF TRELT GT NSECTS
TRBASE SET TRBASE+1
TRELT SET TRBASE
ENDIF
DB 'COPYRIGHT (C) 1978, DIGITAL RESEARCH '
;
; TRANSLATE TABLE - SECTOR NUMBERS ARE TRANSLATED
; HERE TO DECREASE THE SYSGEN SK GIVEN BY REGISTER A
MOV C,A! LHLD WBOOT! LXI D,SELDSK! DAD D! PCHL
;
TRK: ;SET UP TRACK
LHLD WBOOT ;ADDRESS OF BOOT ENT...$<24>槇コ_琇侘8ジC\ス<00>ムFソQ<inc,dec> d...................$<24>.4ノ(ハ
g<EFBFBD>.:程T<E7A88B>PI ('Z' OR 20H) + 1
RNC ;RETURN IF ABOVE LOWER CASE Z
ANI 5FH! RET
;
PUTCHAR:
; WRITE CHARACTER FROM A TO CONSOLE
MOV E-、-cpi<r>........................$<24>'A!<21> `Y・[酵<>持)<>m-メ<daa,cpl,scf,ccf>.......... ENDM
;
; NOW LEAVE SPACE FOR EXTENSIONS TO TRANSLATE TABLE
IF NSECTS LT 64
REPT 64-NSECTS
DB 0
ENDM
;
;
;
;
; UTTIME FOR MISSED SECTORS
; WHEN SLOW CONTROLLERS ARE INVOLVED. TRANSLATION TAKES
; PLACE ACCORDING TO THE "SKEW" FACTOR SET ABRY
LXI D,SETTRK ;OFFSET FOR SETTRK ENTRY
DAD D
PCHL ;GONE TO SETTRK
;
SEC: ;SET UP SECTOR NUMBER
LHLD WBOOT
LXI D,ST (OTHER PATCH ENTRY
; POINTS ARE COMPUTED RELATIVE TO WBOOT)
SELDSK EQU 24 ;WBOOT+24 FOR DISK SELECT
SETTRK EQU 27 ;WBOOT+,A! MVI C,CONO! CALL BDOS! RET
;
CRLF: ;SEND CARRIAGE RETURN, LINE FEED
MVI A,CR
CALL PUTCHAR
MVI A,LF
CALL PUTCHAR
...$<24><゚Jリユ伜+寛ァCDZ0ミ<00><00><><inc,dec> a...................$<24>#ヨ-Caz€≧Z<E289A7><1E><EFBFBD>ILITY SUBROUTINES
MULTSEC:
;MULTIPLY THE SECTOR NUMBER IN A BY THE SECTOR SIZE
MOV L,A! MVI H,0 ;SECTOR NUMBER IN HL
REPTETSEC
DAD D
PCHL
;
DMA: ;SET DMA ADDRESS TO VALUE OF B,C
LHLD WBOOT
LXI D,SETDMA
DAD D
PCHL
;
READ: ;PERFORM REALL DMA ;DMA ADDRESS SET FROM B,C
; DMA ADDRESS SET, CLEAR RETRY COUNT
XRA A
STA RETRY ;SET TO ZERO RETRIES
;
TRYSEC: ;TRY TO OR FROM CURRENT DMA ADDR
LXI H,SECTOR
MOV E,M ;SECTOR NUMBER
MVI D,0 ;TO DE
LXI H,TRAN
MOV B,M ;TRAN(0) IN B
DADP TO GET SYSTEM MESSAGE IF BLANK
LXI D,FCB ;TRY TO OPEN IT
CALL OPEN ;
INR A ;255 BECOMES 00
JNZ RDOK ;OK TO READ IF NOTCK
LXI H,TRACK
INR M ;TRACK = TRACK + 1
LDA OST ;NUMBER OF OPERATING SYSTEM TRACKS
CMP M ;= TRACK NUMBER ?
JZ ENDRW ;E; ERROR, RETRY OPERATION
JMP TRYSEC
;
; END OF TRACK
ENDTRK:
LDA SPT ;SECTORS PER TRACK
CALL MULTSEC ;*SECSIZ
XCHG ;D OPERATION
LHLD WBOOT
LXI D,READF
DAD D
PCHL
;
WRITE: ;PERFORM WRITE OPERATON
LHLD WBOOT
LXI D,WRITF
DAD D
PC TO READ OR WRITE CURRENT SECTOR
LDA RETRY
CPI MAXTRY ;TOO MANY RETRIES?
JC TRYOK
;
; PAST MAXTRIES, MESSAGE AND IGNORE
D ;SECTOR TRANSLATED
MOV C,M ;VALUE TO C READY FOR SELECT
PUSH B ;SAVE TRAN(0),TRAN(SECTOR)
CALL SEC ;SET UP SECTOR NUMBE 255
;
; FILE NOT PRESENT, ERROR AND REBOOT
;
LXI H,NOFILE
CALL CRMSG
JMP REBOOT
;
; FILE PRESENT
; READ TO LOAD PND OF READ OR WRITE
;
; OTHERWISE NOTDONE, GO TO NEXT TRACK
MOV C,M ;TRACK NUMBER
CALL TRK ;TO SET TRACK
MVI A,-1 ;COUNTTO DE
LHLD DMADDR ;BASE DMA FOR THIS TRACK
DAD D ;+SPT*SECSIZ
SHLD DMADDR ;READY FOR NEXT TRACK
JMP RWTRK ;FOR ANOTHER THL
;
DREAD: ;DISK READ FUNCTION
MVI C,DREADF
JMP BDOS
;
OPEN: ;FILE OPEN FUNCTION
MVI C,OPENF ! JMP BDOS
;
GETPUT:
LXI H,ERRMSG
CALL OUTMSG
CALL GETCHAR
CPI CR
JNZ REBOOT
;
; TYPED A CR, OK TO IGNORE
CALL CRLF
JMP RWSEC
;
TRYR
POP B ;RECALL TRAN(0),TRAN(SECTOR)
MOV A,C ;TRAN(SECTOR)
SUB B ;-TRAN(0)
CALL MULTSEC ;*SECTOR SIZE
XCHG ;TO DE
LOINT
;
RDOK:
XRA A
STA FCBCR ;CURRENT RECORD = 0
;
; PRE-READ AREA FROM TPA TO LOADP
;
MVI C,(LOADP-TPA)/SECSIZ
; PRS 0, 1, 2, . . . 25
STA SECTOR ;SECTOR INCREMENTED BEFORE READ OR WRITE
;
RWSEC: ;READ OR WRITE SECTOR
LDA SPT ;SECTORS PERACK
;
ENDRW: ;END OF READ OR WRITE, RETURN TO CALLER
RET
;
;
START:
;
LXI SP,STACK ;SET LOCAL STACK POINTER
LXI H,S; GET OR PUT CP/M (RW=0 FOR READ, 1 FOR WRITE)
; DISK IS ALREADY SELECTED
;
LXI H,LOADP ;LOAD POINT IN RAM FOR CP/M DURING SOK:
; OK TO TRY READ OR WRITE
INR A
STA RETRY ;RETRY=RETRY+1
LDA RW ;READ OR WRITE?
ORA A
JZ TRYREAD
;
; MUST BE WRHLD DMADDR ;BASE DMA ADDRESS FOR THIS TRACK
DAD D ;+(TRAN(SECTOR)-TRAN(0))*SECSIZ
MOV B,H
MOV C,L ;TO BC FOR SEC CALL
CAE-READ FILE
PRERD:
PUSH B ;SAVE COUNT
LXI D,FCB ;INPUT FILE CONTROL COUNT
CALL DREAD ;ASSUME SET TO DEFAULT BUFFER
POP R TRACK
LXI H,SECTOR
INR M ;TO NEXT SECTOR
CMP M ;A=26 AND M=0 1 2...25 (USUALLY)
JZ ENDTRK ;
;
; READ OR WRITE SECTORIGNON
CALL OUTMSG
;
; CHECK FOR DEFAULT FILE LOAD INSTEAD OF GET
;
LDA FCB+1 ;BLANK IF NO FILE
CPI ' '
JZ GETSYS ;SKIYSGEN
SHLD DMADDR
;
; CLEAR TRACK TO 00
MVI A,-1 ;START WITH TRACK EQUAL -1
STA TRACK
;
RWTRK: ;READ OR WRITE NEXT TRAITE
CALL WRITE
JMP CHKRW ;CHECK FOR ERROR RETURNS
TRYREAD:
CALL READ
CHKRW:
ORA A
JZ RWSEC ;ZERO FLAG IF R/W OK
;
B ;RESTORE COUNT
ORA A
JNZ BADRD ;CANNOT ENCOUNTER END-OF FILE
DCR C ;COUNT DOWN
JNZ PRERD ;FOR ANOTHER SECTOR
;
; SEC
JMP PUTSYS ;FOR ANOTHER PUT OPERATION
;
REBOOT:
MVI A,0
CALL SEL
CALL CRLF
JMP BOOT
BADDISK:
;BAD DISK NAME
LXIMSG
;
; PUT SYSTEM
PUTSYS:
LXI H,ASKPUT
CALL CRMSG
CALL GETCHAR
CPI CR
JZ REBOOT
SUI 'A'
CPI NDISKS
JC PUTC
ウ絃f<EFBFBD>%oメ<6F>Rh<52>6フ w塀 G"ケU&/ナコ;セイス (+エZ箪ウjツラ<EFBE82>ァオミマ1,ル梛[゙ョ嫖ツー<EFBE82><EFBDB0>&uj」<6A>m<>
<EFBFBD> <>6?rg<>W柄Jやクz{ア+ョ 8辻寺袗セ
|ワ<> ロ゚!<21>Z PUTSYS ;SKIP IF CR ONLY
;
SUI 'A' ;NORMALIZE DRIVE NUMBER
CPI NDISKS ;VALID DRIVE?
JC GETC ;SKIP TO GETC IF SO
;
;N COMPLETE',0
QDISK: DB 'INVALID DRIVE NAME (USE A, B, C, OR D)',0
NOFILE: DB 'NO SOURCE FILE ON DISK',0
BADFILE:
DB 'SOURCTORS SKIPPED AT BEGINNING OF FILE
;
LXI H,LOADP
RDINP:
PUSH H
MOV B,H
MOV C,L ;READY FOR DMA
CALL DMA ;DMA ADDRESS S H,QDISK
CALL CRMSG
RET
;
;
;
; DATA AREAS
; MESSAGES
SIGNON: DB 'SYSGEN VER '
DB VERS/10+'0','.',VERS MOD 10+'0'
;
; INVALID DRIVE NAME
CALL BADDISK
JMP PUTSYS ;TO TRY AGAIN
;
PUTC:
; SET DISK FROM REGISTER C
ADI 'A'
STA PDISK ;Mメヤ<EFBE92>磽hンウ<EFBE9D>レハ∪<>&[oーw<EFBDB0>キGw<47>Z<>jpf;ハ \銃<><E98A83>ョiak<61>lマE<EFBE8F>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サ槐Gイマ0オ<30>鮨ス INVALID DRIVE NUMBER
CALL BADDISK
JMP GETSYS ;TO TRY AGAIN
;
GETC:
; SELECT DISK GIVEN BY REGISTER A
ADI 'A'
STA GDE FILE INCOMPLETE',0
;
; VARIABLES
SDISK: DS 1 ;SELECTED DISK FOR CURRENT OPERATION
TRACK: DS 1 ;CURRENT TRACK
SECTOR: DS 1ET
LXI D,FCB ;READY FOR READ
CALL DREAD ;
POP H ;RECALL DMA ADDRESS
ORA A ;00 IF READ OK
JNZ PUTSYS ;ASSUME EOF IF NOTDB 0
ASKGET: DB 'SOURCE DRIVE NAME (OR RETURN TO SKIP)',0
GETMSG: DB 'SOURCE ON '
GDISK: DS 1 ;FILLED IN AT GET FUNCTION
DBESSAGE SET
SUI 'A'
CALL SEL ;SELECT DEST DRIVE
; PUT SYSTEM, SET RW TO WRITE
LXI H,PUTMSG
CALL CRMSG
CALL GETCHAR
C<>ハコツ慨ウ<E685A8>0$エ」ヲコミ6ヘラ典゙W)#ルgソウfz.トaJク]h*o+閥 セ7テ 治Z-<02><>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サ槐Gイマ0オ<30>鮨スISK ;TO SET MESSAGE
SUI 'A'
CALL SEL ;TO SELECT THE DRIVE
; GETSYS, SET RW TO READ AND GET THE SYSTEM
CALL CRLF
LXI H ;CURRENT SECTOR
RW: DS 1 ;READ IF 0, WRITE IF 1
DMADDR: DS 2 ;CURRENT DMA ADDRESS
RETRY: DS 1 ;NUMBER OF TRIES ON THIS SECTO.
; MORE TO READ, CONTINUE
LXI D,SECSIZ
DAD D ;HL IS NEW LOAD ADDRESS
JMP RDINP
;
BADRD: ;EOF ENCOUNTERED IN INPUT FILE ', THEN TYPE RETURN',0
ASKPUT: DB 'DESTINATION DRIVE NAME (OR RETURN TO REBOOT)',0
PUTMSG: DB 'DESTINATION ON '
PDISK: DS 1 PI CR
JNZ REBOOT
CALL CRLF
;
LXI H,RW
MVI M,1
CALL GETPUT ;TO PUT SYSTEM BACK ON DISKETTE
LXI H,DONE
CALL OUTMSG
-<1D>djー <20>ケqH╂A゙レヤ}mン蓁<EFBE9D>オQφ<51>l老dkィタ<EFBDA8>b<EFBFBD>各ノ<E59084>\Oclル<6C>=c<>
<EFBFBD>;n ネLi^ユ`A茲gqr<葭KヤGメ
<EFBFBD>
オk5オィⅲイ詫ロサノヨャシ<EFBFBD>2リl絋゚\uワヨ,GETMSG
CALL OUTMSG
CALL GETCHAR
CPI CR
JNZ REBOOT
CALL CRLF
;
XRA A
STA RW
CALL GETPUT
LXI H,DONE
CALL OUTR
DS STACKSIZE*2
STACK:
END
LXI H,BADFILE
CALL CRMSG
JMP REBOOT
;
;
GETSYS:
LXI H,ASKGET ;GET SYSTEM?
CALL CRMSG
CALL GETCHAR
CPI CR
J;FILLED IN AT PUT FUNCTION
DB ', THEN TYPE RETURN',0
ERRMSG: DB 'PERMANENT ERROR, TYPE RETURN TO IGNORE',0
DONE: DB 'FUNCTIO
マォム=Y&ル0ャQ゙:ネラQ€ソミa!エ<>Vウト#マコ蕗クス・(ク枩<05> ルイア <0B>$/o|hLチaォカf-=vワA<EFBE9C>ロq來 シ<>*qア<71>カオ涸茹雕ヤ3xノ「<00>4<EFBFBD> ィ若<0E>j
m=-租if
tstr <0cbh,040h>,03ef1h,09dfch,07acch,msbt,0be61h,07a86h,050h,024h,01998h
tstr <0,03fh>,0,0,0,0,0,0,053h,0,0 ; (1024 cyc db 0ffh ; flag mask
endif
tstr <0ddh,0cbh,1,046h>,02075h,msbt-1,msbt-1,03cfch,0a79ah,03d74h,051h,027h,0ca14h
tstr < tstr 027h,02141h,009fah,01d60h,0a559h,08d5bh,09079h,004h,08eh,0299dh
tstr 018h,0,0,0,0,0,0,0d7h,-1,0 ; (65,536 cycles)
tst,0,0> ; expected crc
tmsg 'aluop a,<ixh,ixl,iyh,iyl>'
; aluop a,(<ix,iy>+1) (229,376 cycles)
alu8x: db flgmask ; flag mas0,0 ; (6 cycles)
expcrc <0dah,057h,0c6h,079h>,<0d2h,012h,0a8h,042h>,<0,0,0,0> ; expected crc
tmsg 'cpd<r>'
; cpi<r> (1)l玲c\kkQ<6B>lab<61>0リ<30>Nl・{<7B><08><>トWeールニキ餘鏡ク<E98FA1><EFBFBD>bンレ-I胡|<7C>ヤLeMイaX:オQホ」シtヤサ0祀゚・A=リ勉、ムトmモヨ<EFBE93>Ci駛4nル<6E>g<EFBFBD>レ`クミD-s3
les)
tstr 0,0ffh,0,0,0,-1,-1,0,-1,0 ; (48 cycles)
if genz80
db 07bh,055h,0e6h,0c8h ; expected crc
else
db020h,0,0,038h>,0,0,0,0,0,0,053h,0,0 ; (256 cycles)
tstr 0,0ffh,0,0,0,0,0,0,0,0 ; (8 cycles)
if genz80
db 0a8h,0eeh,r 0,0,0,0,0,0,0,0,0,0 ; (1 cycle)
expcrc <06dh,02dh,0d2h,013h>,<09bh,04bh,0a6h,075h>,<090h,0d1h,064h,07fh> ; expected crc
k
tstr <0ddh,086h,1>,090b7h,msbt-1,msbt-1,032fdh,0406eh,0c1dch,045h,06eh,0e5fah
tstr <020h,038h>,0,1,1,0,0,0,0,-1,0 ; (16,3 (6144 cycles)
cpi1: db flgmask ; flag mask
tstr <0edh,0a1h>,04d48h,0af4ah,0906bh,msbt,04e71h,1,093h,06ah,0907ch
tstr <0,07h,04bh> ; expected crc
tmsg 'aluop a,<b,c,d,e,h,l,(hl),a>'
; aluop a,<ixh,ixl,iyh,iyl> (376,832 cycles)
alu8rx: db flgmas 05eh,002h,00eh,098h ; expected crc
endif
tmsg 'bit n,<b,c,d,e,h,l,(hl),a>'
; note that the CRC changes if some of008h,067h ; expected crc
else
db 083h,053h,04eh,0e1h ; expected crc
endif
tmsg 'bit n,(<ix,iy>+1)'
; bitmsg '<daa,cpl,scf,ccf>'
; <inc,dec> a (3072 cycles)
inca: db flgmask ; flag mask
tstr 03ch,04adfh,0d5d8h,0e598h,08a2bh,084 cycles)
tstr 0,0ffh,0,0,0,0,0,0d7h,0,0 ; (14 cycles)
expcrc <0d3h,0f2h,0d7h,04ah>,<0e8h,049h,067h,06eh>,<0,0,0,0> ; expe10h>,0,0,0,0,0,010,0,-1,0 ; (1024 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <02dh,0a4h,02dh,019h>,<006h,0dek ; flag mask
tstr <0ddh,084h>,0d6f7h,0c76eh,0accfh,02847h,022ddh,0c035h,0c5h,038h,0234bh
tstr <020h,039h>,0,0,0,0,0,0,0,-1 the code following the test area changes!
; cpd<r> (1) (6144 cycles)
cpd1: db flgmask ; flag mask
tstr <0edh,0a9h>,0c7b6h,t n,<b,c,d,e,h,l,(hl),a> (49,152 cycles)
bitz80: if genz80
db 053h ; flag mask
else
db 0ffh ; flag mask
enda7b0h,0431bh,044h,05ah,0d030h
tstr 001h,0,0,0,0,0,0,0,-1,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcted crc
tmsg 'aluop a,(<ix,iy>+1)'
; bit n,(<ix,iy>+1) (2048 cycles)
bitx: if genz80
db 053h ; flag mask
else
h,0b3h,056h>,<0,0,0,0> ; expected crc
tmsg 'cpi<r>'
; <daa,cpl,scf,ccf> (1) (65,536 cycles)
daa: db flgmask ; flag mask
,0 ; (8,192 cycles)
tstr 0,0ffh,0,0,0,-1,-1,0d7h,0,0 ; (46 cycles)
expcrc <0a8h,086h,0cch,044h>,<0a4h,002h,06dh,05ah>,<0,0072b4h,018f6h,msbt+17,08dbdh,1,0c0h,030h,094a3h
tstr <0,010h>,0,0,0,0,0,010,0,-1,0 ; (1024 cycles)
tstr 0,0,0,0,0,0,0,0d7h,crc <081h,0fah,081h,000h>,<0d1h,088h,015h,0a4h>,<037h,0b6h,01dh,0f1h> ; expected crc
tmsg '<inc,dec> a'
; <inc,dec> b (30720,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <0aeh,0c6h,0d4h,02ch>,<0aeh,0c6h,0d4h,02ch>,<0abh,0a9h,064h,0b1h> ; expected crc
tmcles)
incd: db flgmask ; flag mask
tstr 014h,0a0eah,05fbah,065fbh,0981ch,038cch,0debch,043h,05ch,003bdh
tstr 001h,0,0,0,0,'<inc,dec> hl'
; <inc,dec> ix (1536 cycles)
incix: db flgmask ; flag mask
tstr <0ddh,023h>,0bc3ch,00d9bh,0e081h,0adfdh,09,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <0d2h,0aeh,03bh,0ech>,<0d2h,0aeh,03bh,0ech>,<0aeh,08fh,0abh,065h> ; expected crc
h,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <056h,00fh,095h,05eh>,<01ch,0edh,084h,07dh>,<0 cycles)
incb: db flgmask ; flag mask
tstr 004h,0d623h,0432dh,07a61h,08180h,05a86h,01e85h,086h,058h,09bbbh
tstr 001h,0,0,0sg '<inc,dec> de'
; <inc,dec> e (3072 cycles)
ince: db flgmask ; flag mask
tstr 01ch,0602fh,04c0dh,02402h,0e2f5h,0a0f4h,00ff00h,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <0d1h,046h,0bfh,051h>,<045h,023h,0deh,010h>a7fh,096e5h,013h,085h,00be2h
tstr <0,8>,0,0,0f821h,0,0,0,0,0,0 ; (256 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
tmsg '<inc,dec> bc'
; <inc,dec> c (3072 cycles)
incc: db flgmask ; flag mask
tstr 00ch,0d789h,00935h,0055bh,09f85h,08b2797h,0bbh,07dh,04eh> ; expected crc
tmsg '<inc,dec> h'
; <inc,dec> hl (1536 cycles)
inchl: db flgmask ; flag mask
tstr 0,0,0,0ff00h,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <077h,0f3h,05ah,073h>,<05fh,068h,022h,06a10ah,013h,032h,05925h
tstr 001h,0,0,0,0,0ffh,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <0,<0b9h,078h,0deh,006h> ; expected crc
tmsg '<inc,dec> d'
; <inc,dec> de (1536 cycles)
incde: db flgmask ; flag mask
tstexpcrc <0a5h,04dh,0beh,031h>,<0a5h,04dh,0beh,031h>,<0,0,0,0> ; expected crc
tmsg '<inc,dec> ix'
; <inc,dec> iy (1536 cyclesh,0d208h,095h,005h,00660h
tstr 001h,0,0,0,0,0,0ffh,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc23h,0c3f4h,007a5h,01b6dh,04f04h,0e2c2h,0822ah,057h,0e0h,0c3e1h
tstr 008h,0,0,0,0f821h,0,0,0,0,0 ; (256 cycles)
tstr 0,0,0,04h>,<028h,063h,050h,047h> ; expected crc
tmsg '<inc,dec> b'
; <inc,dec> bc (1536 cycles)
incbc: db flgmask ; flag mask
cah,08ch,06ah,0c2h>,<0e1h,075h,0afh,0cch>,<0b5h,0fbh,083h,0abh> ; expected crc
tmsg '<inc,dec> e'
; <inc,dec> h (3072 cycler 013h,0342eh,0131dh,028c9h,00acah,09967h,03a2eh,092h,0f6h,09d54h
tstr 008h,0,0,0,0,0f821h,0,0,0,0 ; (256 cycles)
tstr 0,0,)
inciy: db flgmask ; flag mask
tstr <0fdh,023h>,09402h,0637ah,03182h,0c65ah,0b2e9h,0abb4h,016h,0f2h,06d05h
tstr <0,8>,0,0 <01ah,0f6h,012h,0a7h>,<0c2h,084h,055h,04ch>,<02ah,069h,06eh,04bh> ; expected crc
tmsg '<inc,dec> c'
; <inc,dec> d (3072 cy,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <0fch,00dh,06dh,04ah>,<0fch,00dh,06dh,04ah>,<089h,0b6h,06dh,0c8h> ; expected crc
tmsg tstr 003h,0cd97h,044abh,08dc9h,0e3e3h,011cch,0e8a4h,002h,049h,02a4dh
tstr 008h,0,0,0,0,0,0f821h,0,0,0 ; (256 cycles)
tstr 0s)
inch: db flgmask ; flag mask
tstr 024h,01506h,0f2ebh,0e8ddh,0262bh,011a6h,0bc1ah,017h,006h,02818h
tstr 001h,0,0,0,0ff00f821h,0,0,0,0,0,0,0 ; (256 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <050h,05dh,051h,0a3h>,<050h,05dh,051h,6d4h,03e01h,08358h,015b4h,081h,0deh,04259h
tstr <0,1>,0,0ff00h,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ;97h,03bh,09ch> ; expected crc
tmsg '<inc,dec> sp'
; <inc,dec> (<ix,iy>+1) (6144 cycles)
incx: db flgmask ; flag mask
tsycles)
expcrc <036h,0c1h,01eh,075h>,<0fbh,0cbh,0bah,095h>,<0,0,0,0> ; expected crc
tmsg '<inc,dec> iyl'
; ld <bc,de>,(nnn,05ch,01f37h
tstr 001h,0ffh,0,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <028h,029h,0mask
tstr <0ddh,024h>,02836h,09f6fh,09116h,061b9h,082cbh,0e219h,092h,073h,0a98ch
tstr <0,1>,0ff00h,0,0,0,0,0,0,0,0 ; (512 c0a3h>,<0,0,0,0> ; expected crc
tmsg '<inc,dec> iy'
; <inc,dec> l (3072 cycles)
incl: db flgmask ; flag mask
tstr 02ch,0 (6 cycles)
expcrc <06fh,046h,036h,062h>,<06fh,046h,036h,062h>,<0,0,0,0> ; expected crc
tmsg '<inc,dec> ixh'
; <inc,dec> tr <0ddh,034h,1>,0fa6eh,msbt-1,msbt-1,02c28h,08894h,05057h,016h,033h,0286fh
tstr <020h,1>,0ffh,0,0,0,0,0,0,0,0 ; (1024 cyclesn) (32 cycles)
ld161: db flgmask ; flag mask
tstr <0edh,04bh,low msbt,high msbt>,0f9a8h,0f559h,093a4h,0f5edh,06f96h,0d968h,05eh,0ceh>,<0b8h,03ah,0dch,0efh>,<092h,0ech,0d8h,0d4h> ; expected crc
tmsg '<inc,dec> (hl)'
; <inc,dec> sp (1536 cycles)
inycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <02dh,096h,06ch,0f3h>,<02dh,096h,06ch,0f3h>,<0,0,0,0> ; expected cr8031h,0a520h,04356h,0b409h,0f4c1h,0dfa2h,0d1h,03ch,03ea2h
tstr 001h,0,0,0,0ffh,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,ixl (3072 cycles)
incxl: db flgmask ; flag mask
tstr <0ddh,02ch>,04d14h,07460h,076d4h,006e7h,032a2h,0213ch,0d6h,0d7h,099a5h
)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <00bh,095h,0a8h,0eah>,<020h,058h,014h,070h>,<0,0,0,0> ; expected crc
t86h,0e6h,04bd8h
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,-1,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <04dh,045h,csp: db flgmask ; flag mask
tstr 033h,0346fh,0d482h,0d169h,0deb6h,0a494h,0f476h,053h,002h,0855bh
tstr 008h,0,0,0,0,0,0,0,0,c
tmsg '<inc,dec> iyh'
; <inc,dec> iyl (3072 cycles)
incyl: db flgmask ; flag mask
tstr <0ddh,02ch>,0d7c6h,062d5h,0a09e0d7h,0,0 ; (6 cycles)
expcrc <0a0h,0a1h,0b4h,09fh>,<056h,0cdh,006h,0f3h>,<082h,04dh,035h,04dh> ; expected crc
tmsg '<inc,d
tstr <0,1>,0,0ffh,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <002h,07bh,0efh,02ch>,<0msg '<inc,dec> (<ix,iy>+1)'
; <inc,dec> ixh (3072 cycles)
incxh: db flgmask ; flag mask
tstr <0ddh,024h>,0b838h,0316ch,0c0a9h,0ach>,<04dh,045h,0a9h,0ach>,<0,0,0,0> ; expected crc
tmsg 'ld <bc,de>,(nnnn)'
; ld hl,(nnnn) (16 cycles)
ld162: db fl0f821h ; (256 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <05dh,0ach,0d5h,027h>,<05dh,0ach,0d5h,027h>,<053h,0h,07039h,03e7eh,09f12h,090h,0d9h,0220fh
tstr <0,1>,0ffh,0,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cec> l'
; <inc,dec> (hl) (3072 cycles)
incm: db flgmask ; flag mask
tstr 034h,0b856h,00c7ch,0e53eh,msbt,0877eh,0da58h,015h02h,07bh,0efh,02ch>,<0,0,0,0> ; expected crc
tmsg '<inc,dec> ixl'
; <inc,dec> iyh (3072 cycles)
incyh: db flgmask ; flag gmask ; flag mask
tstr <02ah,low msbt,high msbt>,09863h,07830h,02077h,0b1feh,0b9fah,0abb8h,004h,006h,06015h
tstr 0,0,0,0,0,,<0eeh,02fh,081h,04eh> ; expected crc
tmsg 'ld (nnnn),hl'
; ld (nnnn),sp (16 cycles)
ld167: db flgmask ; flag mask
tstr8f61h,080h,03fh,0c7bfh
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,0,0,0,0,-1,-1,0,0,0 ; (32 cycles)
expcrc <06es)
ld16ix: db flgmask ; flag mask
tstr <0ddh,021h>,087e8h,02006h,0bd12h,0b69bh,07253h,0a1e5h,051h,013h,0f1bdh
tstr 020h,0d sp,(nnnn)'
; ld <ix,iy>,(nnnn) (32 cycles)
ld164: db flgmask ; flag mask
tstr <0ddh,02ah,low msbt,high msbt>,0ded7h,0a60 ; (32 cycles)
expcrc <0bah,010h,02ah,06bh>,<0bah,010h,02ah,06bh>,<0,0,0,0> ; expected crc
tmsg 'ld (nnnn),<ix,iy>'
; 0,0,0,0,0 ; (1 cycle)
tstr 0,-1,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <05fh,097h,024h,087h>,<05fh,097h,024h,087h>,<032h,0 <0edh,073h,low msbt,high msbt>,0c0dch,0d1d6h,0ed5ah,0f356h,0afdah,06ca7h,044h,09fh,03f0ah
tstr 0,0,0,0,0,0,0,0,0,0 ; (1 cyc4h,01eh,087h,015h>,<064h,01eh,087h,015h>,<0,0,0,0> ; expected crc
tmsg 'ld (nnnn),<bc,de>'
; ld (nnnn),hl (16 cycles)
ld16,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr <0,0,0ffh,0ffh>,0,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <022h,07dh,0d5h,025h>,<022h,07dhfah,0f780h,0244ch,087deh,0bcc2h,016h,063h,04c96h
tstr 020h,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,-1,0,0,0,0,0,0,0,0 ; (1ld <bc,de,hl,sp>,nnnn (64 cycles)
ld16im: db flgmask ; flag mask
tstr 1,05c1ch,02d46h,08eb9h,06078h,074b1h,0b30eh,046h,0d1h,c9h,06eh,011h> ; expected crc
tmsg 'ld hl,(nnnn)'
; ld sp,(nnnn) (16 cycles)
ld163: db flgmask ; flag mask
tstr <0edh,0le)
tstr 0,0,0,0,0,0,0,0,0,-1 ; (16 cycles)
expcrc <016h,058h,05fh,0d7h>,<016h,058h,05fh,0d7h>,<0,0,0,0> ; expected crc
6: db flgmask ; flag mask
tstr <022h,low msbt,high msbt>,0d003h,07772h,07f53h,03f72h,064eah,0e180h,010h,02dh,035e9h
tstr 0,,0d5h,025h>,<0,0,0,0> ; expected crc
tmsg 'ld <ix,iy>,nnnn'
; ld a,<(bc),(de)> (44 cycles)
ld8bd: db flgmask ; flag mask
6 cycles)
expcrc <085h,08bh,0f1h,06dh>,<085h,08bh,0f1h,06dh>,<0,0,0,0> ; expected crc
tmsg 'ld <ix,iy>,(nnnn)'
; ld (nnnn030cch
tstr 030h,0,0,0,0,0,0,0,0,0 ; (4 cycles)
tstr <0,0ffh,0ffh>,0,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <0deh,039h,017bh,low msbt,high msbt>,08dfch,057d7h,02161h,0ca18h,0c185h,027dah,083h,01eh,0f460h
tstr 0,0,0,0,0,0,0,0,0,0 ; (1 cycles)
ttmsg 'ld (nnnn),sp'
; ld (nnnn),<ix,iy> (64 cycles)
ld168: db flgmask ; flag mask
tstr <0ddh,022h,low msbt,high msbt>,06c0,0,0,0,0,0,0,0,0 ; (1 cycle)
tstr 0,0,0,0,-1,0,0,0,0,0 ; (16 cycles)
expcrc <0a3h,060h,08bh,047h>,<0a3h,060h,08bh,047h>
tstr 00ah,0b3a8h,01d2ah,07f8eh,042ach,msbt,msbt,0c6h,0b1h,0ef8eh
tstr 010h,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,0ffh,0,),<bc,de> (64 cycles)
ld165: db flgmask ; flag mask
tstr <0edh,043h,low msbt,high msbt>,01f98h,0844dh,0e8ach,0c9edh,0c95dh,09h,069h>,<0deh,039h,019h,069h>,<0d4h,016h,002h,072h> ; expected crc
tmsg 'ld <bc,de,hl,sp>,nnnn'
; ld <ix,iy>,nnnn (32 cyclstr 0,-1,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <07ah,0ceh,0a1h,01bh>,<07ah,0ceh,0a1h,01bh>,<0,0,0,0> ; expected crc
tmsg 'lc3h,00d91h,06900h,08ef8h,0e3d6h,0c3f7h,0c6h,0d9h,0c2dfh
tstr 020h,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,0,-1,-1,0,0,0,0,0,0,0,0,0,0d7h,-1,0 ; (22 cycles)
expcrc <0b0h,081h,089h,035h>,<0b0h,081h,089h,035h>,<026h,09fh,0d4h,028h> ; expected crc
tms>,0d8b6h,msbt-1,msbt-1,0c612h,0df07h,09cd0h,043h,0a6h,0a0e5h
tstr 020h,0,1,1,0,0,0,0,0,0 ; (8 cycles)
tstr 0,-1,0,0,0,0,0,06h,0a8h>,<0,0,0,0> ; expected crc
tmsg 'ld <b,c,d,e>,(<ix,iy>+1)'
; ld <h,l>,(<ix,iy>+1) (256 cycles)
ld8ix2: db flgmask h,03fh>,0,0,0,0,0,0,0,0,0 ; (128 cycles)
tstr 0,0ffh,0,0,0,-1,-1,0d7h,-1,0 ; (54 cycles)
expcrc <047h,08bh,0a3h,06bh>,<0470h,085h,0cd16h
tstr 020h,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr <0,0,0,-1>,0,0,0,0,0,0,0,-1,0 ; (16 cycles)
expcrc <026h,0,h,l,a> (3456 cycles)
ld8rr: db flgmask ; flag mask
tstr 040h,072a4h,0a024h,061ach,msbt,082c7h,0718fh,097h,08fh,0ef8eh
tstg 'ld a,<(bc),(de)>'
; ld <b,c,d,e,h,l,(hl),a>,nn (64 cycles)
ld8im: db flgmask ; flag mask
tstr 6,0c407h,0f49dh,0d13dh,00,0,0 ; (16 cycles)
expcrc <0a5h,0e9h,0ach,064h>,<0a5h,0e9h,0ach,064h>,<0,0,0,0> ; expected crc
tmsg 'ld a,(<ix,iy>+1)'
; flag mask
tstr <0ddh,066h,1>,084e0h,msbt-1,msbt-1,09c52h,0a799h,049b6h,093h,000h,0eeadh
tstr <020h,008h>,0,1,1,0,0,0,0,0,h,08bh,0a3h,06bh>,<0,0,0,0> ; expected crc
tmsg 'ld <bcdexya>,<bcdexya>'
; ld a,(nnnn) / ld (nnnn),a (44 cycles)
lda: db fdbh,047h,07eh>,<026h,0dbh,047h,07eh>,<0,0,0,0> ; expected crc
tmsg 'ld (<ix,iy>+1),nn'
; ld <b,c,d,e>,(<ix,iy>+1) (512 cyclr 03fh,0,0,0,0,0,0,0,0,0 ; (64 cycles)
tstr 0,0ffh,0,0,0,-1,-1,0d7h,-1,0 ; (54 cycles)
expcrc <074h,04bh,001h,018h>,<074h0339h,0de89h,07455h,053h,0c0h,05509h
tstr 038h,0,0,0,0,0,0,0,0,0 ; (8 cycles)
tstr 0,0,0,0,0,0,0,0,-1,0 ; (8 cycles)
e
; ld <ixh,ixl,iyh,iyl>,nn (32 cycles)
ld8ixy: db flgmask ; flag mask
tstr <0ddh,026h>,03c53h,04640h,0e179h,07711h,0c107h,010 ; (16 cycles)
tstr 0,-1,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <0fah,02ah,04dh,003h>,<0fah,02ah,04dh,003h>,<0,0,0,0> ; exlgmask ; flag mask
tstr <032h,low msbt,high msbt>,0fd68h,0f4ech,044a0h,0b543h,00653h,0cdbah,0d2h,04fh,01fd8h
tstr 008h,0,0,es)
ld8ix1: db flgmask ; flag mask
tstr <0ddh,046h,1>,0d016h,msbt-1,msbt-1,04260h,07f39h,00404h,097h,04ah,0d085h
tstr <020,04bh,001h,018h>,<06eh,0ech,0a2h,036h> ; expected crc
tmsg 'ld <bcdehla>,<bcdehla>'
; ld <b,c,d,e,ixy,a>,<b,c,d,e,ixy,a> (6xpcrc <0f1h,0dah,0b5h,056h>,<0f1h,0dah,0b5h,056h>,<0d1h,055h,074h,01bh> ; expected crc
tmsg 'ld <b,c,d,e,h,l,(hl),a>,nn'
; afah,081h,0adh,05d9bh
tstr <020h,8>,0,0,0,0,0,0,0,0,0 ; (4 cycles)
tstr 0,0,0,0,0,0,0,0,-1,0 ; (8 cycles)
expcrc <024h,pected crc
tmsg 'ld <h,l>,(<ix,iy>+1)'
; ld a,(<ix,iy>+1) (128 cycles)
ld8ix3: db flgmask ; flag mask
tstr <0ddh,07eh,10,0,0,0,0,0,0 ; (2 cycle)
tstr 0,0ffh,0,0,0,0,0,0d7h,-1,0 ; (22 cycles)
expcrc <0c9h,026h,02dh,0e5h>,<0c9h,026h,02dh,0e5hh,018h>,0,1,1,0,0,0,0,0,0 ; (32 cycles)
tstr 0,-1,0,0,0,0,0,0,0,0 ; (16 cycles)
expcrc <0cch,011h,006h,0a8h>,<0cch,011h,0912 cycles)
ld8rrx: db flgmask ; flag mask
tstr <0ddh,040h>,0bcc5h,msbt,msbt,msbt,02fc2h,098c0h,083h,01fh,03bcdh
tstr <020ld (<ix,iy>+1),nn (32 cycles)
ld8imx: db flgmask ; flag mask
tstr <0ddh,036h,1>,01b45h,msbt-1,msbt-1,0d5c1h,061c7h,0bdc4h,0c0e8h,082h,08bh>,<024h,0e8h,082h,08bh>,<0,0,0,0> ; expected crc
tmsg 'ld <ixh,ixl,iyh,iyl>,nn'
; ld <b,c,d,e,h,l,a>,<b,c,d,e>,<012h,02fh,0d8h,062h> ; expected crc
tmsg 'ld a,(nnnn) / ld (nnnn),a'
; ldd<r> (1) (44 cycles)
ldd1: db flgmask ; flag cted crc
tmsg 'neg'
; <rld,rrd> (7168 cycles)
rld: db flgmask ; flag mask
tstr <0edh,067h>,091cbh,0c48bh,0fa62h,msbt,0e,msbt,2,014h,02dh,0a39fh
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,-1,0,0,0,0,0,0d7h,0,0 ; (22 cycles)
expcrclag mask
tstr 0cbh,0ccebh,05d4ah,0e007h,msbt,01395h,030eeh,043h,078h,03dadh
tstr <0,03fh>,0,0,0,0,0,0,080h,0,0 ; (128 cycle,0ddh,03dh,0e1h>,<05ah,090h,07eh,0d4h>,<0,0,0,0> ; expected crc
tmsg 'ldd<r> (2)'
; ldi<r> (1) (44 cycles)
ldi1: db flgmas05bh,041h,0e3h,034h> ; expected crc
tmsg '<rlca,rrca,rla,rra>'
; shift/rotate (<ix,iy>+1) (416 cycles)
rotxy: db flgmask mask
tstr <0edh,0a8h>,09852h,068fah,066a1h,msbt+3,msbt+1,1,0c1h,068h,020b7h
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
720h,0b479h,040h,006h,08ae2h
tstr <0,8>,0ffh,0,0,0,0,0,0,0,0 ; (512 cycles)
tstr 0,0,0,0,0,0,0,0d7h,-1,0 ; (14 cycles)
<0e9h,0eah,0d0h,0aeh>,<0ebh,059h,089h,01bh>,<0,0,0,0> ; expected crc
tmsg 'ldi<r> (2)'
; neg (16,384 cycles)
neg: db flgms)
tstr 0,0ffh,0,0,0,-1,-1,057h,-1,0 ; (53 cycles)
expcrc <0a4h,025h,058h,033h>,<0ebh,060h,04dh,058h>,<0,0,0,0> ; expected k ; flag mask
tstr <0edh,0a0h>,0fe30h,003cdh,06058h,msbt+2,msbt,1,004h,060h,02688h
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cy; flag mask
tstr <0ddh,0cbh,1,6>,0ddafh,msbt-1,msbt-1,0ff3ch,0dbf6h,094f4h,082h,080h,061d9h
tstr <020h,0,0,038h>,0,0,0,0,0,0tstr 0,-1,0,0,0,0,0,0d7h,0,0 ; (22 cycles)
expcrc <094h,0f4h,027h,069h>,<094h,0f4h,027h,069h>,<0,0,0,0> ; expected crc
tmsexpcrc <0ffh,082h,03eh,077h>,<095h,05bh,0a3h,026h>,<0,0,0,0> ; expected crc
tmsg '<rrd,rld>'
; <rlca,rrca,rla,rra> (6144 cyask ; flag mask
tstr <0edh,044h>,038a2h,05f6bh,0d934h,057e4h,0d2d6h,04642h,043h,05ah,009cch
tstr 0,0,0,0,0,0,0,0d7h,-1,0 crc
tmsg 'shf/rot <b,c,d,e,h,l,(hl),a>'
; <set,res> n,<b,c,d,e,h,l,(hl),a> (7936 cycles)
srz80: db flgmask ; flag mask
cles)
tstr 0,-1,0,0,0,0,0,0d7h,0,0 ; (22 cycles)
expcrc <0f7h,082h,0b0h,0d1h>,<09ah,0bdh,0f6h,0b5h>,<0,0,0,0> ; expected c,080h,0,0 ; (32 cycles)
tstr 0,0ffh,0,0,0,0,0,057h,0,0 ; (13 cycles)
expcrc <071h,000h,034h,0cbh>,<071h,03ah,0cdh,081h>,<0,g 'ldd<r> (1)'
; ldd<r> (2) (44 cycles)
ldd2: db flgmask ; flag mask
tstr <0edh,0a8h>,0f12eh,0eb2ah,0d5bah,msbt+3,msbt+1,cles)
rot8080: db flgmask ; flag mask
tstr 7,0cb92h,06d43h,00a90h,0c284h,00c53h,0f50eh,091h,0ebh,040fch
tstr 018h,0,0,0,0,; (16,384 cycles)
tstr 0,0,0,0,0,0,0,0,0,0 ; (1 cycle)
expcrc <0d6h,038h,0ddh,06ah>,<06ah,03ch,03bh,0bdh>,<0,0,0,0> ; expetstr <0cbh,080h>,02cd5h,097abh,039ffh,msbt,0d14bh,06ab2h,053h,027h,0b538h
tstr <0,07fh>,0,0,0,0,0,0,0,0,0 ; (128 cycles)
tsrc
tmsg 'ldi<r> (1)'
; ldi<r> (2) (44 cycles)
ldi2: db flgmask ; flag mask
tstr <0edh,0a0h>,04aceh,0c26eh,0b188h,msbt+20,0,0> ; expected crc
tmsg 'shf/rot (<ix,iy>+1)'
; shift/rotate <b,c,d,e,h,l,(hl),a> (6784 cycles)
rotz80: db flgmask ; f2,047h,0ffh,0fbe4h
tstr <0,010h>,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0,-1,0,0,0,0,0,0d7h,0,0 ; (22 cycles)
expcrc <039h0,0,0,-1,0 ; (1024 cycles)
tstr 0,0,0,0,0,0,0,0d7h,0,0 ; (6 cycles)
expcrc <09bh,0a3h,080h,07ch>,<025h,013h,030h,0aeh>,<tr 0,0ffh,0,0,0,-1,-1,0d7h,-1,0 ; (62 cycles)
expcrc <08bh,057h,0f0h,008h>,<08bh,057h,0f0h,008h>,<0,0,0,0> ; expected crc
t 2,00c3bh,0b592h,06cffh,0959eh,msbt,msbt+1,0c1h,021h,0bde7h
tstr 018h,0,0,0,0,0,0,0,0,0 ; (4 cycles)
tstr 0,-1,0,0,0,0,0,0crc <06ah,01ah,088h,031h>,<06ah,01ah,088h,031h>,<0,0,0,0> ; expected crc
tmsg 'ld (<ix,iy>+1),<h,l>'
; ld (<ix,iy>+1),a (64 call initcrc ; initialise crc
; test loop
tlp: ld a,(iut)
cp 076h ; pragmatically avoid halt intructions
jp z,tlp2
anbt-1,msbt-1,0b73ah,0887bh,099eeh,086h,070h,0ca07h
tstr <020h,003h>,0,1,1,0,0,0,0,0,0 ; (32 cycles)
tstr 0,0,0,0,0,-1,-1,0,0sk+1),a
inc hl
push hl
ld de,20
add hl,de ; point to incmask
ld de,counter
call initmask
pop hl
push hl
ld demsg '<set,res> n,<bcdehl(hl)a>'
; <set,res> n,(<ix,iy>+1) (1792 cycles)
srzx: db flgmask ; flag mask
tstr <0ddh,0cbh,1,08,-1,0 ; (24 cycles)
expcrc <07ah,04ch,011h,04fh>,<07ah,04ch,011h,04fh>,<008h,0d8h,0e7h,03eh> ; expected crc
tmsg 'ld (<bc, cycles)
st8ix3: db flgmask ; flag mask
tstr <0ddh,077h,1>,067afh,msbt-1,msbt-1,04f13h,00644h,0bcd7h,050h,0ach,05fafh
tstrd 0dfh
cp 0ddh
jp nz,tlp1
ld a,(iut+1)
cp 076h
tlp1: call nz,test ; execute the test instruction
tlp2: call count ; ,0 ; (32 cycles)
expcrc <004h,062h,06ah,0bfh>,<004h,062h,06ah,0bfh>,<0,0,0,0> ; expected crc
tmsg 'ld (<ix,iy>+1),<b,c,d,e,20+20
add hl,de ; point to scanmask
ld de,shifter
call initmask
ld hl,shifter
ld (hl),1 ; first bit
pop hl
push6h>,0fb44h,msbt-1,msbt-1,0ba09h,068beh,032d8h,010h,05eh,0a867h
tstr <020h,0,0,078h>,0,0,0,0,0,0,0,0,0 ; (128 cycles)
tstr 0,de>),a'
;destination pointer in de, origin pointer in HL, number of bytes in bc
ldirX macro
local again
if isZ80
020h,0,1,1,0,0,0,0,0,0 ; (8 cycles)
tstr 0,0,0,0,0,0,0,0,-1,0 ; (8 cycles)
expcrc <0cch,0beh,05ah,096h>,<0cch,0beh,05ahincrement the counter
call nz,shift ; shift the scan bit
pop hl ; pointer to test case
jp z,tlp3 ; done if shift returne>'
; ld (<ix,iy>+1),<h,l> (256 cycles)
st8ix2: db flgmask ; flag mask
tstr <0ddh,074h,1>,0b664h,msbt-1,msbt-1,0e8ach,0b5f hl
ld de,iut ; copy initial instruction under test
ld bc,4
ldirX
ld de,msbt ; copy initial machine state
ld bc,16
0ffh,0,0,0,0,0,0d7h,0,0 ;(14 cycles)
expcrc <0cch,063h,0f9h,08ah>,<0cch,063h,0f9h,08ah>,<0,0,0,0> ; expected crc
tmsg '<setldir
else
again: ld a,(hl)
ld (de),a
inc hl
inc de
dec c
jp nz,again
endif
endm
; start test point,096h>,<0,0,0,0> ; expected crc
tmsg 'ld (<ix,iy>+1),a'
; ld (<bc,de>),a (96 cycles)
stabd: db flgmask ; flag mask
tstrd NZ
ld de,20+20+20
add hl,de ; point to expected crc
call cmpcrc
ld de,okmsg
jp z,tlpok
ld a,1 ; set error flag
5h,0aafeh,012h,010h,09566h
tstr <020h,001h>,0,1,1,0,0,0,0,0,0 ; (16 cycles)
tstr 0,0,0,0,-1,0,0,0,0,0 ; (32 cycles)
exp ldirX
ld de,20+20+4 ; skip incmask, scanmask and expcrc
add hl,de
ex de,hl
ld c,printst
call bdos ; show test name
,res> n,(<ix,iy>+1)'
; ld (<ix,iy>+1),<b,c,d,e> (1024 cycles)
st8ix1: db flgmask ; flag mask
tstr <0ddh,070h,1>,0270dh,msed to by (hl)
stt: push hl
ld a,(hl) ; get pointer to test
inc hl
ld h,(hl)
ld l,a
ld a,(hl) ; flag mask
ld (flgm ld (erfnd),a
ld de,ermsg1
ld c,printst
call bdos
call phex8
ld de,ermsg2
ld c,printst
call bdos
ld hl,crcval
a
rlca
ld (hl),a
cp 1
jp nz,ncb1
ld hl,(cntbyt)
inc hl
ld (cntbyt),hl
ncb1: ld a,b
and c
pop hl
pop bc
re shift mask
ld a,(hl)
cp 0
jp z,substr
ld b,8 ; 8 bits
sbshf1: rrca
push af
ld a,0
call c,nxtsbit ; get next shi(get byte offset)
ld l,a
ld h,0
ld a,d
and 7 ; bit offset
inc a
ld b,a
ld a,080h
imlp3: rlca
dec b
jp nz,imlof bytes
; hl = pointer to base case
; de = destination
setup: call subyte
inc hl
dec b
jp nz,setup
ret
subyte: pu
; initialise counter or shifter
; de = pointer to work area for counter or shifter
; hl = pointer to mask
initmask:
push dcall phex8
ld de,crlf
tlpok: ld c,printst
call bdos
pop hl
inc hl
inc hl
ret
tlp3: push hl
ld a,1 ; initialist z
ld a,1
ret
; get next shifter bit in low bit of a
shfbit: ds 1
shfbyt: ds 2
nxtsbit: push bc
push hl
ld hl,(fter bit if mask bit was set
xor c ; flip bit if shifter bit was set
rrca
ld c,a
pop af
dec b
jp nz,sbshf1
substr:p3
pop de
add hl,de
ld de,20
add hl,de
ld (hl),a
ret
; multi-byte counter
count: push bc
push de
push hl
lsh bc
push de
push hl
ld c,(hl) ; get base byte
ld de,20
add hl,de ; point to incmask
ld a,(hl)
cp 0
jp z,subse
ex de,hl
ld bc,20+20
call clrmem ; clear work area
ex de,hl
ld b,20 ; byte counter
ld c,1 ; first bit
ld d,0 e count and shift scanners
ld (cntbit),a
ld (shfbit),a
ld hl,counter
ld (cntbyt),hl
ld hl,shifter
ld (shfbyt),hl
shfbyt)
ld b,(hl)
ld hl,shfbit
ld a,(hl)
ld c,a
rlca
ld (hl),a
cp 1
jp nz,nsb1
ld hl,(shfbyt)
inc hl
ld (s pop hl
pop de
ld a,c
ld (de),a ; mangled byte to destination
inc de
pop bc
ret
; get next counter bit in low bid hl,counter ; 20 byte counter starts here
ld de,20 ; somewhere in here is the stop bit
ex de,hl
add hl,de
ex de,hl
cnhf
ld b,8 ; 8 bits
subclp: rrca
push af
ld a,0
call c,nxtcbit ; get next counter bit if mask bit was set
xor c ; fl ; bit counter
imlp: ld e,(hl)
imlp1: ld a,e
and c
jp z,imlp2
inc d
imlp2: ld a,c
rlca
ld c,a
cp 1
jp nz,imlp1
ld b,4 ; bytes in iut field
pop hl ; pointer to test case
push hl
ld de,iut
call setup ; setup iut
ld b,16 ; bytehfbyt),hl
nsb1: ld a,b
and c
pop hl
pop bc
ret z
ld a,1
ret
; clear memory at hl, bc bytes
clrmem: push af
t of a
cntbit: ds 1
cntbyt: ds 2
nxtcbit: push bc
push hl
ld hl,(cntbyt)
ld b,(hl)
ld hl,cntbit
ld a,(hl)
ld c,tlp: inc (hl)
ld a,(hl)
cp 0
jp z,cntlp1 ; overflow to next byte
ld b,a
ld a,(de)
and b ; test for terminal value
ip bit if counter bit was set
rrca
ld c,a
pop af
dec b
jp nz,subclp
ld b,8
subshf: ld de,20
add hl,de ; point to
inc hl
dec b
jp nz,imlp
; got number of 1-bits in mask in reg d
ld a,d
and 0f8h
rrca
rrca
rrca ; divide by 8 s in machine state
ld de,msbt
call setup ; setup machine state
jp tlp
; setup a field of the test case
; b = number push bc
push de
push hl
ld (hl),0
ld d,h
ld e,l
inc de
dec bc
ldirX
pop hl
pop de
pop bc
pop af
ret
jp z,cntend
ld (hl),0 ; reset to zero
cntend: pop bc
pop de
pop hl
ret
cntlp1: inc hl
inc de
jp cntlp
; mpsav ; save stack pointer
ld sp,msbt+2 ; point to test-case machine state
popiy ; and load all regs
popix
pop hl
po push ix
else
ld (temphl),hl
ld hl,0
push hl
ld hl,(temphl)
endif
endm
pushiy macro
if isz80ds 2 ; saved stack pointer
if isZ80 eq 0
temphl: ds 2
endif
; display hex string (pointer in hl, byte count in if isz80
ld sp,(nn)
else
ld (temphl),hl
ld hl,(nn)
ld sp,hl
ld hl,(temphl)
endif
endm
ldnnsp macro nt
ld hl,crcval
tcrc: ld a,(de)
inc de
call updcrc ; accumulate crc of this test case
dec b
jp nz,tcrc
if traculti-byte shifter
shift: push bc
push de
push hl
ld hl,shifter ; 20 byte shift register starts here
ld de,20 ; somewhep de
pop bc
pop af
ldspnn spbt
iut: ds 4 ; max 4 byte instruction under test
ldnnsp spat ; save stack pointer
ld sp
push iy
else
ld (temphl),hl
ld hl,0
push hl
ld hl,(temphl)
endif
endm
; test harness
test b)
hexstr: ld a,(hl)
call phex2
inc hl
dec b
jp nz,hexstr
ret
; display hex
; display the big-endian 32-bit valun
if isz80
ld (nn),sp ; save stack pointer
else
ld (temphl),hl
ld hl,0
add hl,sp
ld (nn),hl ; save stack pe
ld e,' '
ld c,conout
call bdos
ld hl,crcval
call phex8
ld de,crlf
ld c,printst
call bdos
ld hl,msat
ld b,1re in here is the stop bit
ex de,hl
add hl,de
ex de,hl
shflp: ld a,(hl)
or a
jp z,shflp1
ld b,a
ld a,(de)
and b,spat
push af ; save other registers
push bc
push de
push hl
pushix
pushiy
ldspnn spsav ; restore stack pointer
: push af
push bc
push de
push hl
if trace
ld de,crlf
ld c,printst
call bdos
ld hl,iut
ld b,4
call hexse pointed to by hl
phex8: push af
push bc
push hl
ld b,4
ph8lp: ld a,(hl)
call phex2
inc hl
dec b
jp nz,ph8lp
ointer
ld hl,(temphl)
endif
endm
popix macro
if isz80
pop ix
else
pop hl
endif
en6
call hexstr
ld de,crlf
ld c,printst
call bdos
endif
pop hl
pop de
pop bc
pop af
ret
; machine stat
jp nz,shlpe
ld a,b
rlca
cp 1
jp nz,shflp2
ld (hl),0
inc hl
inc de
shflp2: ld (hl),a
xor a ; set Z
shlpe: p
ei ; enable interrupts
ld hl,(msbt) ; copy memory operand
ld (msat),hl
ld hl,flgsat ; flags after test
ld a,(hl)
fltr
ld e,' '
ld c,conout
call bdos
ld b,16
ld hl,msbt
call hexstr
endif
di ; disable interrupts
ldnnsp spop hl
pop bc
pop af
ret
; display byte in a
phex2: push af
rrca
rrca
rrca
rrca
call phex1
pop af
; fall dm
popiy macro
if isz80
pop iy
else
pop hl
endif
endm
pushix macro
if isz80
e after test
msat: ds 14 ; memop,iy,ix,hl,de,bc,af
spat: ds 2 ; stack pointer after test
flgsat equ spat-2 ; flags
spsav: op hl
pop de
pop bc
ret
shflp1: inc hl
inc de
jp shflp
counter: ds 2*20
shifter: ds 2*20
ldspnn macro nn
gmsk: and 0d7h ; mask-out irrelevant bits (self-modified code!)
ld (hl),a
ld b,16 ; total of 16 bytes of state
ld de,msathrough
; display low nibble in a
phex1: push af
push bc
push de
push hl
and 0fh
cp 10
jp c,ph11
add a,'a'-'9'rclp
if 0
ld hl,crcval
call phex8
ld de,crlf
ld c,printst
call bdos
endif
pop hl
pop de
pop bc
pains next byte, hl points to crc
; exit: crc updated
updcrc: push af
push bc
push de
push hl
push hl
ld de,3
add b 04ch,069h,010h,05eh
db 0d5h,060h,041h,0e4h
db 0a2h,067h,071h,072h
db 03ch,003h,0e4h,0d1h
db 04bh,004h,0d4h,047h
db 0,lf,'$'
ermsg1: db ' ERROR **** crc expected:$'
ermsg2: db ' found:$'
crlf: db cr,lf,'$'
erfnd: db 0 ; set to 1 if error f4ch,02bh
db 07eh,0b1h,07ch,0bdh
db 0e7h,0b8h,02dh,007h
db 090h,0bfh,01dh,091h
db 01dh,0b7h,010h,064h
db 06ah,0b0h,020h-1
ph11: add a,'0'
ld e,a
ld c,conout
call bdos
pop hl
pop de
pop bc
pop af
ret
bdos: push af
push bc
puop af
ret
initcrc:push af
push bc
push hl
ld hl,crcval
ld a,0ffh
ld b,4
icrclp: ld (hl),a
inc hl
dec b
jp hl,de ; point to low byte of old crc
xor (hl) ; xor with new byte
ld l,a
ld h,0
add hl,hl ; use result as index into tabd2h,00dh,085h,0fdh
db 0a5h,00ah,0b5h,06bh
db 035h,0b5h,0a8h,0fah
db 042h,0b2h,098h,06ch
db 0dbh,0bbh,0c9h,0d6h
db 0achound
nsw: db 0
allok: db 'All tests successful.',cr,lf,'$'
erfndt: db 'Some failure detected.',cr,lf,'$'
; compare crc
; ,0f2h
db 0f3h,0b9h,071h,048h
db 084h,0beh,041h,0deh
db 01ah,0dah,0d4h,07dh
db 06dh,0ddh,0e4h,0ebh
db 0f4h,0d4h,0b5h,05sh de
push hl
call bdosO
pop hl
pop de
pop bc
pop af
ret
if isz80
msg1: db 'Z80 instruction exerciser',cnz,icrclp
pop hl
pop bc
pop af
ret
crcval: ds 4
crctab: db 000h,000h,000h,000h
db 077h,007h,030h,096h
db 0eeh,le of 4 byte entries
add hl,hl
ex de,hl
ld hl,crctab
add hl,de ; point to selected entry in crctab
ex de,hl
pop hl
,0bch,0f9h,040h
db 032h,0d8h,06ch,0e3h
db 045h,0dfh,05ch,075h
db 0dch,0d6h,00dh,0cfh
db 0abh,0d1h,03dh,059h
db 026h,0dhl points to value to compare to crcval
cmpcrc: push bc
push de
push hl
ld de,crcval
ld b,4
cclp: ld a,(de)
cp (hl)
1h
db 083h,0d3h,085h,0c7h
db 013h,06ch,098h,056h
db 064h,06bh,0a8h,0c0h
db 0fdh,062h,0f9h,07ah
db 08ah,065h,0c9h,0ech
r,lf
if genz80
db 'Undefined status bits NOT taken into account'
else
db 'Undefined status bits taken into acc00eh,061h,02ch
db 099h,009h,051h,0bah
db 007h,06dh,0c4h,019h
db 070h,06ah,0f4h,08fh
db 0e9h,063h,0a5h,035h
db 09eh,064 ld bc,4 ; c = byte count, b = accumulator
crclp: ld a,(de)
xor b
ld b,(hl)
ld (hl),a
inc de
inc hl
dec c
jp nz,c9h,030h,0ach
db 051h,0deh,000h,03ah
db 0c8h,0d7h,051h,080h
db 0bfh,0d0h,061h,016h
db 021h,0b4h,0f4h,0b5h
db 056h,0b3h,
jp nz,cce
inc hl
inc de
dec b
jp nz,cclp
cce: pop hl
pop de
pop bc
ret
; 32-bit crc routine
; entry: a cont
db 014h,001h,05ch,04fh
db 063h,006h,06ch,0d9h
db 0fah,00fh,03dh,063h
db 08dh,008h,00dh,0f5h
db 03bh,06eh,020h,0c8h
dount'
endif
db cr,lf,'$'
else
msg1: db '8080 instruction exerciser',cr,lf,'$'
endif
okmsg: db ' OK',crh,095h,0a3h
db 00eh,0dbh,088h,032h
db 079h,0dch,0b8h,0a4h
db 0e0h,0d5h,0e9h,01eh
db 097h,0d2h,0d9h,088h
db 009h,0b6h,00c4h,023h
db 0cfh,0bah,095h,099h
db 0b8h,0bdh,0a5h,00fh
db 028h,002h,0b8h,09eh
db 05fh,005h,088h,008h
db 0c6h,00ch,0d9 05eh,0deh,0f9h,00eh
db 029h,0d9h,0c9h,098h
db 0b0h,0d0h,098h,022h
db 0c7h,0d7h,0a8h,0b4h
db 059h,0b3h,03dh,017h
db 020h,0e2h
db 04ah,0dfh,0a5h,041h
db 03dh,0d8h,095h,0d7h
db 0a4h,0d1h,0c4h,06dh
db 0d3h,0d6h,0f4h,0fbh
db 043h,069h,0e9h,3fh,0b5h,006h,0ddh
db 048h,0b2h,036h,04bh
db 0d8h,00dh,02bh,0dah
db 0afh,00ah,01bh,04ch
db 036h,003h,04ah,0f6h
db 041h0e6h,063h,05ch,001h
db 06bh,06bh,051h,0f4h
db 01ch,06ch,061h,062h
db 085h,065h,030h,0d8h
db 0f2h,062h,000h,04eh
db 06c,0d2h
db 01eh,001h,0f2h,068h
db 069h,006h,0c2h,0feh
db 0f7h,062h,057h,05dh
db 080h,065h,067h,0cbh
db 019h,06ch,036h,07h,0b2h
db 0b1h,00bh,0e9h,024h
db 02fh,06fh,07ch,087h
db 058h,068h,04ch,011h
db 0c1h,061h,01dh,0abh
db 0b6h,066h,02dh,0eh,0b4h,00dh,081h
db 0b7h,0bdh,05ch,03bh
db 0c0h,0bah,06ch,0adh
db 0edh,0b8h,083h,020h
db 09ah,0bfh,0b3h,0b6h
db 003h,06ah
db 034h,06eh,0d9h,0fch
db 0adh,067h,088h,046h
db 0dah,060h,0b8h,0d0h
db 044h,004h,02dh,073h
db 033h,003h,01dh,0e5,004h,07ah,060h
db 0dfh,060h,0efh,0c3h
db 0a8h,067h,0dfh,055h
db 031h,06eh,08eh,0efh
db 046h,069h,0beh,079h
db 0cbh,06h,006h,095h,0edh
db 01bh,001h,0a5h,07bh
db 082h,008h,0f4h,0c1h
db 0f5h,00fh,0c4h,057h
db 065h,0b0h,0d9h,0c6h
db 012h,01h
db 06eh,06bh,006h,0e7h
db 0feh,0d4h,01bh,076h
db 089h,0d3h,02bh,0e0h
db 010h,0dah,07ah,05ah
db 067h,0ddh,04ah,0cch
3dh
db 076h,0dch,041h,090h
db 001h,0dbh,071h,006h
db 098h,0d2h,020h,0bch
db 0efh,0d5h,010h,02ah
db 071h,0b1h,085h,089h0b6h,0e2h,00ch
db 074h,0b1h,0d2h,09ah
db 0eah,0d5h,047h,039h
db 09dh,0d2h,077h,0afh
db 004h,0dbh,026h,015h
db 073h,0dch
db 0aah,00ah,04ch,05fh
db 0ddh,00dh,07ch,0c9h
db 050h,005h,071h,03ch
db 027h,002h,041h,0aah
db 0beh,00bh,010h,010h
1h,0b3h,08ch
db 0bch,066h,083h,01ah
db 025h,06fh,0d2h,0a0h
db 052h,068h,0e2h,036h
db 0cch,00ch,077h,095h
db 0bbh,00bh,b7h,0e9h,050h
db 08bh,0beh,0b8h,0eah
db 0fch,0b9h,088h,07ch
db 062h,0ddh,01dh,0dfh
db 015h,0dah,02dh,049h
db 08ch,0d3h
db 0f9h,0b9h,0dfh,06fh
db 08eh,0beh,0efh,0f9h
db 017h,0b7h,0beh,043h
db 060h,0b0h,08eh,0d5h
db 0d6h,0d6h,0a3h,0e8h
d
db 006h,0b6h,0b5h,01fh
db 09fh,0bfh,0e4h,0a5h
db 0e8h,0b8h,0d4h,033h
db 078h,007h,0c9h,0a2h
db 00fh,000h,0f9h,034h
h,016h,083h
db 0e3h,063h,00bh,012h
db 094h,064h,03bh,084h
db 00dh,06dh,06ah,03eh
db 07ah,06ah,05ah,0a8h
db 0e4h,00eh,0 db 0c9h,00ch,020h,086h
db 057h,068h,0b5h,025h
db 020h,06fh,085h,0b3h
db 0b9h,066h,0d4h,009h
db 0ceh,061h,0e4h,09fh
db047h,003h
db 022h,002h,016h,0b9h
db 055h,005h,026h,02fh
db 0c5h,0bah,03bh,0beh
db 0b2h,0bdh,00bh,028h
db 02bh,0b4h,05a,07ch,0f3h
db 0fbh,0d4h,04ch,065h
db 04dh,0b2h,061h,058h
db 03ah,0b5h,051h,0ceh
db 0a3h,0bch,000h,074h
db 0d4h,0bbh,03b 0a1h,0d1h,093h,07eh
db 038h,0d8h,0c2h,0c4h
db 04fh,0dfh,0f2h,052h
db 0d1h,0bbh,067h,0f1h
db 0a6h,0bch,057h,067h
db 0db 096h,009h,0a8h,08eh
db 0e1h,00eh,098h,018h
db 07fh,06ah,00dh,0bbh
db 008h,06dh,03dh,02dh
db 091h,064h,06ch,097h
db cfh,00bh
db 093h,009h,0ffh,09dh
db 00ah,000h,0aeh,027h
db 07dh,007h,09eh,0b1h
db 0f0h,00fh,093h,044h
db 087h,008h,0a3hh,092h
db 05ch,0b3h,06ah,004h
db 0c2h,0d7h,0ffh,0a7h
db 0b5h,0d0h,0cfh,031h
db 02ch,0d9h,09eh,08bh
db 05bh,0deh,0aeh,03h,00ch,08eh,0a1h
db 05ah,005h,0dfh,01bh
db 02dh,002h,0efh,08dh
end
04ah
db 0d9h,0d6h,05ah,0dch
db 040h,0dfh,00bh,066h
db 037h,0d8h,03bh,0f0h
db 0a9h,0bch,0aeh,053h
db 0deh,0bbh,09eh,0c5 ; HERE TO DECREASE THE SYSGEN TIME FOR MISSED SECTORS
; WHEN SLOW CONTROLLERS ARE INVOLVED. TRANSLATIONh,0beh,016h,0cdh
db 0f6h,0b9h,026h,05bh
db 06fh,0b0h,077h,0e1h
db 018h,0b7h,047h,077h
db 088h,008h,05ah,0e6h
db 0ffh,0; (8 cycles)
expcrc <0f1h,0dah,0b5h,056h>,<0f1h,0dah,0b5h,056h>,<0d1h,055h,074h,01bh> ; expected crc
tmsg 'ld <b,c,d,e,h,l1dh
db 09bh,064h,0c2h,0b0h
db 0ech,063h,0f2h,026h
db 075h,06ah,0a3h,09ch
db 002h,06dh,093h,00ah
db 09ch,009h,006h,0a9hmask
tstr 00ah,0b3a8h,01d2ah,07f8eh,042ach,msbt,msbt,0c6h,0b1h,0ef8eh
tstr 010h,0,0,0,0,0,0,0,0,0 ; (2 cycles)
tstr 0h
db 047h,0b2h,0cfh,07fh
db 030h,0b5h,0ffh,0e9h
db 0bdh,0bdh,0f2h,01ch
db 0cah,0bah,0c2h,08ah
db 053h,0b3h,093h,030h
TAKES
; PLACE ACCORDING TO THE "SKEW" FACTOR SET ABOVE.
;
0128 02 OST: DB NTRKS ;OPE0fh,06ah,070h
db 066h,006h,03bh,0cah
db 011h,001h,00bh,05ch
db 08fh,065h,09eh,0ffh
db 0f8h,062h,0aeh,069h
db 061h,06bh,(hl),a>,nn'
; ld (<ix,iy>+1),nn (32 cycles)
ld8imx: db flgmask ; flag mask
tstr <0ddh,036h,1>,01b45h,msbt-1,msbt-1,0
db 0ebh,00eh,036h,03fh
db 072h,007h,067h,085h
db 005h,000h,057h,013h
db 095h,0bfh,04ah,082h
db 0e2h,0b8h,07ah,014h
,0ffh,0,0,0,0,0,0d7h,-1,0 ; (22 cycles)
expcrc <0b0h,081h,089h,035h>,<0b0h,081h,089h,035h>,<026h,09fh,0d4h,028h> ; expected db 024h,0b4h,0a3h,0a6h
db 0bah,0d0h,036h,005h
db 0cdh,0d7h,006h,093h
db 054h,0deh,057h,029h
db 023h,0d9h,067h,0bfh
dbRATING SYSTEM TRACKS
0129 1A SPT: DB NSECTS ;SECTORS PER TRACK (CAN BE PATCHED)
TRAN: ;BASE OF TRANS,0ffh,0d3h
db 016h,06ch,0cfh,045h
db 0a0h,00ah,0e2h,078h
db 0d7h,00dh,0d2h,0eeh
db 04eh,004h,083h,054h
db 039h,003h,0bN
;
0100 ORG TPA ;TRANSIENT PROGRAM AREA
0100 C37402 JMP START
0103 434F505952 DB 'COPYRIGdb 07bh,0b1h,02bh,0aeh
db 00ch,0b6h,01bh,038h
db 092h,0d2h,08eh,09bh
db 0e5h,0d5h,0beh,00dh
db 07ch,0dch,0efh,0b7h
db crc
tmsg 'ld a,<(bc),(de)>'
; ld <b,c,d,e,h,l,(hl),a>,nn (64 cycles)
ld8im: db flgmask ; flag mask
tstr 6,0c407h,0 0b3h,066h,07ah,02eh
db 0c4h,061h,04ah,0b8h
db 05dh,068h,01bh,002h
db 02ah,06fh,02bh,094h
db 0b4h,00bh,0beh,037h
db 0cLATE TABLE
0001 # TRELT SET 1 ;FIRST/NEXT TRAN ELEMENT
0001 # TRBASE SET 1 ;BASE FOR WRAPAROUND
3h,0c2h
db 0a7h,067h,026h,061h
db 0d0h,060h,016h,0f7h
db 049h,069h,047h,04dh
db 03eh,06eh,077h,0dbh
db 0aeh,0d1h,06ah,HT (C) 1978, DIGITAL RESEARCH '
;
; TRANSLATE TABLE - SECTOR NUMBERS ARE TRANSLATED
00bh,0dbh,0dfh,021h
db 086h,0d3h,0d2h,0d4h
db 0f1h,0d4h,0e2h,042h
db 068h,0ddh,0b3h,0f8h
db 01fh,0dah,083h,06eh
db 081f49dh,0d13dh,00339h,0de89h,07455h,053h,0c0h,05509h
tstr 038h,0,0,0,0,0,0,0,0,0 ; (8 cycles)
tstr 0,0,0,0,0,0,0,0,-1,0 REPT NSECTS ;ONCE FOR EACH SECTOR ON A TRACK
DB TRELT ;GENERATE FIRST/NEXT SECTOR
CP/M MACRO ASSEM 2.0ERATE FIRST/NEXT SECTOR
0142+12 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0143+18 DB TRELT ;GENERATE FIRST/NEXT S DB TRELT ;GENERATE FIRST/NEXT SECTOR
0139+0A DB TRELT ;GENERATE FIRST/NEXT SECTOR
013A+10 DB TRELT ;GENE DB 0
0165+00 DB 0
0166+00 DB 0
0167+00 DB 0
0168+00 DB 0
0169+00 DB 0
OR
012F+02 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0130+08 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0131+0E +00 DB 0
0152+00 DB 0
0153+00 DB 0
0154+00 DB 0
0155+00 DB 0
CP/M MACRO ASSEM #002 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
TRELT SET TRELT+SKEW
IF TRELT GT NSECTS
ECTOR
;
; NOW LEAVE SPACE FOR EXTENSIONS TO TRANSLATE TABLE
IF NSECTS LT 64
RATE FIRST/NEXT SECTOR
013B+16 DB TRELT ;GENERATE FIRST/NEXT SECTOR
013C+05 DB TRELT ;GENERATE FIRST/NEXT SE ;
;
;
;
; UTILITY SUBROUTINES
DB TRELT ;GENERATE FIRST/NEXT SECTOR
0132+14 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0133+1A DB TRELT ;GENER2.0 #003 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
0156+00 DB 0
0157+00 DB 0
0158+00 DB 0
0159+00 TRBASE SET TRBASE+1
TRELT SET TRBASE
ENDIF
ENDM
012A+01
REPT 64-NSECTS
DB 0
ENDM
0144+00 DB 0
0145+00 DB 0
0CTOR
013D+0B DB TRELT ;GENERATE FIRST/NEXT SECTOR
013E+11 DB TRELT ;GENERATE FIRST/NEXT SECTOR
013F+17 MULTSEC:
;MULTIPLY THE SECTOR NUMBER IN A BY THE SECTOR SIZE
016A 6F2600 MOV L,A! MVI H,0 ;SECTOR NUMBATE FIRST/NEXT SECTOR
0134+03 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0135+09 DB TRELT ;GENERATE FIRST/NEXT SEC DB 0
015A+00 DB 0
015B+00 DB 0
015C+00 DB 0
015D+00 DB 0
015E+00 DB 0 DB TRELT ;GENERATE FIRST/NEXT SECTOR
012B+07 DB TRELT ;GENERATE FIRST/NEXT SECTOR
012C+0D DB TRELT ;GENERA146+00 DB 0
0147+00 DB 0
0148+00 DB 0
0149+00 DB 0
014A+00 DB 0
014B+00 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0140+06 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0141+0C DB TRELT ;GENER IN HL
REPT LOG2SEC ;LOG 2 OF SECTOR SIZE
DAD H
ENDM
016D+29 DTOR
0136+0F DB TRELT ;GENERATE FIRST/NEXT SECTOR
0137+15 DB TRELT ;GENERATE FIRST/NEXT SECTOR
0138+04
015F+00 DB 0
0160+00 DB 0
0161+00 DB 0
0162+00 DB 0
0163+00 DB 0
0164+00 TE FIRST/NEXT SECTOR
012D+13 DB TRELT ;GENERATE FIRST/NEXT SECTOR
012E+19 DB TRELT ;GENERATE FIRST/NEXT SECT DB 0
014C+00 DB 0
014D+00 DB 0
014E+00 DB 0
014F+00 DB 0
0150+00 DB 0
0151AD H
016E+29 DAD H
016F+29 DAD H
0170 C9 RET ;WITH HL = SECTOR * SECTOR SIZE
;
PCHL ;GONE TO SETTRK
;
SEC: ;SET UP SECTOR NUMBER
01B3 2A0100 LHLD WBOOT
01B6 111E00 MOV A,M! ORA A! RZ
; MESSAGE NOT YET COMPLETED
0199 E5CD7F01E1 PUSH H! CALL PUTCHAR! POP H! INX H
019FINT IN RAM FOR CP/M DURING SYSGEN
01E0 22A604 SHLD DMADDR
CP/M MACRO ASSEM 2.0 #005 SYSGEN - SYSTEM GENERATION PROGRAM 8! RET
;
CRLF: ;SEND CARRIAGE RETURN, LINE FEED
0186 3E0D MVI A,CR
0188 CD7F01 CAT
01CE 112700 LXI D,WRITF
01D1 19 DAD D
01D2 E9 PCHL
;
DREAD: ;DISK GETCHAR:
; READ CONSOLE CHARACTER TO REGISTER A
0171 0E01CD0500 MVI C,CONI! CALL BDOS!
LXI D,SETSEC
01B9 19 DAD D
01BA E9 PCHL
;
DMA: ;SET DMA ADDRESS TO VA C39601 JMP OUTMSG
;
SEL:
; SELECT DISK GIVEN BY REGISTER A
01A2 4F2A01/79
;
; CLEAR TRACK TO 00
01E3 3EFF MVI A,-1 ;START WITH TRACK EQUAL -1
01E5 32A304LL PUTCHAR
018B 3E0A MVI A,LF
018D CD7F01 CALL PUTCHAR
0190 C9 RET
;
CP/M MACRO ASSEMREAD FUNCTION
01D3 0E14 MVI C,DREADF
01D5 C30500 JMP BDOS
;
OPEN: ;FILE OPEN FUN ; CONVERT TO UPPER CASE BEFORE RETURN
0176 FE61D8 CPI 'A' OR 20H ! RC ;RETURN IF BELOW LOWER CASE A
0179 FE7B LUE OF B,C
01BB 2A0100 LHLD WBOOT
01BE 112100 LXI D,SETDMA
01C1 19 DAD D
01C2 E9 PCHL
0011 MOV C,A! LHLD WBOOT! LXI D,SELDSK! DAD D! PCHL
;
TRK: ;SET UP TRACK
01AB 2A0100 LHL STA TRACK
;
RWTRK: ;READ OR WRITE NEXT TRACK
01E8 21A304 LXI H,TRACK
01EB 34 2.0 #004 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
CRMSG: ;PRINT MESSAGE ADDRESSED BY H,L TIL ZERO
CTION
01D8 0E0FC30500 MVI C,OPENF ! JMP BDOS
;
GETPUT:
; GET OR PUT CP/M (R CPI ('Z' OR 20H) + 1
017B D0 RNC ;RETURN IF ABOVE LOWER CASE Z
017C E65FC9 ANI 5FH! RET
; ;
READ: ;PERFORM READ OPERATION
01C3 2A0100 LHLD WBOOT
01C6 112400 LXI D,READF
01C9 19 D WBOOT ;ADDRESS OF BOOT ENTRY
01AE 111B00 LXI D,SETTRK ;OFFSET FOR SETTRK ENTRY
01B1 19 DAD D
01B2 E9 INR M ;TRACK = TRACK + 1
01EC 3A2801 LDA OST ;NUMBER OF OPERATING SYSTEM TRACKS
01EF BE CMP M ;= TRACK NUMBE ;WITH LEADING CRLF
0191 E5CD8601E1 PUSH H! CALL CRLF! POP H ;DROP THRU TO OUTMSG0
OUTMSG:
0196 7EB7C8W=0 FOR READ, 1 FOR WRITE)
; DISK IS ALREADY SELECTED
;
01DD 210009 LXI H,LOADP ;LOAD PO
PUTCHAR:
; WRITE CHARACTER FROM A TO CONSOLE
017F 5F0E02CD05 MOV E,A! MVI C,CONO! CALL BDOS DAD D
01CA E9 PCHL
;
WRITE: ;PERFORM WRITE OPERATON
01CB 2A0100 LHLD WBOOR ?
01F0 CA7302 JZ ENDRW ;END OF READ OR WRITE
;
; OTHERWISE NOTDONE, GO TO NEXT TRACK
93
:1002400003CD8601C3FC013C32A8043AA504B7CA19
:100250005802CDCB01C35B02CDC301B7CAFC01C3B9
:100260002B023A2901CD6A01EB2AA6041DCD7F013E0ACD7F0197
:10019000C9E5CD8601E17EB7C8E5CD7F01E123C386
:1001A00096014F2A010011180019E92A0100111BBC
:1001B0000019E92A0230 DA4702 JC TRYOK
;
; PAST MAXTRIES, MESSAGE AND IGNORE
0233 211404 LXI H,ERRMSG
D OR WRITE SECTOR TO OR FROM CURRENT DMA ADDR
0207 21A404 LXI H,SECTOR
020A 5E MOV E,M ;SECTOR NUMBER
020B 160LHLD DMADDR ;BASE DMA ADDRESS FOR THIS TRACK
0221 19 DAD D ;+(TRAN(SECTOR)-TRAN(0))*SECSIZ
0222 44 MOV B,H
01F3 4E MOV C,M ;TRACK NUMBER
01F4 CDAB01 CALL TRK ;TO SET TRACK
01F7 3EFF MVI A,-1 ;COUNTS 0, 1, 2, . . 0 MVI D,0 ;TO DE
020D 212A01 LXI H,TRAN
0210 46 MOV B,M ;TRAN(0) IN B
0211 19 DAD D ;SECTOR TRAN0100111E0019E92A0100112184
:1001C0000019E92A010011240019E92A0100112768
:1001D0000019E90E14C305000E0FC3050021000924
:1001E0002
CP/M MACRO ASSEM 2.0 #006 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
0236 CD9601 CALL OUTMSG
0239 CD7101 CALL GETCHA:10010000C37402434F505952494748542028432949
:1001100020313937382C204449474954414C20522A
:100120004553454152434820021A01070D131 0223 4D MOV C,L ;TO BC FOR SEC CALL
0224 CDBB01 CALL DMA ;DMA ADDRESS SET FROM B,C
; DMA ADDRESS. 25
01F9 32A404 STA SECTOR ;SECTOR INCREMENTED BEFORE READ OR WRITE
;
RWSEC: ;READ OR WSLATED
0212 4E MOV C,M ;VALUE TO C READY FOR SELECT
0213 C5 PUSH B ;SAVE TRAN(0),TRAN(SECTOR)
0214 CDB301 2A6043EFF32A30421A304343A2801BE10
:1001F000CA73024ECDAB013EFF32A4043A2901215D
:10020000A40434BECA620221A4045E1600212A019D
:10R
023C FE0D CPI CR
023E C25F03 JNZ REBOOT
;
; TYPED A CR, OK TO IGNORE
0241 CD90255
:10013000080E141A03090F15040A1016050B1117DF
:10014000060C121800000000000000000000000073
:100150000000000000000000000000 SET, CLEAR RETRY COUNT
0227 AF XRA A
0228 32A804 STA RETRY ;SET TO ZERO RETRIES
;
RITE SECTOR
01FC 3A2901 LDA SPT ;SECTORS PER TRACK
01FF 21A404 LXI H,SECTOR
0202 34 INR M ;TO NEXT SECTOR
CALL SEC ;SET UP SECTOR NUMBER
0217 C1 POP B ;RECALL TRAN(0),TRAN(SECTOR)
0218 79 MOV A,C ;TRAN(SECTOR)
02100046194EC5CDB301C17990CD6A01EB2AA62E
:100220000419444DCDBB01AF32A8043AA804FE0A1C
:10023000DA4702211404CD9601CD7101FE0DC25F8601 CALL CRLF
0244 C3FC01 JMP RWSEC
;
TRYOK:
; OK TO TRY READ OR W00000000009F
:10016000000000000000000000006F26002929297F
:10017000C90E01CD0500FE61D8FE7BD0E65FC95FE8
:100180000E02CD0500C93E0 TRYSEC: ;TRY TO READ OR WRITE CURRENT SECTOR
022B 3AA804 LDA RETRY
022E FE0A CPI MAXTRY ;TOO MANY RETRIES?
0203 BE CMP M ;A=26 AND M=0 1 2...25 (USUALLY)
0204 CA6202 JZ ENDTRK ;
;
; REA
0219 90 SUB B ;-TRAN(0)
021A CD6A01 CALL MULTSEC ;*SECTOR SIZE
021D EB XCHG ;TO DE
021E 2AA604 RITE
0247 3C INR A
0248 32A804 STA RETRY ;RETRY=RETRY+1
024B 3AA504 LDA RW ;READ OR WRITE?
024E B7 JNZ RDOK ;OK TO READ IF NOT 255
;
; FILE NOT PRESENT, ERROR AND REBOOT
;
02TACK POINTER
0277 217103 LXI H,SIGNON
027A CD9601 CALL OUTMSG
;
; CHECK FOR DEFAUL MOV B,H
02B3 4D MOV C,L ;READY FOR DMA
02B4 CDBB01 CALL DMA ;DMA ADDRESS SET
02B7 115C00 LXI D,FCB ;READYT ;SECTORS PER TRACK
0265 CD6A01 CALL MULTSEC ;*SECSIZ
0268 EB XCHG ;TO DE
0269 2AA604 LHLD DMADDR ;BASE UNT
029F 115C00 LXI D,FCB ;INPUT FILE CONTROL COUNT
02A2 CDD301 CALL DREAD ;ASSUME SET TO DEFAULT BUFFER
02A5 C1 ORA A
024F CA5802 JZ TRYREAD
;
; MUST BE WRITE
0252 CDCB01 CALL WRITE
0255 C38F 217404 LXI H,NOFILE
0292 CD9101 CALL CRMSG
0295 C35F03 JMP REBOOT
;
; FILE T FILE LOAD INSTEAD OF GET
;
027D 3A5D00 LDA FCB+1 ;BLANK IF NO FILE
0280 FE20 CPI ' '
0282 CAD FOR READ
02BA CDD301 CALL DREAD ;
02BD E1 POP H ;RECALL DMA ADDRESS
02BE B7 ORA A ;00 IF READ OK
02DMA FOR THIS TRACK
026C 19 DAD D ;+SPT*SECSIZ
026D 22A604 SHLD DMADDR ;READY FOR NEXT TRACK
0270 C3E801 JM POP B ;RESTORE COUNT
02A6 B7 ORA A
02A7 C2C902 JNZ BADRD ;CANNOT ENCOUNTER END-OF FILE
02AA 0D 5B02 JMP CHKRW ;CHECK FOR ERROR RETURNS
TRYREAD:
0258 CDC301 CALL READ
CHKRW:
025BPRESENT
; READ TO LOAD POINT
;
RDOK:
0298 AF XRA A
0299 327C00 202 JZ GETSYS ;SKIP TO GET SYSTEM MESSAGE IF BLANK
0285 115C00 LXI D,FCB ;TRY TO OPEN IT
0288 CDD801 CALL OPEN ;BF C21803 JNZ PUTSYS ;ASSUME EOF IF NOT.
; MORE TO READ, CONTINUE
02C2 118000 LXI D,SECSIZ
02C5 19 P RWTRK ;FOR ANOTHER TRACK
;
ENDRW: ;END OF READ OR WRITE, RETURN TO CALLER
0273 C9 DCR C ;COUNT DOWN
02AB C29E02 JNZ PRERD ;FOR ANOTHER SECTOR
;
; SECTORS SKIPPED AT BEGIN B7 ORA A
025C CAFC01 JZ RWSEC ;ZERO FLAG IF R/W OK
;
; ERROR, RETRY OPERATION
STA FCBCR ;CURRENT RECORD = 0
;
; PRE-READ AREA FROM TPA TO LOADP
;
029
CP/M MACRO ASSEM 2.0 #007 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
028B 3C INR A ;255 BECOMES 00
028C C29802 DAD D ;HL IS NEW LOAD ADDRESS
02C6 C3B102 JMP RDINP
;
BADRD: ;EOF ENCOUNTERED INRET
;
;
START:
;
0274 31C904 LXI SP,STACK ;SET LOCAL SNING OF FILE
;
02AE 210009 LXI H,LOADP
RDINP:
02B1 E5 PUSH H
02B2 44 025F C32B02 JMP TRYSEC
;
; END OF TRACK
ENDTRK:
0262 3A2901 LDA SPC 0E10 MVI C,(LOADP-TPA)/SECSIZ
; PRE-READ FILE
PRERD:
029E C5 PUSH B ;SAVE CO INPUT FILE
02C9 218B04 LXI H,BADFILE
02CC CD9101 CALL CRMSG
02CF C35F03 JMP REBOOT
D641CDA201CD860121A603CD960142
:10030000CD7101FE0DC25F03CD8601AF32A504CDD4
:10031000DD01213B04CD960121C403CD9101CD71B6
:10032 CPI CR
0305 C25F03 JNZ REBOOT
0308 CD8601 CALL CRLF
;
030B AF XRA A
030C 32A504 SYS ;TO TRY AGAIN
;
PUTC:
; SET DISK FROM REGISTER C
0333 C641 ADI 'AUMBER
02E7 CD6A03 CALL BADDISK
02EA C3D202 JMP GETSYS ;TO TRY AGAIN
;
GETC:
STA RW
030F CDDD01 CALL GETPUT
0312 213B04 LXI H,DONE
0315 CD9601 CALL OUTMSG
;
;
;
GETSYS:
CP/M MACRO ASSEM 2.0 #008 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
0200001FE0DCA5F03D641FE04DA3303CD6A0332
:10033000C31803C641320004D641CDA20121F10306
:10034000CD9101CD7101FE0DC25F03CD860121A5C6
922A60421
:10027000C3E801C931C904217103CD96013A5D007B
:10028000FE20CAD202115C00CDD8013CC2980221E6
:100290007404CD9101C35F03AF'
0335 320004 STA PDISK ;MESSAGE SET
0338 D641 SUI 'A'
033A CDA201 CALL SEL ;SELECT DEST DRIVE
CP/M MACRO ; SELECT DISK GIVEN BY REGISTER A
02ED C641 ADI 'A'
02EF 32B003 STA GDISK ;TO SET MESSAGE
02F2 D641 ; PUT SYSTEM
PUTSYS:
0318 21C403 LXI H,ASKPUT
031B CD9101 CALL CRMSG
031E CD7101 CALLD2 218003 LXI H,ASKGET ;GET SYSTEM?
02D5 CD9101 CALL CRMSG
02D8 CD7101 CALL GETCHAR
02DB FE0D CPI CR
0
:10035000043601CDDD01213B04CD9601C318033ED7
:1003600000CDA201CD8601C30000214D04CD910135
:10037000C953595347454E2056455220322E327C000E10C51111
:1002A0005C00CDD301C1B7C2C9020DC29E022100BC
:1002B00009E5444DCDBB01115C00CDD301E1B7C2CE
:1002C00018031180001ASSEM 2.0 #009 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
; PUT SYSTEM, SET RW TO WRITE
033D 21F103 LXI H,P SUI 'A'
02F4 CDA201 CALL SEL ;TO SELECT THE DRIVE
; GETSYS, SET RW TO READ AND GET THE SYSTEM
0 GETCHAR
0321 FE0D CPI CR
0323 CA5F03 JZ REBOOT
0326 D641 SUI 'A'
0328 FE04 CPI NDISKS
032A DA332DD CA1803 JZ PUTSYS ;SKIP IF CR ONLY
;
02E0 D641 SUI 'A' ;NORMALIZE DRIVE NUMBER
02E2 FE04 30001E
:10038000534F55524345204452495645204E414D06
:100390004520284F522052455455524E20544F204C
:1003A000534B49502900534F555249C3B102218B04CD9101C321
:1002D0005F03218003CD9101CD7101FE0DCA18038A
:1002E000D641FE04DAED02CD6A03C3D202C6413222
:1002F000B003UTMSG
0340 CD9101 CALL CRMSG
0343 CD7101 CALL GETCHAR
0346 FE0D CPI CR
0348 C25F03 JNZ REBOOT
034B C2F7 CD8601 CALL CRLF
02FA 21A603 LXI H,GETMSG
02FD CD9601 CALL OUTMSG
0300 CD7101 CALL GETCHAR
0303 FE0D03 JC PUTC
;
; INVALID DRIVE NAME
032D CD6A03 CALL BADDISK
0330 C31803 JMP PUT CPI NDISKS ;VALID DRIVE?
02E4 DAED02 JC GETC ;SKIP TO GETC IF SO
;
; INVALID DRIVE N345204F4E203F
:1003B1002C205448454E20545950452052455455FF
:1003C100524E0044455354494E4154494F4E2044E6
:1003D10052495645204E41D8601 CALL CRLF
;
034E 21A504 LXI H,RW
0351 3601 MVI M,1
0353 CDDD01 CALL GETPUT ;TO PUARIABLES
0462 SDISK: DS 1 ;SELECTED DISK FOR CURRENT OPERATION
0463 TRACK: DS 1 ;CURRENT TRACK
0464 54E20545950452052455455AE
:10041100524E005045524D414E454E542045525288
:100421004F522C20545950452052455455524E207C
:1004310054E IF 1
04A6 DMADDR: DS 2 ;CURRENT DMA ADDRESS
04A8 RETRY: DS 1 ;NUMBER OF TRIES ON THIS SECTOR
04A9 A AREAS
; MESSAGES
0371 5359534745SIGNON: DB 'SYSGEN VER '
037C 322E30 DB VERS/10+'0','.',VERS MOD 10+'ETURN TO IGNORE',0
043B 46554E4354DONE: DB 'FUNCTION COMPLETE',0
044D 494E56414CQDISK: DB 'INVALID DRIVE NAME (USE A, B, C, T SYSTEM BACK ON DISKETTE
0356 213B04 LXI H,DONE
0359 CD9601 CALL OUTMSG
035C C31803 JMP PUTSYS ;FOR ANOTHER P SECTOR: DS 1 ;CURRENT SECTOR
0465 RW: DS 1 ;READ IF 0, WRITE IF 1
0466 DMADDR: DS 2 ;CURRENT DMA4F2049474E4F52450046554E4354496B
:100441004F4E20434F4D504C45544500494E564167
:100451004C4944204452495645204E414D4520289F
:100 DS STACKSIZE*2
CP/M MACRO ASSEM 2.0 #010 SYSGEN - SYSTEM GENERATION PROGRAM 8/79
STACK:
B04C9 0'
037F 00 DB 0
0380 534F555243ASKGET: DB 'SOURCE DRIVE NAME (OR RETURN TO SKIP)',0
03A6 534F555243GETMSG: DB 'SOUOR D)',0
0474 4E4F20534FNOFILE: DB 'NO SOURCE FILE ON DISK',0
BADFILE:
048B 534F555243 DB 'SOURCE FILE INCOUT OPERATION
;
REBOOT:
035F 3E00 MVI A,0
0361 CDA201 CALL SEL
0364 CD8601 ADDRESS
0468 RETRY: DS 1 ;NUMBER OF TRIES ON THIS SECTOR
0469 DS STACKSIZE*2
STACK:
4610055534520412C20422C20432C204F522013
:100471004429004E4F20534F555243452046494C85
:1004810045204F4E204449534B00534F555243454 END
RCE ON '
03B0 GDISK: DS 1 ;FILLED IN AT GET FUNCTION
03B1 2C20544845 DB ', THEN TYPE RETURN',0
03C4 4445535449ASMPLETE',0
;
; VARIABLES
04A2 SDISK: DS 1 ;SELECTED DISK FOR CURRENT OPERATION
04CALL CRLF
0367 C30000 JMP BOOT
BADDISK:
;BAD DISK NAME
036A 214D04 LXI H,QDISK
KPUT: DB 'DESTINATION DRIVE NAME (OR RETURN TO REBOOT)',0
03F1 4445535449PUTMSG: DB 'DESTINATION ON '
0400 PDISK: D
:100491002046494C4520494E434F4D504C4554450B
:0104A100005A
:0000000000
02ah
db 071h,0b1h,085h,089h
db 006h,0b6h,0b5h,01fh
db 09fh,0bfh,0e4h,0a5h
db 0e8h,0b8h,0d4h,033h
db 078h,007h,0c94D4520284F5220524505
:1003E1005455524E20544F205245424F4F542900EC
:0F03F10044455354494E4154494F4E204F4E20DE
:100401002C2054484A3 TRACK: DS 1 ;CURRENT TRACK
04A4 SECTOR: DS 1 ;CURRENT SECTOR
04A5 RW: DS 1 ;READ IF 0, WRIT036D CD9101 CALL CRMSG
0370 C9 RET
;
;
;
; DATDS 1 ;FILLED IN AT PUT FUNCTION
0401 2C20544845 DB ', THEN TYPE RETURN',0
0414 5045524D41ERRMSG: DB 'PERMANENT ERROR, TYPE Rh,0a2h
db 00fh,000h,0f9h,034h
db 096h,009h,0a8h,08eh
db 0e1h,00eh,098h,018h
db 07fh,06ah,00dh,0bbh
db 008h,06dh,0EAD
022B TRYSEC 0014 VERS 0001 WBOOT 01CB WRITE 0027 WRITF
0004 NDISKS
0474 NOFILE 001A NSECTS 0002 NTRKS 01D8 OPEN 000F OPENF
0128 OST 0196 OUTMSG 0400 PDISK 029E PRERD 017F PUTCHAR
0
db 0bbh,00bh,047h,003h
db 022h,002h,016h,0b9h
db 055h,005h,026h,02fh
db 0c5h,0bah,03bh,0beh
db 0b2h,0bdh,00bh,028hh,0b5h,051h,0ceh
db 0a3h,0bch,000h,074h
db 0d4h,0bbh,030h,0e2h
db 04ah,0dfh,0a5h,041h
db 03dh,0d8h,095h,0d7h
db 0h,0d1h,093h,07eh
db 038h,0d8h,0c2h,0c4h
db 04fh,0dfh,0f2h,052h
db 0d1h,0bbh,067h,0f1h
db 0a6h,0bch,057h,067h
db 03dh,02dh
db 091h,064h,06ch,097h
db 0e6h,063h,05ch,001h
db 06bh,06bh,051h,0f4h
db 01ch,06ch,061h,062h
db 085h,065hffh,09dh
db 00ah,000h,0aeh,027h
db 07dh,007h,09eh,0b1h
db 0f0h,00fh,093h,044h
db 087h,008h,0a3h,0d2h
db 01eh,001h333 PUTC 03F1 PUTMSG 0318 PUTSYS 044D QDISK 02B1 RDINP
0298 RDOK 0024 READF 01C3 READ 035F REBOOT 04A8 RETRY
04A5 RW 01FC RWS
db 02bh,0b4h,05ah,092h
db 05ch,0b3h,06ah,004h
db 0c2h,0d7h,0ffh,0a7h
db 0b5h,0d0h,0cfh,031h
db 02ch,0d9h,09eh,080380 ASKGET 03C4 ASKPUT 036A BADDISK 048B BADFILE 02C9 BADRD
0005 BDOS 0000 BOOT 025B CHKRW 0001 CONI 0002 CONO
000D CR 0186 3fh,0b5h,006h,0ddh
db 048h,0b2h,036h,04bh
db 0d8h,00dh,02bh,0dah
db 0afh,00ah,01bh,04ch
db 036h,003h,04ah,0f6h
db,030h,0d8h
db 0f2h,062h,000h,04eh
db 06ch,006h,095h,0edh
db 01bh,001h,0a5h,07bh
db 082h,008h,0f4h,0c1h
db 0f5h,00,0f2h,068h
db 069h,006h,0c2h,0feh
db 0f7h,062h,057h,05dh
db 080h,065h,067h,0cbh
db 019h,06ch,036h,071h
db 06eh,06EC 01E8 RWTRK 04A2 SDISK 01B3 SEC
0080 SECSIZ 04A4 SECTOR 0018 SELDSK 000E SELF 01A2 SEL
0021 SETDMA 001E SETSEC 001B SETTRK 0bh
db 05bh,0deh,0aeh,01dh
db 09bh,064h,0c2h,0b0h
db 0ech,063h,0f2h,026h
db 075h,06ah,0a3h,09ch
db 002h,06dh,093h,CRLF 0191 CRMSG 01BB DMA 04A6 DMADDR
043B DONE 0014 DREADF 01D3 DREAD 0273 ENDRW 0262 ENDTRK
0414 ERRMSG 005C FCB 007C FCBCR 0 041h,004h,07ah,060h
db 0dfh,060h,0efh,0c3h
db 0a8h,067h,0dfh,055h
db 031h,06eh,08eh,0efh
db 046h,069h,0beh,079h
fh,0c4h,057h
db 065h,0b0h,0d9h,0c6h
db 012h,0b7h,0e9h,050h
db 08bh,0beh,0b8h,0eah
db 0fch,0b9h,088h,07ch
db 062h,bh,006h,0e7h
db 0feh,0d4h,01bh,076h
db 089h,0d3h,02bh,0e0h
db 010h,0dah,07ah,05ah
db 067h,0ddh,04ah,0cch
db 0f9h,371 SIGNON 0006 SKEW
0129 SPT 04C9 STACK 0010 STACKSIZE 0274 START 0100 TPA
04A3 TRACK 012A TRAN 01AB TRK 0247 TRYOK 0258 TRYR00ah
db 09ch,009h,006h,0a9h
db 0ebh,00eh,036h,03fh
db 072h,007h,067h,085h
db 005h,000h,057h,013h
db 095h,0bfh,04a3B0 GDISK 02ED GETC
0171 GETCHAR 03A6 GETMSG 01DD GETPUT 02D2 GETSYS 000A LF
0900 LOADP 0003 LOG2SEC 000A MAXTRY 016A MULTSEC db 0cbh,061h,0b3h,08ch
db 0bch,066h,083h,01ah
db 025h,06fh,0d2h,0a0h
db 052h,068h,0e2h,036h
db 0cch,00ch,077h,095h
0ddh,01dh,0dfh
db 015h,0dah,02dh,049h
db 08ch,0d3h,07ch,0f3h
db 0fbh,0d4h,04ch,065h
db 04dh,0b2h,061h,058h
db 03a0b9h,0dfh,06fh
db 08eh,0beh,0efh,0f9h
db 017h,0b7h,0beh,043h
db 060h,0b0h,08eh,0d5h
db 0d6h,0d6h,0a3h,0e8h
db 0a1h,082h
db 0e2h,0b8h,07ah,014h
db 07bh,0b1h,02bh,0aeh
db 00ch,0b6h,01bh,038h
db 092h,0d2h,08eh,09bh
db 0e5h,0d5h,0ニL<00><>ク餐iX*!Hx f修ツp<04>#[2隊[4<>a<>€#ヲyna僮タEエY」ミ<EFBDA3><EFBE90>[イ€i8€$` リ&€0`<11>Q€W`<14>V÷s`<1D>€㌔ <20> VA€
db 0cdh,0d7h,006h,093h
db 054h,0deh,057h,029h
db 023h,0d9h,067h,0bfh
db 0b3h,066h,07ah,02eh
db 0c4h,061h,04ah,0b8h。ワ3<>'AクX(OテI艚+界ツ疳ク\. <0B>疳ク\$)イネト|<7C>@0 <09><>=園ネ~L<03><03><><EFBFBD>€<1F><01><18>'AクX<1 bh,00dh,0d2h,0eeh
db 04eh,004h,083h,054h
db 039h,003h,0b3h,0c2h
db 0a7h,067h,026h,061h
db 0d0h,060h,016h,0f7h
db 0g<01>\. <0B>疳ク\$kア€"<?マFヨ<46>カ)<05> ヒ$(<28><01><1F>5タ <20>0M⑳yタ@a債疳ク\. <0B>疳ク\. <0B>疳ク\$k<>beh,00dh
db 07ch,0dch,0efh,0b7h
db 00bh,0dbh,0dfh,021h
db 086h,0d3h,0d2h,0d4h
db 0f1h,0d4h,0e2h,042h
db 068h,0ddh」`)<29>
ム€キ`,<2C> 操軈8<E8BB88>V<>`A<>Q<>`D<>V3`M<>`P<>VA…`Y<>ム『`\<5C>V`e<>早ァ`hkサH@<06>'巌C葺|<7C>
エム%<25>0p
db 05dh,068h,01bh,002h
db 02ah,06fh,02bh,094h
db 0b4h,00bh,0beh,037h
db 0c3h,00ch,08eh,0a1h
db 05ah,005h,0dfh,01テ ーハ,4
っA<EFBFBD>リ)Gツ疳ク\$kサU ル雫9=<3D>@
<EFBFBD>0
4<EFBFBD> <00><01>5タH$ィ!A睚|. <0B>疳ク\. <0B>疳ク\. <0B>疳49h,069h,047h,04dh
db 03eh,06eh,077h,0dbh
db 0aeh,0d1h,06ah,04ah
db 0d9h,0d6h,05ah,0dch
db 040h,0dfh,00bh,066h
db<00>:+的€0%ニfS4kオh<EFBDB5><01><03><03><><EFBFBD>オタ<03> M⑳yタ@a Bテーネ,2<>
テ`ーPh6
E<EFBFBD><11>\$kキP€ンャncウユбCtD5`1G€,0b3h,0f8h
db 01fh,0dah,083h,06eh
db 081h,0beh,016h,0cdh
db 0f6h,0b9h,026h,05bh
db 06fh,0b0h,077h,0e1h
db 018h,0b!|<0F><><EFBFBD><EFBFBD>オタ<0F>ヘ 臼 &Cー訝1巡チーxb1<62> <0C>a<EFBFBD>リ,9<>ツ疳ク\$k<>譜ヌb 哘ィーfBア嵶蛮タ!|bh
db 02dh,002h,0efh,08dh
end
ク\$kサT  哽W墺0 ト<>$ヘGト€ <00><01>5タシウ+黛ネ|. <0B>疳ク\. <0B>疳ク\. <0B>疳ク\$k佳B<><04><>)m 037h,0d8h,03bh,0f0h
db 0a9h,0bch,0aeh,053h
db 0deh,0bbh,09eh,0c5h
db 047h,0b2h,0cfh,07fh
db 030h,0b5h,0ffh,0e9h
r<01><03><03><><EFBFBD>オタ<02>m-M⑳yタ@a
'ァーメx6
'邸ーメy6<0F>疳ク\$kキPタ€€/ム尊€ワ`閃マァ(€p<01>7h,047h,077h
db 088h,008h,05ah,0e6h
db 0ffh,00fh,06ah,070h
db 066h,006h,03bh,0cah
db 011h,001h,00bh,05ch
db 08fh,<0F><><EFBFBD><EFBFBD>オタ<0F>Dハ鵫L<><01>リ,恵テ!嚢h6 g<01>\. <0B>疳ク\$kキA アコ蚤フm1叮ヤ }%
Qー`<00>?゚<><03><><EFBFBD>オタ<0F> <><EFBDB2><EFBFBD> ホ%<19>S;哢<>3A畔 :。タタ@p9フfS厠゙rABB吁メt1<74> ヲAミ゙  タ與1儂g3yネ\
 チ@安テ-€Gチ0<EFBE81>モ <0C>!瀾%<25>=+yHノムH`]<5D>l岬:<3A> <0C>ーニp6 f30ーニc3<0F>疳ク\. <0B>疳ク\$k<>|蛮jヲ「エRチN!<21> C€db 0bdh,0bdh,0f2h,01ch
db 0cah,0bah,0c2h,08ah
db 053h,0b3h,093h,030h
db 024h,0b4h,0a3h,0a6h
db 0bah,0d0h,036h,005h
<03>5タ<03>暖7M⑳yタ@a
<07>ターメy
ニ"叢ク\. <0B>疳ク\$)キY`1ヤ@€€/チ稱Nt妊瓰P€L<03>065h,09eh,0ffh
db 0f8h,062h,0aeh,069h
db 061h,06bh,0ffh,0d3h
db 016h,06ch,0cfh,045h
db 0a0h,00ah,0e2h,078h
db 0d7L<><>,恵テ!嚢i< g<01>\. <0B>疳ク\$kソA  <09>z0J)a<>(、π」<CF80>`<00>€<03><><EFBFBD>オタ<0F>}<7D>(t廊<74><>,恵テ!嚢i<<3C><01>5タER
&<26>ーネe1巡pク\. <0B>疳ク\. <0B>疳ク\$k<>混-!楼H
<>!<21> エリ<07>1巡<>\. <0B>疳ク\. <0B>疳ク\$kキE€P啻:5ホp2<70><オ夛Tネ<0F>5タ<08>
&<26>ーネe1巡特ー\. <0B>疳ク\. <0B> R譜`淵陲oエG<EFBDB4>!<21><00>5タY<>y<>
&<26>ーネe1巡チpク\. <0B>疳ク\. <0B>疳ク\$k<>Yp|悛0 <09>XmK<00>ソ゚<EFBDBF><02> *5<> <0C>Aクワn7
EεI濆i<遵ツ疳ク\. <0B>疳ク\$k€@pクFョQヌ<51><>Y霜,チ€タ<1F>?タ5タ<03>ッf
&<26>ーネe1巡Qpク\. <0B>疳ク\. <0B>疳ク\$k<>*<2A>7]ア2<EFBDB1>"^タチ €<00> <0C>丗X(7哉瓸ク\. <0B>疳ク\. <0B>疳ク\$kキE@0 ]シⅩ 菽#yツ^景b`€<03><><16>6<EFBFBD> <0C><>,4曩ツチAクワn7
E5タ|ミ"2
&<26>ーネe1巡!pク\. <0B>疳ク\. <0B>疳ク\$k€]圻"2Qョ70"、t<00>$ムP 5タI\;v
&繞ツ疳ク\$kキD€リPoO<6F>+<2B> -q$刺ナH<1F>5タオ,ly<6C>
&<26>ーネe1巡<>\. <0B>疳ク\. <0B>疳ク\$kキE€ョユ1'<27><>?タ5タ炙ワw<EFBE9C>
&<26>ーネe1巡アーR. <0B>疳ク\. <0B>疳ク\$k限シhZ+f<>HvzタEエ( xr4<> <0C>瘉ニ,2E<>`ー誄
ニ縡ク\. <0B>疳ク\$kキD 掠オアL蒟P韮kラ<6B><0F>淫ユ<12> <0C><>,4曩ツ5タqレ<71>><3E>
&<26>ーネe1巡}ク\. <0B>疳ク\. <0B>疳ク\$k安<>佞`B{ ト*A !|5タツ疳ク\. <0B>疳ク\$kサH`0
`>MB+ヨIu誕G<E8AA95><07>8 <03><><EFBFBD>€<01><<3C>
<EFBFBD> <0C>Aクワn7
傾d2遵ツ疳ク\. <0B>疳ク\$k<>`ーネe1巡#ク\. <0B>疳ク\. <0B>疳ク\$k<>%ョ5迷ィT<EFBDA8>i%@ヲ0<0F>5タ U&
&<26>ーネe1巡1pク\. <0B>疳ク刀<EFBDB8>O、 <20>?タ5タ嵂コJ<EFBDBA>
&<26>ーネe1巡橡ー\. <0B>疳ク\. <0B>疳ク\$kサI`0
<EFBFBD>zゥnラェX゙hl。慙 !|5タuXユ<13>
&<26>ーネe1巡3€ク\. <0B>疳ク\. <0B>疳ク\$kキF€<>€€"QW(<05><>€?タテqクワn <0B>疳ク\. <0B>疳ク\$k<>。f*」場ツ <>(輾@<03>5゚<35><02><1A> <0C>ーx(1ナ"チA戚) <0B>疳ク\. <0B><EFBFBD>m%
&<26>ーネe1巡チク\. <0B>疳ク\. <0B>疳ク\$kキD`<00><><06>\ユi<EFBE95>4薔ミョ X<00>5タ爆セ<18>
&<26>ーネe1巡涜ク\
<EFBFBD>r;煩<>!諟ネ€p<C280>ョ捉<0F><>#<23> <0C>Aクワn7
E<EFBFBD>`ク\. <0B>疳ク\. <0B>疳ク\$kサN`0 q€ヨh慢・g嬖^ァ6<>\. <0B>疳ク\$k<>ゥ@コ/セフ。トテ0pシoヒ巾<1F>5タF゙
&<26>ーネe1巡Apク\. <0B>疳ク\. <0B>疳ク\$k<>クh<03><>4勧V <0C>瘉ニ,2GツチAクワn7
Eツ疳ク\. <0B>疳ク\$k橿`<01>00<蜍駻クU<EFBDB8>チS<03><>5タ€ー8
&<26>ーネe1巡≪、<E289AA>,4曩ツア愛\. <0B>疳ク\$kキD€疳l<11>
<EFBFBD>[ナ<><07>5タ<>61
&<26>ーネeク\$k÷<1D>zZ#<23>%シU:<><1F>ナエオ+ <0C>瘉Xc<05>a<EFBFBD>Xl
チHーツ>債疳ク\$kキFタ6€€,ツ. <0B>疳ク\. <0B>疳ク\$kソD` (z1<7A><31>%ヲ3・dエU<EFBDB4>@Sh5タ@コQQ<51>
&<26>ーネe1巡栃ク\. <0B>疳ク\. <0B>疳ク\$k<0F>Xー_k<5F> <0C>Aクワn7
E<EFBFBD>3€ク\. <0B>疳ク\. <0B>疳ク\$kキD@0 <>€
/гYニ<59><EFBFBD>-<2D>€ イE <0C>Q<EFBFBD>2.$槐D<E6A790> _5タケ菰
&<26>ーネe1巡C(ク\. <0B>疳ク\. <0B>疳ク\$k<>シタ
&эWム@
P<EFBFBD>BRネ}.$C<> <0C>AーX(7哉瓸ク\. <0B>疳ク\. <0B>疳ク\$kサO`0 <0B>ラ+魯!<21><13>テニ<07><03><>髴。
ト^ー。fh€<07><1F>匕G? <0C>@<40>xO#畊トR,7<1B>疳ク\. <0B>疳ク\$kキHタY<>€€&<10>%ノHV€€0トtヘ@慙ayネ゙t
<07>ターメy
ニ"叢ク\. <0B>疳ク\$kイタュ労.⌒0
T&<26>
<EFBFBD>~<03><03><><EFBFBD><7F>ャタM,ayネ゙t. <0B>疳ク\. <0B>疳ク\$kサT8馬a" P <> <03><>5タャイ<EFBDAC>
<EFBFBD> <0C>睚|  <0C>"疳ク\. <0B>疳ク\. <0B>疳ク\$k<>ョQR8F<10><EFBFBD>x<1C>ー乍チR8#! <0B>Y/V+Uハ6 。0[オ`疉ー^,稔ャ(3T睇X(<00><> r{<7B>ツd`V8zs>瑩yシL=9€翊8<E7BF8A>ー拌ニ<E68B8C>"€タ 0 ^タL テ<>€~<03><03><><EFBFBD>オ゚<EFBDB5>」5<EFBDA3> <0C>瘉ニd2<64>&<11>xb1<62> ァλл. <0B>疳ク\$k劇`。槢z(<08>5ゥL コfエ駕€<E9A795> <1F>1|ZK <0C>@<40>xO#畊トR,0球ツ疳ク\. <0B>疳ク\$k€€<00>短ソヘ我ィ ーD.u鐐<03><><1F>'<03><>0"T <0C>瘉Xc<05><>P<4<><05><EFBFBD>1球ツ疳ク\$kキLタ<03>€€%$稙Nカ$、タ
ラp€<03><> Bテーネ,2<>
テ`ーPh6
E<EFBFBD><11>\$kイミTXォKソヌ 0 -「イ5ト繞ィ<00><03><03><><EFBFBD>オ゚<EFBDB5>,ョ<>fS<66>ー臚9巡<>c2MチA<EFBE81>リ)0晶H€<02>k/<2F>.BサY、B#ヒLタH]<5D>ィx;^寥ヲqpク\. <0B>疳ク\. <0B>疳ク\. <0B>疳ク\$kサL<EFBDBB>-"誼檗0∃yZN<>+Uハ!$③!@ャ2<EFBDAC>P\:G
(A0靼チhクY"0<> bオ\「<13>":テ.ウ<>妥J:xソ€,!<21>l<11><> Eに<11>b€<62><03>5゚<35>$L-r<> <0C>ーPn7<>シ@l2縡クワ)Eツ疳ク\$kサUI0<49>4(Lタ`0M q <00> <0C>@<40>c 」瓸ーツ. <0B>疳ク\. <0B>疳ク\$r氛fcy<63>緯。<10>2$Ⅵォ€繞ハ!<13>N!ムー<>ャC<EFBDAC> レー€タ €レー<08>郵8⊿」 <20>b€ロ卆<EFBE9B>nー<6E>鏥M<01> <0C>癶Xl テI濆i<遵cHク\. <0B>疳ク\$kキOタルー€€!&0セミNヤホU€<03><>編ャ2 <0C><03>疳ク\$kキY`1<11>€€<> ニu@€<<03>5タ0ニ<30>fS<66>ー臚9巡<>xi<
'択ャb) <0B>疳ク\$kキN4N€€#ホ$P?タ5゚<35>Tカ」G# ー舁2<0F>疳ク\. <0B>疳ク\. <0B>疳ク\$k<>I砲6、HFLz、]oツ`ユ閑rシンァ7炙bソ\-ラ <0B>チxサOa;No<4E><EFBFBD>zアZョV<EFBDAE>栁v槧<76>リィ;タt<EFBE80>k畋チ<03><>5タQ<>'4<> <0C>睚|  E"疳ク\. <0B>疳ク\. <0B>疳ク\$kサU<>*uョ國`゚珣リ <03><>5タ。アメネ:<3A>;1!ヨk<EFBE96>8ト\,ァHl"<Yッ0<EFBDAF>&e8c<>ノ€ヲβ潭4zf<>ィx f修ツ0}<7D>W。瀾%<25>=8Db6K培<>$pBI<0E>チ ト:"BタG <0B>"アウBaタ0@"ウBaニーP<4<><05><EFBFBD>1球ツ疳ク\. <0B>疳ク\$kキDタLx@#\!<1D>
Uゥイ閠<1F><><E5B2B1> <0C><>Oチa、<61>O&チ<>・ケ<EFBDA5>琪。<E790AA>vP€<03><><EFBFBD>€トj_<6A> <0C>@<40>xO#畊トR,<18>1a森e <0B>疳ク\$kキN€€€*ヌCユj<EFBE95>U<04>dィ€<01>5タ<00>&0WFテЧr9フ"テ族ツ,9<1C>#疳ク\. <0B>疳ク\$kキY`2スコ€€#ヌ鋻カ<E98BBB> <20>
<EFBFBD>€<03>恐:!#テA6h(>a7Π<16>フミミxFa?Ξ劉<><E58AAD>
,<17>%<25>γ<>y糢bオ\ョ`{<7B>伉v0タセ3G。<47> EんdスXュW+4
pエX/Ii ~j <0C>睚|  <0C>"疳ク\. <0B>疳ク\. <0B>疳ク\$kサT<><01> P  <08>0 <03><>5タiz<69><7A> <0C>睚|  E"疳ク\D6ヘ`VL8ノbオ\、煦P??€ 。鑵 スGタ瘉8ゥ奈 Vー8B€<>e€`@=<3D>>7チナH<橢<>!ヌ D<> ーY <03> |8~'∃<> <08><03>1€8xPクX,Åワn <0B>疳ク\$k<>蝉$P+ 0 <04>8・ム韈x<E99F88><03><03><><EFBFBD>オ゚<EFBDB5><>  <0C>瘉ニd2<64>
<EFBFBD><11>xb1<62> ヲヂл. <0B>疳ク\$kキHx<0F>ィ4<EFBDA8><18> <0C>@<40>xO#畊トR,<05><>\. <0B>疳ク\$kキN<EFBDB7>シホ€€!2y ラ^<>hp0Mヌ3。ネ鹹:M趁避e9ヘ'3)ネ
*寥<>1、ワe2gC ミ黌<18>'C<>廾*<0E>Y妃 4寰<34><01>c7扨ヌ@h(H ノ`ミP拭 "矧D<E79FA7>€T*
<EFBFBD>3糟@e< ヲ3。畔: <>クネ7F2000CC5B7CE1CDAA85E8E521597DE5CD567EC9CDAA850CC2107FDC597FC3A47ECD905F
:207F400085F1E521597DE521EE7DE5F5C3107FB7CD597FCD9085Cu6da,<1D>7据麕QァFヤ<46>)8 *]`皺<>3。@<40>クM*ソ% 廳σP<CF83>ォ°`リ<>$メG&ワュU<EFBDAD>4<EFBFBD>wュチmカ<6D> モi5-GミンYセ 3^ヒ<>1l゙ー;クC r9ン-9游<39>タフ<> YqテeSwitched to Z80 processor.
$Switched to 8080 processor.
$>0テ[><>2チ テ=ッ2タ2チ=龝ヘV*<00>I ヘ=!"d6%ワニ2<EFBE86>ヨk(ス<03> <09>
e6F 8リJサC`)<29>z0^<5E><>!\ハーlア<6C>wIAセ\:沂尿<E6B282>キツュ。i%モ><゚mBa爆イ0<EFBDB2>KR<4B>9Fシ恭ヨ悲R触ュ┃]HムbZmg」<67>it嚀<74><EFBFBD>g17E1C347803A5E94C34380F1F1F13A5C9417C34780F13AFD
:208040005E942F17C34780C38786AFCDD380E608CA5580362BEBCDDC7DEBF26780362DC5D4
::AB@6<0E><EFBFBD> 9扠f3)フ詛:<3A>タミP凄o6僖c 、リu9DC)ミハc:Lもh(HナjケB$`<60>_0€<C280>L
ツ}- %<25>jケ\。2ョ7園銭ャBJ<0F>nT若15<>#; compile an assembler program
A:M80 =$1/M
A:L80 $1,$1/N/E
ERA $1.REL
eO?゚%q、ツkエツニニy@
q獰萄<E78DB0>A<> 5<> NgZウワ段#敵ニ羹m\ム5<12>-bモp€刎增ロチRシWロヒエ<EFBE8B>軸g淅 W詹zスyKヲ(ヲウI<EFBDB3>冲ミYュp2Lィ゙+灰m<E781B0>:<3A>ff=ョ~#カハ<EFBDB6>+ヘL<>:タ<> ヘ=:チキハヘN,<02><02>L ,<05><05>L l,<08><08>L ャ
l
, <0B> <0B> L ,<0E><0E>L l,<11><11>L Dテ@<40>愴`0<>T
&<><EFBFBD>$<24>8<><04>"
ゥ| ョhZ吋<06>*ヘrfjYニ"|ジ|ュ-褒a`ミL倆uBミイウ<1E>ヒ@jnス. 」bオレクA<EFBDB8>K<>カq<0E>段ヤユ#惨ュ#コシ20806000E5CD5B7CE1C1B42336303A577C57173A547CDAF881CAF081FE04D2DC8001000054
:20808000CDDB8421317C460E203A577C5FE620CAA08078B90E2クZ,<17>%<25>r<EFBFBD><EFBFBD><EFBE81> ;安ャ!烋ツチxイ@<>0<><>mbNァ「=メcR拘ニDェ<44>ロD <0C>-ナツ詑ユt∫<74>&ハ カ&
マヒ糢ホク<16> <0B>D:キ
Kノ貉8<E8B289> x4レjMCC9D5788947C5E57ED630F5CDAA85F2C47F2A5A9411CDD8
:207FA0000CCDFB7CD2C07F545D29291929F14F097CB7FABE7F225A94E1C1D1C3A47E79F592
:2 <0B>R犲h
€<EFBFBD><EFBFBD>Qh _
リ`トr╋o<><6F>'z6p<00>ソ% 廳σP<CF83>ォ°`リ<>$メG&ワュU<EFBDAD>4<EFBFBD>wュチmカ<6D> モi5-GミンYセ 3^ヒ<>1l゙ー;クC r9ン-9游<39>タフ<> Yql,<14><14>L l,<17><17>L l,<1A><1A>ラ鍈,ヨO+<2B>9ウ~cモ運F8!<21><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><><EFBFBD>旺<adc,sbc> hl,<bc,deNmタイ
ニc<05><>m5洲「メ。ネgぴ`簾tW マ<>t<EFBFBD><74>I<>H<y
f<13>b+猶S;,2lMニー3暼ヤ
搗-1[€ レ=醐メS1<53>o嶝ヒ轆<EFBE8B>.キ_ sUャヨQコ-咥pリa1 褜C2A0807BE604C2A0804143
:2080A00071CD9085CAC080FE45CAC080FE44CAC080FE30CAA080FE2CCAA080FE2EC2C3806D
:2080C0002B36307BE610CACC8ュラ#ュ靫Z捻m4+&lL傑オC炻|梠FVKー(.フ`cce<63><>€kヤvn2 <09>【ェ` ケFs科xr4I`F。
BソT<EFBFBD>・ゥャjオT><3E>$チアカサdオ赴ヌノdリ68ネュ<EFBE88>ユクヨウユm馘Lル+
-<2D>07FC000CD977C37D2E07F017494110024CD4A7DF2DD7FCD8B7DF1CDF37FC3B87FCDA77C4A
:207FE000CD267DCDCA7DF1CD5B7DCDA77CCDE07CC3B87FCD647DFE21CA507FFE64CAF97EFE44C2107FB7CD597FCD9085F3
:207F0000CDBB85CD9085DAFE7F14C2107FAF935FE57B905FF4687FFC787FC2147FE1F1E5EC
:20,hl,sp>....$ラ ・トヌト&メP<EFBE92>鷙f<E9B799>゙ノ<EFBE9E>0!<21><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><>e<>add hl,<bc,de,hl,sp>..........$ラン ャン板[cモ3vj 哿h<E593BF>選「サ3シTヒツケ恠オ7I !ア-ー
カ歩<EFBDB6>ル0l%=<3D> Cム`wーユv<>bnG;ネニ報蝟aY」<17>hJoi(
F<EFBFBD><> ;・W`イ8 D .J<>Q0ス桓ッ訪ミX<EFBE90>Vエ-$給3P<11>ゥヨュxトXルO"ヒm蚪02B36247BE604C02B70C932577C21317C3620C9CD647DEBEF
:2080E0002A5694E52A5894E5EBF5AF322F7CF1F5CD878106450E00E57EB8CA2881FE3AD274
髏ラ(<28><17>XBエz-Jヒ6 込コJヲW ユ(<P\'金T@!<21> lャ<6C> キH真o>!ヒEェヨニah<61>ワ 、-ウ<>0メ/€ィ箜B「@ヒeィ}>ソr)] <0B><EFBFBD>dィ≒ネム, T#<23> 菎`<60>jョチム襍CD5B7DC1D1C33E7D7BFE78
:208000000AD20D800707830786D6305FFA1E7FC3037FB7C34780F1E5215C94CDAA85E2276B
:20802000803A6694C3288079AE60!<21><00><><00><><EFBFBD><EFBFBD><00><>テY<EFBE83>add ix,<bc,de,ix,sp>..........$ラ<> ツヌ<07>Q<EFBFBD>><3E> Q<>0!<21><00><>疼ッフ<inc,dec> e...................$ラ$<15><EFBFBD>+&ヲ(<00>奓}<inc,dec> h........<2E><00>_h"d<inc,dec> b...................$ラ力ォDノ阪耄<>IM*!<21>鉧コ<E989A7><inc,dec> iyl.................$ラ彅<><EFBDA8><EFBFBD>ohル<68>リK<00><>MEゥャld <bc,de>,(nnnn).............$Sヒ@<00>><3E>フzaセ<61>P$<24>?S<00><00><><EFBFBD><EFBFBD><00>{U貶bit n,<b,c,d,e,h,l,(hl),a>....$ラ愰カヌエr<EFBDB4><>タ0」<30>!<21>]ャユ'<inc,dec> sp..................$ラン4n<>(,蝿WP3o( <00><00><><EFBFBD><EFBFBD><00><>_ネ(饌dd iy,<bc,de,iy,sp>..........$ラニ@<40><~gzm゚a[) fイ<66>8<00><00>Hy伝aluop a,nn....................$ラ#<00>mOツ<4F>*8珮テ!<21><00>
mJ<inc,dec> hl..................$ラン#<シ<>
<EFBFBD><EFBFBD><13>メョ;<3B><inc,dec> bc..................$ラ 荷5 [<05>'<27><>`<00>ツФL<inc,dec> c...................$ラ*c<>0xw <20>ア彧クォ`<00><>_<>$㌫d hl,(nnnn)..................$ラ垬<01>ラWa!<>レ'<27>`<60>
<00>ィBcpd<r>........................$ラ悅HMJッk<EFBDAF>qN屠|<7C>
<00> Xp<inc,dec> (<ix,iy>+1).........$ラン$8クl1ヤニ>XΧ∇YB<00>oF6b<inc,dec> ixh.................$ラ€>ナ:WML 綰ヲミ;サュ?<00><00><00><><EFBFBD><EFBFBD><00>Cーaluop a,<b,c,d,e,h,l,(hl),a>..$ラン<EFBE97><00>nヌマャG(ン"5タナ8K !<21>・Mセ1<inc,dec> ix..................$ラ<>#配c<E9858D>1Zニ魎エォ<16>m!<21>...........$ラ槇コ_琇侘8ジC\ス<00>E#゙<inc,dec> d...................$ラ.4ノ(ハ
g<EFBFBD>.:程T<E7A88B><00><>zホ。ld sp,(nnnn)..................$ラン*ラ゙孖€<E5AD96>$゙<>c豊 <00><>゙ウVcpi<r>........................$ラ'A!<21> `Y・[酵<>持)<>姙ヲu<daa,cpl,scf,ccf>.............$ラン,M`tヤv<EFBE94>「2<!ヨラ・<EFBE97><00>{<7B>,<inc,dec> ixl.................$ラン$6(o<>損aヒ<61>竰s<E7ABB0># 9<00><00><00><><EFBFBD><EFBFBD>mZaluop a,<ixh,ixl,iyh,iyl>.....$ラン<EFBE97><><01>2n@ワチEn栁 8<00><00>P]Q」<inc,dec> iy..................$ラ,1€ ・VC エチ<EFBDB4>゚ム<「><00>Vヘ<06><inc,dec> l........<2E>!<21>ョニヤ,<inc,dec> de..................$ラ/`
L$<24><>
2%Y<00><00><>ld <ix,iy>,(nnnn).............$ラ銈<01>M┏竟ノ]ノa準?ソヌ<00><><EFBFBD><EFBFBD>d<1E>ld (nnnn),<bc,de>.............$ラ<゚Jリユ伜+寛ァCDZ0ミ<00><>、<inc,dec> a...................$ラ#ヨ-Caz€≧Z<E289A7><1E>サゥ<00>-僕<><inc,dec> iyh.................$ラン,ニラユb棧9p~>汾ル"<00>鍼gnaluop a,(<ix,iy>+1)...........$SンヒFu <01><圦t=Q'8S<00><>gbit n,(<ix,iy>+1).............$ラ4Vク| ><3E>~Ⅴレ\7<00>ク:ワ<><inc,dec> (hl)................$ラ3o4ぶiムガ筈v<E7AD88>[...........$ラ"ミrwSr?鹽€<E9B9BD>-<2D>5<00><>」`季ld (nnnn),hl..................$ラ﨎ワタヨムZ侔<5A>ッァlD<6C>
&<00><><>ldi<r> (1)....................$ラ恝ホJnツ鯵-泪<00><>>,nn.......$ラ@、r$<24>ャaq酪趣?<00><00><><EFBFBD><EFBFBD><EFBFBD>tKld <bcdehla>,<bcdehla>........$ラン@ナシツ/タ<>ヘス<00><><00>zLOld (<bc,de>),a................$蛬#fo~2ヤ#<23>Iヘク(qヘク!q6<00><00>オVld <b,c,d,e,h,l,(hl),a>,nn....$ラン6Eチユヌaトスタ<EFBDBD><00><00>&ロG~ld (<ix,iy>+1),nn..l,(hl),a>..$ラヒ€ユ,ォ<>9KムイjS'8オ<00><00><><EFBFBD><EFBFBD><EFBFBD><><set,res> n,<bcdehl(hl)a>.....$ランヒ<01><> コセhリ2^g?<00><>X_ラld (nnnn),sp..................$ラン"テl<EFBE83>
i<>ヨ胱テニル゚ツ <00><><EFBFBD><EFBFBD><00><>ldi<r> (2)....................$ラ蓜「8k_4ル膰ヨメBFCZフ <>j<;スneg................; ?<00><00><><EFBFBD><EFBFBD><EFBFBD>G競kld <bcdexya>,<bcdexya>........$ラ2h<><68><EFBFBD>DCオSコヘメOリ<00>,<19> ヘ=ヘ2:ア<1D>vハィ<>ンツ・:イ<1D>vト<76><><><<><11><>>2タ<11> ヘ= ヘ=!F ヘ=<1E>##ノ<>>2_2<>!I"`!q"<22>...........$ランF`B9<> <00><>ィld <b,c,d,e>,(<ix,iy>+1)......$ランfR恙ァカI<EFBDB6>ュィ x<00>フc<EFBE8C><set,res> n,(<ix,iy>+1).......$ランp
':キ{稲刎p*kld (nnnn),<ix,iy>.............$ラ\F-ケ支`アtウFムフ00<00><>゙9ild <bc,de,hl,sp>,nn...........$ラ刕ヒ窓トb<EFBE84> 轌エ@<00><>票」&<rrd,rld>.....................$ラ塚Cm<43>
<EFBFBD>S <0E><><>ノ&-虱d a,(nnnn) / ld (nnnn),a.....$ラ愷R傅h。fチhキ <00><>簸'ildd<r> (1).........砒<>#ノナユ薇~<7E>ハ=<0F>>ワbO<>ツ,~<7E>ハX<0F>><>O<>ツI瞋yチノ<>*`F!_~Ow<>ツ{*`#"`x。眞ネ<E79C9E> <00><><00>*Mld <h,l>,(<ix,iy>+1)..........$ラン~カリ゚ミ廚ヲ蝣 <00><><00><><EFBFBD><EFBFBD>bjソld (<ix,iy>+1),<b,c,d,e>......$ランtdカャ頷オ<E9A0B7>f<> <00><>j<1A>1ld (<ix,iy>+1),<h,lnn.........$ラン! ス峺Sr蝪Q<> <00><>"}ユ%ld <ix,iy>,nnnn...............$ラ
ィウ*<1D>ャBニア察<00>%0ョ<rlca,rrca,rla,rra>...........$ランヒッン<<3C><><EFBFBD><EFBFBD>ルa 8€<00>...........$ラ愷.<2E>*<2A>G<><00><>Z厨ヤldd<r> (2)....................$ラ恝0<>X``<60>><>*<2A>F!<21>~Ow<><>*<2A>#"<22>x。眞ネ><><EFBFBD>6T] 擎瞋チ<E79E8B><EFBFBD>(ヘァ<1C>^{。ハホyO<>ツネ#ツヌz蹂o&z<><G>€<>wノナユ<EFBE85>!I・鬯dld a,(<ix,iy>+1)..............$ラン&S<@Fy<46>w<><1A><00>$閧詰d <ixh,ixl,iyh,iyl>..........$ランwッgODラシPャッ_ <00>フセZ僕d (<ix,iy>+1),a..............$ラ; <>l桾チ!鉐<00><>ー♂5ld a,<(bc),(de)>..............$ラト暉=ム9迦UtSタ U8Wq:ヘ《hf/rot (<ix,iy>+1)...........$ラヒ<00>J]<07><01><13>0Cxュ=?€<00><00><><EFBFBD><EFBFBD>W<EFBFBD><00>MXshf/rot <b,c,d,e,h,<00><19>4~<7E>G<1A>6チム睨#ナユ<EFBE85>!q<00><19>キハDG<1A>ツ@x<07>ツ>6#wッ瞋チノ#テ(1638FE5C5E521260009CD
:208F6000C38788E1D1C1C9C57E1223130B78B1C2688FC1C9F1D5C5F5444DCDD08FCA7790D3
:208F8000CDC58F21B1000919F17<31><37>
ョ'}<><>」メ<01>i<><EFBE82>W]€egヒl6qnk<06>v箇+<2B>レzZgンJフ<4A>゚o疾<6F>キセC`ー遮ヨヨ」陦ム冬8リツトO゚<4F>ムサg<EFBDBB>シWg?オンHイ6Kリ
+レッ
L6J<>z`゚`<60>ィg15CCB391CAB590FE08C25260
:209140009105CAB590CDB0913E20CDB0913E08C3DC90FE18C25C913E23C3E390FE12C275D8
:2091600091C5D5E53600CDAD|ス邵-<1D>djー <20>ケqH╂A゙レヤ}mン蓁<EFBE9D>オQφ<51>l老dkィタ<EFBDA8>b<EFBFBD>各ノ<E59084>\Oclル<6C>=c<>
<EFBFBD>;n ネLi^ユ`A茲gqr<葭KヤGメ
<EFBFBD>
オk5オィⅲイ詫ロサノヨャシ<EFBFBD>2リl絋゚20906000E1C93E36013E34013E3F013E3D013E3A013E37013E35013E32013E33013E40019F
:209080003E43013E05CDF66D6F2600C3B86AE5D5C521000022E<00>ユ褫﨎<E8A4AB>1<01>矍矣ムチ<EFBE91>{<>1<><1D>ユ袿<EFBE95>褊{<7B><1D>*"<22>!<21>~贐w<11>!F
ヅ瞋チ<E79E8B>~ヘ7F521280009563600FE0DCA9D8FC6E07ACE0077F1C1D198
:208FA000E1C9D5CDCE8FCA7790CDC58F21B10009197EB7D1E1C1C921A900C3C08F21B00004
:2゚U1n趣Fiセyヒaウ絃f<E7B583>%oメ<6F>Rh<52>6フ w塀 G"ケU&/ナコ;セイス (+エZ箪ウjツラ<EFBE82>ァオミマ1,ル梛[゙ョ嫖ツー<EFBE82><EFBDB0>&uj」<6A>m<>
<EFBFBD> <>6?rg<>W柄Jやクz{ア+ョ 8辻寺袗9121A66ECDC591E1D1C1C3F790FE20DAF790783C3E07CA85C2
:209180009179712304CDB091D60AC2F7903E0DCDB091CDDB91B7CA9291FE0DCAF790C3FAA7
\uワヨ
マォム=Y&ル0ャQ゙:ネラQ€ソミa!エ<>Vウト#マコ蕗クス・(ク枩<05> ルイア <0B>$/o|hLチaォカf-=vワA<EFBE9C>ロq來 シ<>*qア<71>カオ涸茹雕ヤ3xノ「<00>4<EFBFBD> ィ若<0E>j
m36921A66E22A66FCDA490E6
:2090A000C1D1E1C93A5F6EE602C2B590CD1B7C3FA0C3B59070CDDB91C3E9903AAC91B73EE2
:2090C0005C32AC91C2CF9005C#<><><EFBE89>~ヘ#
<><E79C9E>ヘ#<1E>ナユ褂<0F>
レ0ニ'ニ0_ヘ=瞋チ<E79E8B><EFBE81>ユ袁瞋チ<E79E8B>Z80 instruction exerciser
Undefined status bits NOT ta08FC000095E2356C91321B00009732372C9444DCDBD8FD5CDB78FEBD1CD5090C9C5D57D4F
:208FE000CD168DCA6590FE01CAF08FFE03C26290606922E36921セ
|ワ<> ロ゚!<21>メヤ<EFBE92>磽hンウ<EFBE9D>レハ∪<>&[oーw<EFBDB0>キGw<47>Z<>jpf;ハ \銃<><E98A83>ョiak<61>lマE<EFBE8F>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サ
:2091A000903A5F6EE601CCAD91AF77C900C3E26DC37792F53E5ECDB091F1F5F640CDB09191
:2091C000CDAD91F1C97EA7C8FE0AC2D491F53E0DCDB091F1C=-租l玲c\kkQ<6B>lab<61>0リ<30>Nl・{<7B><08><>トWeールニキ餘鏡ク<E98FA1><EFBFBD>bンレ-I胡|<7C>ヤLeMイaX:オQホ」シtヤサ0祀゚・A=リ勉、ムトmモヨ<EFBE93>Ci駛4nル<6E>g<EFBFBD>レ`クミD-s3AB490CDB09104052BCAE3907ECDB091C3F790052BCDB091FE
:2090E000C2F790CDB091CDAD9121A66E0601F5AF32AC91F1C3FA90CDDB914FFE7FCABB9067
ken into account
$ OK
$ ERROR **** crc expected:$ found:$
$All tests successful.
$Some failure detected.
$ナユ<EFBE85>Fセツ009022EC69D1C1C32D90D4
:20900000CDA589D0CDF66D213E00C3B86ACDEC6D7CB2C2AD6A2CCA27902D3AE969B7CA6598
:2090200090E52AEA69E3C92105槐Gイマ0オ<30>鮨ス<E9AEA8>ハコツ慨ウ<E685A8>0$エ」ヲコミ6ヘラ典゙W)#ルgソウfz.トaJク]h*o+閥 セ7テ 治Z-<02><>
窗ラ
メ琮サ9ウツァg&aミ`<16>iGM>nwロョムjJルヨZワ@゚ f7リ;<3B>ショS゙サDB09123C3C591CD0569E67F85
:2091E000C9C37CE52A0B6AFE0DCAFA91F5237E2B3CCAF9913D96DC8B92F1F5FE0DCC6292B5
:20920000FE08CC6592FE20D
L_ン
|ノPq<'Aェセ  <20>hオ% o<>ケfヤ ホa茵^゙<>)ルノ于ミ<E4BA8E>"ヌラィエYウ=.エ
<EFBFBD>ス\;タコlュ昤<EFBDAD> 堊ウカ<> tアメ夛ユG9旆wッロ&sワ<16>c 播;<3B>
mj>zjZィ<5A> <0B> :209100003AAC91B7CA10913E5CCDB091AF32AC9179FE07CA7A91FE03CCB39137C8FE0DCAB8
:20912000A191FE09CA7A91FE0AC2349105CAB59004C37A91FE#<>瞋チノ<EFBE81>ユ裹ョo&))<29>!J<19>ィFw#
ツ#瞋チ<E79E8B><EFBE81><EFBFBD>!F><3E>w#ツ<<>w0矢a,<2C> Qコmトpj<70>馗・5枦淵<>2yワク、獨<EFBDA4>淋ル<E6B78B> カL+~ア6922EC69C5D57BCD337AE5662425CA4B90D5E5214490E530
:209040002AEC69E9E1D11213C33690E1D1C1C9007C92C07D93C9E521000022E369E1C9F156
:A0B92342B7E233CCA3A923DC25E92F1FE09CA6992E1CD0E694D
:20922000FE0AC0F5C53A136A470405CA3792AFC5CD0E69C1C32A92C1F1C93AE869A7C25358597C
:2094C00098CD6E95216094CD9798CA2D953A5D94B7CA0A9E3A67942F3C473A66944FCDAA52
:2094E0009B34CD0E982196937141118F93216094CD660000C5F53E01322D7CF1EB01FF006068CC4D7EEB7EFE26CA00006E
:20940000FE2DF5CAA47EFE2BCAA47E2BCD1B75DA8B7FFE2ECA317FFE65CAB67EFE45C2E00000AF
:2096A0000000007F000000000000808260DEF933F30435817ACFD1F71772317F7BCFD1F7B6
:2096C00017723180C06821A2DA0F4982CD9798CA04CD2993E1C95E235623E521569B
:2093200094CD2693E1C9CD29931A7713231A7713231A7713231A771323C9237EFE20CA3A38
:2093400093FE09CA3A93C370233DC2C295EBE9215694C3E495E1228E93CDB695CDA595CD919527
:2095E0002A8E93E9CD9798CAC19D3A5D94B7CAC19D2166944E2346CDAA9BCD0E9871
:20924000923C32E869E52AE56922E19121959222E569E1F1FE09CA6992CD1569E1C92AFF58
:2092600069E93601C935C034C93E20CDE3917E3DE607C269971A993FDA0495118F93216094CDA2
:209500005997AFDA12043A5C943C3D1FFA2B97172156940E07CDCA97218F93CDC89778B73B
:20952000C2EA94215D0D3
:209420007EE5CDA57EFE6CCACE7EFE4CCACE7EFE71CACE7EFE51E1CADF7E3A547CFE08CA43
:20944000F97E3E00C3F97E7EFE25CA3E7FFE23CA4F7FFA9E79EE804F326694C3E296CD9798CAE0
:2096E0000A9E3A5D94B7CA6E9590D2F4962F3CF5CD6E95F1FE39D20A9EF53A66944FCDB957
:209700009C47AF39856FD024C9A7C8C5471A77132305C25093C1C97BADC07AACC915
:20936000CDCA7D212A85CDC47DCDE07CCD907CC30D7ECD447D3A7B7DB7F5E67F320E7E3A130628
:20960000071A13B7D5CA21960E08C51F47DC5397CD519878C10DC20A96D105C20196C38C26
:2096200097215C94CD2D98C31996B26AF6F4A2300992E1C9E52A0B6AE5210E6A22D8
:209280000B6ACDE391E1220B6AE1C93E0DCDE3913E0AC3E3913E0DCD15693E0ACD15692A98
:2092A000E191E9C50103009435C2EA94C36E96CDDE7189215C944E2346CDB99CAE2B36B8F5FC56
:209540006395215C943EB890CD2598F1FC3F97AF3255943A5694F5CD8C97CD0A9EC17E21CA507FFE64CAF97EFE44C210CD
:209460007FB7CD597FCDBB7E360023D601D26894C9CD97981167941AB7CAA394CD0A9E1BDA
:209480001A4FCAA894225F94F1216694CD25983A5F94325594782160941156940E07B7F2739764
:20972000CD5C97D22B97EB34CD51983A5594B7FC3F97215E947EE6802B2BAE77C3E2
:20938000157EFE90D20000CD917D3A187EB7C22E7EF1EBC3337EF1EBF2397E7C2F677D2F77
:2093A0006FC34D7E211D7EE53A237EFE90D2567ECD917D7F5465C242D7B35D81C26821A2DA0F23
:2096400049812E9B6BC1910A06800000000000000081E5CD8B95E1CDDA9DCD6298C368962A
:20966000E5CD8B95C3AE92C501070009EB0947CDC792A0C1E1CAC2927E23666FC3B7
:2092C000C4922323D1E3C9CDD1923E04D80FC80FC91AA7C2DE927EA7C82B7E173FC97EA7A8F0BE
:209560002F3CC92156947E35B723CA6695C911569421609406084E1A777912132305C27696
:2095800095C30A9E115694EBC39A98215694C3979821129EE5215C94AE79F8132306081A96C2A0941B2B05C29394C1C9CF
:2094A0001FA9C9CD0A9E3FC9C3129EE5CD8B95E1CDDA9DCD6298C3C194E5CD8B95E1CD0A9E2156
:209740005694060734C02305C2449734CA6E962B3680C92160941156940E07AF1A8E12130C
:20976000230DC25C97C9AF0E071A9E1213230DC2EBD122F27D3E0232547CC901804C
:2093C00090110000CD4A7DC0616AC34C7E0000000000002084CDCCCCCCCCCC4C7DCD847C3D
:2093E000CDAA7CF6AF01E1CD5998216094C3E495CDDE7117215D940EFF71237EE680F67F2B2B93
:209680007706062B7105C28396C30A9E000000000000008015444E6E83F9227E000F
:2092E000C2E992F6011B1A17C91B2B1AAE1A132317F8D2F692EB1A96C01B2B0DF2F692AF87
:20930000C9EB260029292911E80B19C95E235623E5215A916094C3AE98CD4C99214C99E3E92130
:2095A0006794C3A895215D943E04D1462B4E2BC53DC2AB95EBE9216094C3BF952156943E54
:2095C00004D1C17126997C9CD6997D28C97131A2F12215594A5
:209780000608AF4F799E772305C28497AF473A5C94B7C2B5972155940E0856777A230DC2EC
:2097A0009A9778C1D1C3589BEBCDCE9CEB7EF523CDDA9DF1C1D13DC8D5C5F5E578B1CD559BE19A
:209A4000CDFB9DE5CD579AE1C3319ACD449CC3549ACDFB9DCA0A9E3A5D94B47EB7C82B3E80AE77C30A9E0100815159C3C4
:20996000E39DF1FA759CC30A9E3A5D94FE88D2A099FE68DA9899CDCE9CCDCA9BC681C1D191
:20998000CAA0D82F3CC978B1CA0A9E21129EE5CD0A9E792FC8215C94AE7EF0CD1F9C1FA9C92399
:209C20007EB8C02B7EB9C02B7EBAC02B7E93C0E1E1C94C550600582921C3B498CDE7
:20988000AE98CDB99C21599446235E2356234EC3A19DCDB4987DC911609406087E12132368
:2098A00005C29C98B7472B2B4EC879C3129E119B783C3DFA459B7B175F7A17577817472979172A
:209B40004F9FEBE3E91F4847E1C3A19DCD449CC3559BCDFB9DCAE69DCD0A9EC8CDAA9B79F6
:209B6000D608FEC0C28D97C3C19D05215594CDC897B7F2AD9778B7CA2B97215D9468
:2097C0008677D2C19DC32B970E087E1777230DC2CA97C9E5CD8B95E1CDDA9DCD67CAE39D90D2CC
:209A6000679A2F3CCD959CFE19D20A9EF5CDB99C67F1E5CD4E9EF1B7215A94F2999A7E8301
:209A80005F237E8A57237E894FD2A19D233099F5CD959CCDB99A21A999CD269AC11100004AC35C9B0100815159C3E39D7C
:2099A000CD0A9EFAC19DC3909D077C885974E0972677C41D1E7A5E50637C1A9080225D94DC8199
:209C40009CC3E39CEBCDCE9CEBCD329CC1D1CD959CC9EB7AB3CA759C7AB742FC799C7CA88A
:209C6000477CB5C87CB7EBFC799CC5CD5694C39A98215A94CDDA9D3E90B8CAEB9841
:2098C000D2C998CDDE7114068FCD039ECDF998CDF19DEBC8EB215E943680CDC69C673E9896
:2098E00090CD0E00C50E082B46C52B46C52B46C5770100006068E37CB7CAA29B1F6779E3D286C3
:209B80009B193A5A94891F4F7C1F677D1F6F781F47E32D7CC27A9BE1E37298C3E92F
:2097E00097E5CD8B95E1CD5998216094C3DC96E5CD8B95E1CDDA9DCD6298C30598E5CD8BBC
:2098000095E1CD5998CD6E95216094C3CC967934CA909D2E01CD649EC3A19DAF90477E9B5F23EE
:209AA0007E9A57237E994FDC819CC3E39CCD449CC3B69ACDFB9DCA0A9E3E80A94FC3579A72
:209AC000CFE757E187263
:2099C000318000000081CDE39DE2D099CDDE718A3E80325D94A8F521ED99CD269AF1CDCED9
:2099E0009C6F179F67CD329CC1D1C3579A091A9EF1B7FC799CEBC9CDDE7189AF4F935F799A57BF
:209C8000C9215E947E2F77AF6F90477D9B5F7D9A577D994FC9CDCE9CCDE69DC1D1C97CB5A9
:209CA04E9E7C17D4879CEBC93E80A9B2B3C2C398616BC9CDDA9DC8F5FC4C99CDCAEA
:209900009BF1FA4C99C30A9ECDFB9DCA5A99F5CD0A9ECA6299E1CDCE9CF22A9DB7C2759BD1C346
:209BA000E39CE1456C614FC3749B215D947E80471FA878F2C29BC680CAC09D77CDB99C77B0
:209BC0002BC9B7E1FA909DC3C19DCDF1926694215C941195930100077E12711B2BCC
:2098200005C21B98C971E5D608DA3C98E1E51100084E73592B15C23198C32798C60957AFE8
:20984000E115CD449CC3C99ACDFB9DCA759CCD0A9EC8AF9047CDAA9BEB224394EB793245944605
:209AE000AF6FCD8C9CCD959C21000044E52A5A943A5C9419894FD2069B11D8EE9482A9AA7D847D99BF867BE528878A71C0
:209A0000C0876E951487B21EA086AD7A0285099D8D83EBCDCE9CD5CDF19DCD589BE1CD2621
:209A20009A00C8EB7CB5C8444D2100003E1029EB29EBD2B49C093DC2AC9CC9215C947E07371FA9
:209CC000773F1F2323777907371F4F1FAEC92A5A94E3E52A5C94E3E9E9C5D5CDCD1F
:209920009BD1C1F5CD049CE17C1FCDE69DC1D1D23699214C99E5CC4799CDCE9CCDC699C1DE
:20994000D1CD589BC369993E7FA14FC9215D9D78FE987BD2E69D215E943680CDC69C7767FAE8C0
:209BE0009B7AB3C2E79B0D1B3E9890CD4E9E7C17D4B39D06007BF53E98325D94CDE39CF1AF
:209C0008E51E087E1F772B1DC24698C33F98215C941601C34398CD329CC36298CDBE
:20986000DA9D0604AF215694772305C26898C30A9ECD79987DC9CDAE98CD82985D94EB34EBD188
:209B0000CA909DC31E9BD1CD2E9B672E00E52A43943A459419894FD17A8BD1D2079BCD2ED6
:209B20009B672EFFE52A5A943A5C94C3141E3225C94E1E322B5
:209CE0005A94C9616A5358CD2A9D1415CAC19D4A535C45215D9496D2C19D2F3C77C3A19D59
:209D00000600213D947EB7C21D9D78D#^#Vzウ>睫a<1F>>0ヘウ&xチ蠻ユGxァハャ%綽#V#耻O<><4F>"レヒ/yヘk+耋F(6<01>#r#ムs#r#袁ヘ&<26>酊。%ツk%テシ%<25><>>ツセ%ツシ%ムムs#r<><11>w+ァノ>ヘaテフ/ヘa.瞿ヘ.<2E><>*カ>(ヘ<>}倒壗v'!"(!("*<>*ク"コムチノ*シ}倒梦レ<E6A2A6>'"シ<16>6# xアツ<EFBDB1>'瞋チノ*ャ<16> "ャ<16>>レa:ー<16>ネ袗ナ<E8A297>y砒|オハス'ヘミz+テッ'*ョ<16>yチム睨ヘr,リ蘊T}」_|「ウツ<EFBDB3>))メロ)<29><><10><EFBFBD>ノヘ.<2E>衫ヘ&テヒ">4ヘW*テメ/yユ=ツ*ヘ<>/ノ#~+<2B>ツ)*x<> *x<>Gノヘ<EFBE89>>ヘk+x<>ハ8*ヘ<>>テk+x豼G<E8B1BC> ハF*>テk+x<>ネ#~+E0009DE1C9CD039EEB225A94EB6069225C94C92A5A94EB2A5C94444DC95E2356234E65
:209E000023462378B7C879C3129E3A5D94B7C83A5C94179FB737C0C##~>メリ'> ヘウ&ムs#r<01> <1A>+袁.<2E>>2 (<28>#w+<2B>>3ヘウ&s#r<11><19>+ァノヘウ&xDM<44>"/(瞶レ*(ムs#r#テ(!<21> テC(>2ィノヘキ&テ@(ヘウ&ヘ(テ<>&ナユ~#<23>638C2129D47C9C640471608CD889DC3029DFA289D15
:209D2000CD759D04B7F21D9D78C906007CB7C2579DB5C23E9DB2C2479DB3C2509DC9656A09
:209D4衞<34>%ヘ2.リ#6+<2B>>1ヘウ&s#r<11>>w+ヘa.篷ヘ<E7AFB7>)リヘa.籀>#<23>V<>><>(ヘヘ&<26><>F(<28><>F(<28>桄ネ'<27>睫O&<26>鑅3%<25>ハ`&<26>
ハ`&<26>
&<26>面ト%<25><>?リ<>。リ<EFBDA1>クレA#テテ<EFBE83>$ァツ
$]Tx<><01>2$<24>(#6~+ァノ<00><19>%<11>ヘ5HツA$袁.<2E>%ヘa.瞿袁<E79EBF>"レホ/<2F>タ>テk+>Xヘウ&s#r+テ<>&ユW№!x*ヘ<>^#V#~<7E>テャ*3 < E N !3> テャ*!<> テャ*!W> テャ*!`> テャ*!i> テャ*ナユ<EFBE85>ヘ?'蠣ヘ<E8A0A3>瞋チッノナユ襄ヨ !T+ヘ<>Fヘ601C97C2F477D2F4F1E
:209E2000032100003E11F5B7C3359EF5E509D2349EF1373EE17B175F7A17577D176F7C1730
:209E400067F13DC22B9E7CB71F677<37>Z(#~+メZ(~<7E>+<2B> ヘウ&s#r<11><19>+ァムチノッ2オ(x㍉Oヘキ&テ<>(ッ2オ(x㍉Oヘウ&<19>9<EFBFBD>w#w+xァハュ(ム+r+s=ツ、(チ<11><19>>#w+ァタテ<EFBE80>&~<7E>7タユ<EFBE80>^#V00053580608C3579DEB1100000610C3579D636811000006187CB7FA6C9D7B175F7A2F
:209D600017577D176F7C176704C3589D223894EB22369478C9E52136"$ヘ<>"リ<>a.籘]&<26><>7ノヘ#yヘソ*テ.ヘヘ&<26>Xネ<58>つ{&ヘヘ&<26>佇>テa*ヘ6€#~ァツ<EFBDA7>&ナユ<EFBE85>3ヘレ&<26>#r<>チ>#+<2B>6#6#6#6@="ヘ#w睨ァテク&7<>ヘ?'チ<>##メネ&4##p#ノ#<23><>!9"タ$砒 <09><>$蕫セハv$チ<>+~#ヘ<>#テP$+<2B>G<>O>#ヘウ&チ裹`iGテュ$<24>*タ$<24><1A> ハ「$ヘ.<2E>衫ヘ&ヘ<>"<22>"タ$瞽フ/襦ハニ$#~+<2B>ツニ$<24>!"<22><><13>ヘk+.ヘ*x2j+ァ<>*<2A>(テ+#N+袁.ヘ*レN+x<> +#~+ケレ+耋k+翕 +yヘk+<2B> (<28><>!~#fo#~<7E>#w:j+<2B>ハ,+6~+<2B>ツ;+~<7E>
ツ;+6 <0C>ツH+~<7E>ツH+6ヘ、/テPD1F6FC90600D608DA5D9E435A510E00C3509EC6096FB1
:209E6000AF2DC8791F4F7A1F577B1F5F781F47C3609E5A94EB2A5C94444DC95E2356234E3A
:000<30><30><EFBFBD>(<1A><>(!~瞋ァノ瞋7ノヘ.ヨ遘タヘヘ&ッノヘ.<2E><EFBFBD>數~<7E>7タユ<EFBE80>!~#fo~<7E>)<29><>7ツ)#~+<2B>~<7E>w}D#wx#ノヘa.酲<>ヘレ&<26><>テ!)袗!リ<>9<EFBFBD>*イ?ム<>941E08B77E177723DA
:209D80001DC27C9DE1C91604CD759D15C2889DC911A99DD5CDDE711311FFFF4A215D94712C
:209DA000C978215D94B7FCB39D4623ヘ.<2E><EFBFBD>2b <20>ユ*コ<16>*カ<16> "カ|嬬<>&ツ }瀞 瞋ノ+++<11>:ァァタ蛬<EFBE80>?ハ'<27>4ハ'<27>`ハ':,<12>Xハホ/~2,ヘ?'<27>**s#r<>"*##ムs#r:ィァネテメ/ナユ*コ}双|枠"コ<16>s#r#ム袁ヘ&<26><EFBFBD>$<24><EFBFBD>$ヘ<>テヘ/<>$ヘ<>テヘ/ハ"%ユ袁<EFBE95>*<2A>s#r#ム<>"%ヘ<>テヘ/!]<11><14>>#ヘウ&<26>ムチq#p!<21>w+ァノ<EFBDA7>~ァハF%袁a.矣レホ/~⑧<>O+矣瞋チノ€ @ PPPPPP <20> X#セハ<EFBDBE>+<2B><>+ユナ<EFBE95><EFBE85><>++<2B>(<28>ムw#w+ァノヘ<EFBE89>ノ*R#~6+ァツエ+ユ<><01>ヘレ&<26>6€#s#r<>>6###s#r#6@"R=#w<11>ッノナユ00001FF
ミ>テa:クツc)2ェ>2ク:ク<00>ハo) ナヘLハ<4C>)<29>)<29>€<EFBFBD><C280>:ク<12>ハノ)<29>!ッヘuLヘ<4C><>)ヘ閃!、)袁bM眞テ<E79C9E>)チ*ゥ<>ハク)ヘウMヘ<4D>テト)ヘ⑭!ッヘ8Lヘ⑬皎ツ<E79A8E>)<29>@<40>7EE680A94FC3E39D1CC014C00CC00E8034C0C3949DD3
:209DC000E1AF676F225A94225C94C9E5CDF19DE173237223712370C3039ECDFB9DE5CDE681
:209D<39>*カ>(ヘ<>}倒壗v'!"(!("*<>*ク"コムチノ*シ}倒梦レ<E6A2A6>'"シ<16>6# xアツ<EFBDB1>'瞋チノ*ャ<16> "ャ<16>>レa:ー<16>ネ袗ナ<E8A297>y砒|オハス'ヘミz+テッ'*ョ<16>yチム睨ヘr,リ<>:クG<12>ツワ+!<,####~#クツ゚+F#N#~#fo蛬#foエハ,袗ムナユヘCHムチ眥<EFBE81>+##ムムチ~ノ眷ユ>ッヘ3)ムチ<EFBE91>6<EFBFBD>#p#6 ####蠣ヘ<E8A0A3>ヘS)<29>+w瞋チ~ノ<02><04>ン~<7E> <>!N#F#
<EFBFBD>ツ}25! F+N<>+p+q<01>
1<EFBFBD>#r<01> ノ~<7E>
<EFBFBD>2<EFBFBD> タ2<EFBE80>2ナ<32>^#V#~#fo<1A>7フ<37>(レ<>2"<22>2!N#F#~#foヘ<6F>(レ<>2"<22>2<EFBFBD><32>!q#pユ!<21>!>*/ト⑩<EFBE84>#r+s++テ0*/><00>ヘヲ0ム!~#fo~<7E><>ミ~<7E>Zフォ9 衄' ヘウ&<00> <09>><>ム><><11>ノ!N#F*<2A>9~#foエネ##^#V<1A>Xタ<58>!~#fo"1<>+ " H"テ16 " H"テty " H H"テナ "=====リ<>=w<>2ツ_.~#fo<66>肄ヘヘ&眄~#翳<>!y.ヘH~ヘa<><01><01>X[<01><01><01><01><01>ヘヘ&<26><>#~+<2B>ノ>ッ<>>2e ヘ.ヨ<>>2e チタヘヘ&|オツス.クネ<EFBDB8>!T~#<23>ホ.~#foテチ H"テ+0 " H"テns " H H H"テニ "===========<3D><01><00>!_,ヘH~睨<>.リネ>テa<1F>ナヘツ"チレn-:ェァハ<EFBDA7>,ヘ、/ヘ<>*ヘ、/>ヘソ*ヘ.袁ヘ&<26>醋v,<2C>萍ェ,<2C>篦w-`i)9^#V!~ァフ<EFBDA7>)yセツ~-#~#fo##A:ー<>:cマ<c<01><00>!<21>ヘ3r!"<22>*<2A>|/g}/o"<22><11>! cヘーv!"<22>!"<22>!"<22>!"!ク "!"!"!"  !cヘーv!炻ヘーv!<21>ヘーv+~+ngオネ##^#V<><56>4タ#####~ケタ#~クタ*<2A>9w#w#~#fo>ウ殆ヲq#pノ>1>1><02>*d02e0耋&1<>2e0ノ~<7E>レq1ナユ袁<EFBE95>9ヘ<39>9ハ>1ヘ&1テ21<32>ヘL1xァツ?1ムチノ:=================== ====================== =========H=============="
 " .栁.##~サ#~#ツチ.コツチ.<11>ッノテ<EFBE89>+ヘ.<2E><EFBFBD>*ヘヘ&ヘツ"リ<>ノヘ<EFBE89>"リ<>ネヘ<EFBE88>> 2ォq<>"<22>/y2「/2」/⑯ヘレ&<26>#s#r++<2B>+++~貘睫5/ |<13>xアハ]/!^#Vz」<=====H==========H================== ========H====================="! " & H -耋、/xケ>トソ*<2A>
<EFBFBD>,^#V#<23>F(ヘ、/> ヘソ*<2A>ホ,砒#~ヘU,o&"ゥ>2クヘヒ+ヘF(ヘ、/> ヘソ*皎ノ"3-x⑧<78>O>$ヘウ&H"<22>-ムs#r#
ツ(-H<00> <09><>+V+^<5E>F(<28>s#r#!臙ヘーv!ヤbヘーv!"T!<21><>"V!"X!<21><>"Z!"\!"^!"`!"b!"d!"fテユ 35<><10> 1000,5テ%* " e0=ハe1<65>1ヘq1ヘ<31>4ヘヌ1ヘ€2テ<32>2テN2ヘq1ヘ<31>4テ<34>2ユ蛬<EFBE95><>1ニ<01>ツセ1^#V<1A><>>ハセ1>テセ1ヘリ9<EFBE98><39>1>テセ1#~<7E><>1<EFBFBD><>1####^#V<1A>メセ1><>###w睨~<7E><>2 H"テKP " H"テ」 "* g フ<>/zウフ<EFBDB3>/ヘ唏ト<E5948F>/DMム!「/5眥5/xアハ<EFBDB1>/<2F><11>~ヘU,!<>/=ツw/DMヘ<4D>'<27><>+r+s<>:」/O<><>!ノヘ<EFBE89><>*<2A>s#r#ユ"<22>オレ瞋#~+ミヘ<EFBE90><05>*<2A>++"<22>睨矣<E79DA8> H | |"テsx " H Easy Street"テカ " ム
ツ=-ムユヘU,w*<2A>-<11>w+ヘ、/<2F>ノ痒ヨOリテn-ヘ<>テn-ヘ<>テn-*カ<16>*シ}点|啗メ<E59597>-ヘ\Hヘ7I Bytes Free
緩ヘ<EFBFBD>.リハヒ-:ア諤タ:g ァタヘ.<2E>淙>テa~ V $"テhm " H"テォ " Hハ<48>9ナ袁リ9GレB2N#^#V#~#fo
<EFBFBD>(レB2<42><32>(レ<>1眞Fヘ6Fノx<EFBE89> ハB2縷羸ツB2Oユ<4F>!~#foヘ<6F>(レA2"J2<4A>"L2<4C>~<7E>#F!E2w#p+ヘ6チ<36>! s#r`iチFノ矣チノ鞏ト H *"<> "===============================================================================" 矣ノムノ!9"<22>/!<21>/"h ヘ0ヘ<30>1<03>*ク"コ!"("ァ"h !("*ッ2,ヘ?'"/!(~#foエハ_0"<22>9##蛬#fo袁<6F>9ヘ<39>9ハ90ヘ
1ヘ1ヘ1テ'0痿ヨYハA0=フf0ヘ
8<EFBFBD>:ー<16> H H"<> " =========H==========H========= =======================">ワa:ア諤ツ<E8ABA4>-###^#V<>*<2A>{布慥<E5B883>-ヘ<><03>"<22>>?テW*袁メ/ム>?テW*:b ァ*c タヘセ2b "c ノユ*<2A><12>*<2A>ヘ5Hフ +V+^"<22><12>ノヘヘ&<26><>D.<2E>桄J.ヘ<>ノヘF(テN.ヘネ' H"<><11> " =========H==================================================" " 45 750,8テdi " $"テク " H $$$$$ H"" "==========H=== H"  "============== | H"テ\!a! " n ^ H"テエ!ケ! "* テヤ " | H"テ(- " H | & |"テqv " s ======================H============================== ==========="<><1F> " t & H"  " H |V =H==============H"テuz " H H H"テヘ " H"テ[` " Long Island | g * | * H"テウ "============================== ^^^ H *" "" "===================================================================== . . H"テ€<19> "====H===================== ====== ================ ====================== " & H"テナ " H"  " | H H V| H"テdi "====H======================= ========================= ====================== "テrw " H"テ€<17> " H" H & H H"テ%* " ============== ==== = ====== ================================================="テシ 35テネ 900,5 " V V ==========""" 36テ!"&" 800,5テo"t" " V V"テx"}" ""テタ"ナ" " テ<><19> " H"テウ " H |"  " H | . . H"テl q " T ==================H=================H===================H======="テシ チ " o テヤ " H & | . . H"テ,1 "========================== ====== == = ==== =====H===== H"テ}<1E> " G ^^^ ^^^^^ ^^^^ ^^^^ ^^^ ^^^ $"テヘ V $"テmr " $$$"テナ " g H H H | H"## "=====H=====--======H========================== ===--- H"テ_d "========================= ======== ============== ==================H== "テウ " H H" !! " w ================= ===================H== "テ€<18> " H" " h |"" " o | H -====H==========="テ[#`# " H H |&& H"テ」#ィ# " H H H"テモ)リ) " H H . H"テ!*&* "===H==============-----------========= * * *H *H"
(( "=======================================================================テ1.6. " HHH HHH"テp.u. " H >mmmmmmmmテセ.テ. " H=====H =============="テロ%<25>% " H & H"テ#&(& " H H H"<>,<2C>, " H & H ================== H"<>#<23># " H H tunnel H H"テ?$D$ " H ===H==== H"テo*t* " H H H"テチ*ニ* " H ========"(( 35($( 750,7テ2(7( " $"テy(~( " H V"<>(<28>( "========== ==================== H"// " H |===== \ / V | H"テk&p& "====---==== H | H"テウ&ク& "| | & H"<>,<2C>, " ==========-------------------------=======----------==================="<>,<2C>, ""テK-P- "^^^* =======---===----=================H= H H"<>$<24>$ " H | vision H =====H=============="+
+ " H H H"テ゚(<28>( " HHHHHHHHHHHHH .HHHHHHHHHHHHHH H g"テ7)<) " & =====H=========="テd/i/ " H \/ H"テイ/キ/ " H ================---===---=================== H"テ '' "| === | H ^^^^^^^^^^^^^^^^^^^^^^^^^* *^^^^^^^^^^*Point of No Return*^^^^"テ」-ィ- "============================================== H H"<>$<24>$ " H =========---& -----============H H H"テ;%@% " H H H"テI+N+ " H &..^^^.....^..^ . ^^ H==--------- H"<>+<2B>+ " H ============================H & V H ==H=========="<>)<29>) " H | $ H"00 " H H | H H" H g"テa'f' "| $ | H ===H======="テイ'キ' "|* $$$ *| * ================================="テャ-ア- 37テク-ス- 700,6.. " Bug City HHHHHHHH V" H | H H"<>%<25>% " H H=========----===----================ H H"<>+<2B>+ " H === === === H ---------=================H======"テE,J, " H テN0S0 " H ====H======= g |&H H H"<>0。0 " H H ===============================H===========H===== & H"
77 " H H H | & H | [] |_| | & . H"55 "===========H | |_| | H === ヘヤo!<02>!ヘI<EFBE8D>/g}/o|オツP;!ヘノ<EFBE8D>!喘ヘщヘソq!cヘgpヘソq!cヘgpヘソq!zbヘgpヘソq!Sbヘgpヘ針!ヘノ<EFBE8D>ソq!cヘgpヘソq!-bヘgp!#bヘ)i#!ヘ"vヘエs"&# H"<>2<EFBFBD>2 " H========== ===== = ============"33 " }i{ | $ ^ &"テq9v9 " |^^^^^^^^^^^^^^ $ ^ ======"テノ9ホ9 "* ========H ======"<>0<EFBFBD>0 " H H &| H H"テD1I1 " H && H"テ]7b7 " H H H | &&&&& H"テー7オ7 " H ===================H"テk5p5 " V H ============= H====== H"テセ5テ5 " H *&ヘTv(ヘーv!<02>#!ヘ"vヘエs"&#*&ヘTv+ヘーv!<02>#!ヘ"vヘエs"&#*&ヘTv.ヘーv!<02>#!ヘ"vヘエs"&# H"テg3l3 "* H *"テソ3ト3 "================== . & ^ H*^ ^ ^ ^^^^^^^^^^^^"テ!:&: "================================================ H &| H H }{ =====H===="<>1<EFBFBD>1 "===H===& H =====================H H H H | =============H"<>78 " =====------================= H | $ $"テ H & H"66 " H H | *&ヘTv1ヘーv!<02>#!ヘ"vヘエs"&#*&ヘTv4ヘーv!<02>#!ヘ"vヘエs"&#*&ヘTv7ヘーv!<02>#!ヘ"v:ヘーv#!============================================================="テネ3ヘ3 32テメ3ラ3 0,6テ"4'4 " =Gang Land= ==============================="テ*:9c -1:€o&"!ムbヘーv*"!テe:€*!n&ヘ学ヘCrヘーv*!#"!*!<0F>*zャ|偰:}倒<>メH:ヘh<EFBE8D> H"<>1<EFBFBD>1 " H H H H"テ:2?2 " H O8T8 " | H | $$$ $$$"<>8・8 "====------=== | | H"テd6i6 " H H ^^^&&^^^ & ^ ^^^ H H | =============H"テキ6シ6 " H======H ======ヘTv=ヘーv#!ヘTvヘニr"@#!ヘTvヘニr"B#!ヘTvヘエs"D!<02>#!ヘ"vFヘーvF!ヘ7vF<0F>!ヘ"vムヘCrFヘーv!テ€=* V ."テr4w4 " == _ == ."テナ4ハ4 " g!ヘbヘ煙タb! ヘア<EFBE8D>!ヘャo#! ヘヤo!<02>!ヘI<EFBE8D>/g}/o|オツn;!ヘノ<EFBE8D>!タbヘщヘソq!cヘgpヘソq!cヘgpヘソq!ィbヘgp!ヘbヘ煙喘! ヘア<EFBE8D>!ヘャo#! H & H"<>2<EFBFBD>2 " ======H=== ======= H <> & H | $$$$$ $$$$$"<>8<EFBFBD>8 " | = | ============= ============"テ0959 " !<02>#!ヘ"vヘエs"&*&|オツC=*!)<11><11><>s#r*!ヘcx bヘ縋テ|=#bkヘTvヘニr<EFBE86>*!)<11>ムs#r*!ヘcx#<00>*&ヘTv<54>ヘ縋*!#pヘソq!ソヘgpヘソq!Q\ヘgpヘソq!cヘgpヘソq!\ヘgpヘソq!cヘgpヘソq!<21>ヘgpヘソq!cヘgpヘソq!゚[ヘgpヘソq!cヘgpヘソq!ク[ヘCp!<21>
<EFBFBD>fヘーv!
ヘ学<EFBE8D>!fヘ講ロCテ<43>>*ヘ8_ヘCp!("Y! "[[!Yヘ@dヘソq!#_ヘCp0*ヘ学ヘCp!nヘ輹&c!Z範捏ヘセu"cヘ哿"]*<2A>"_ヘァX!"[!"Y[!Yヘ@dヘソq!_ヘCp!aヘRc*a|オツV*!)<11>^#Vユ<56>|オハ5H*!#"!*!<0F>*ゥzャ|<7C>.H}倒<>HテzH*ァ)<29>^#Vユ*!)"<22>hムs#r<>^#Vユ*<2A>~ムs#r*<2A>#"<22>*!)<11>s#r*<2A>"ォpヘソq!cヘgpヘソq!cヘgpヘソq!p`ヘgpヘソq!Q`ヘgpヘソq!8`ヘgpヘソq!cヘgpヘソq!cヘgpヘソq!(`ヘgpヘソq!`ヘgpヘソq!<21>ヘgpヘソq!ン_ヘgpヘソq!ヒ_ヘgp!("Y! "[[!Y<>*<2A><0F>s#r<><19>*!<0F>s#r*<2A>#"<22>*<2A><0F>*<2A>zャ|<7C>/F}倒<>メ窪*!#"!*!<0F>*<2A>zャ|ⅡF}倒<>メ9E*w#"w!テnF*!)
s#r*!#"!*!<>|レ~F)レ\"!*!<11>|<>=)レ<><!ヘノ<EFBE8D>ソq!4ヘCp.!+<>!1dB@!Dヘ3d:!bヘ講ラ=!ヘ学Iヘーvテ<76>=I!bヘーv=!bヘ講<EFBE8D>=*<2A>"L<>=*<2A>"L!
bx#"<>*<2A>"_*R"i!"k*T"!"m!d"o*P"q*"s!"uヘnt!"w!yt*y|オツゥ!"q*s##"s*s<11>|レwD)レ€D!"sB*]+"]*]|<7C>Bオツ<EFBDB5>!nヘ2uc-Bc!訖ヘーvテ6Bc!ヤ^ヘーvヘケX*a|オハーA!"[!"Y[!Yヘ@d*aヘ学fヘーvf!ミ^ヘnuf<0F>!フ^ヘnuム|イg}ウo|オハ<EFBDB5>*"ュ!テqL!ッヘRc*ッヘ学ヘーv*ッ|オハRI*ッ<11>|オツクHヘsYテRI*ッ<11><>|オハ<EFBDB5>>! ヘ置゙HF!アヘ+s"<22>テRI*<2A>|オハ<EFBDB5>*<2A>"<22>テRI*<2A>ヘcxQ<00>*<2A>)@dヘソq!セ_ヘCp!<21>ヘCp!("Y!
"[[!Yヘ@dヘソq!ア_ヘCp!(ヘCp!("Y! "[[!Yヘ@dヘソq!ゥ_ヘCpF!ヘ"vヘCp!拈ヘCpF!ヘTvヘCpヘソq!狙ヘCpFF*<2A>"<22>!テッF*!ヘcx「<00>
s#r<>s#r*!#"!*!<0F>*<2A>zャ|愑F}倒<>メ孝*<2A>"<22>*<2A>"<22>*<2A>"<22>*<2A>"<22>*<2A>"<22>"<22>!"<22>!"<22>*"<22>!Gヘ+s"!*!|<7C>>オヨ?殀o"N*!|オツ)>!"PテC> *!<19>!<21>ヘTvヘ<76><EFBFBD>"P!bヘ+s"!*!|<7C>Z>オヨ?殀o<E6AE80>*N|イg}ウo"N*!|オツ|>* "R<>>*テAD*w<0F>*qzャz哿D{布<>レェD*q#"q*u##"uテAD*u<0F>*y}登|喩"y*y"{!}t!t*s<>EンD<EFBE9D>EE*}ヘcxヘ縢ヘ輹cヘ哿"}E*}ヘ檜"}Bヘソq!ソ^ヘCpヘ針f!サ^ヘnuf<0F>!キ^ヘnuム|イg}ウo|オツ Df!ウ^ヘnuf<0F>!ッ^ヘnuム|イg}ウo|オツ<EFBDB5>:f!ォ^ヘnuf<0F>!ァ^ヘnuム|イg}ウo|オツ Cf!」^ヘnuf<0F>!歐ヘnuム|イ^#V<>|オヨ殀o"<22><0F><11>|I)?殀o<E6AE80>*<2A><0F>|イg}ウo|オツRI*<2A>"<22>!"<22>*。<11><>|レII)メRI!"。*エ)<11>^#Vユ<56>|オハmL*エ)<29>h^#V<>"カ<0F>~^#V!ヘTvヘCp!ЮヘCpF!ヘTvヘCp!
"[[!Yヘ@dヘソq!f_ヘCp!("Y!"[[!Yヘ@dヘソq!X_ヘCp!テ=A*[#"[[!Yヘ@dヘソq0*!ヘ学ヘCp!S_*!)<11><11><>s#r*!#"!*!<0F>*<2A>zャ|<7C>&G}倒<>G!"<22>"。*"」*{"y!"・<11>!・ヘ@dヘソq!ア[ヘCp!iヘ}cヘソq!、[ヘCp!kヘ}cヘソq!房ヘCp!ヘ}cヘソq!8!<19>!<21>ヘTvヘ<76><EFBFBD>"R!<21>ヘ+s"!*!|<7C>ュ>オヨ?殀o<E6AE80>*N|イg}ウo"N*!|オツマ>!"T<>> *!<19>!<21>ヘTvヘ<76>v.cヘ<63>"Tヘソq!7ヘCp!ヘEwVE*}ヘ縢ヘ輹cヘ哿"}E!"}!"<22>ヘソq!7ヘCp*<2A>"<22>!テ7F!#ヘ-tヘソq!#ヘgp!テjE*!ヘcxQ<00>*<2A>)
s#r*<2A>#"<22>*<2A><>|レzE)レNE!#g}ウo|オツ鮏テユAヘソq!7ヘCpヘソq!cヘgpヘソq!\^ヘgpヘソq!^ヘgpヘソq!^ヘgpヘソq!cヘgpヘソq!ツ]ヘgpヘソq!]ヘgpヘソq!@]ヘgpヘソq!)]ヘgpヘソq!cヘgpヘソq!<21>ヘgpヘソq!テ\ヘg<EFBE8D>"ク*カ"コ*ク"シ*クヘcxQ<00>*カ)
^#Vユ<56><11>|オツレI*エ)<11><11><>s#r*<2A>+"<22>!カヘ@dヘソq!w[ヘCpテmL*クヘcxQ<00>*カ)
^#Vユ<56><11>|オツLJ!nヘCp*!)<11>^#Vユ<56>)レ9A*!)<11>裔ヘ}cヘソq!L_ヘCp*!ヘcxヘCp*!#"!*!<11>|レMA)レン@*|<7C><>オハ<EFBDB5>*[##"[[!Yヘ@dヘソq!=_ヘCp!ヘ}cヘソq!_ヘCp!<"・<11>!・ヘ@dヘソq!<21>ヘCp!yヘ}cヘソq!8_ヘCpヘァXc!{[ヘーvヘケX*<2A><0F>*zャz撝G{布<>メzH!nヘムw<EFBE91>*<2A>ヘ縢ヘ咊<EFBE8D>!Z範捏ヘセu*cヘ哿"ァ*"ゥ!Hヘーvヘソq!VヘCpヘソq!メaヘgpヘソq!VヘCpヘソq!病ヘgpヘソq!VヘCpヘソq!^aヘgpヘソq!VヘCpヘソq!&aヘgpヘソq!VヘCpヘソq!<21>ヘgpヘソq!VヘCpヘソq!ツ`ヘgpヘソq!VヘCpヘソq!秦ヘgヘェs"<22>!F#*<2A><0F>!ヘTvヘ+s+"<22>*<2A>|オツキE*<2A>"<22>*!"<22>*<2A>|オツノE!"<22>*!ヘcxQ<00>*<2A>)
<19>*<2A><0F>s#r*<2A><11>|オツF*<2A>#"<22>*<2A>)<29>ヘ輹c!Z範捏ヘ哿"セ*セ#ヘ<>J;J巷*エ)<11>蘓#V<>)^^#V疽#rテ巷*エ)<11>s#rテ巷*クヘcxQ<00>*カ)^#V<>|オヨ殀o"<22><0F><11>|レxJ)?殀o<E6AE80>*<2A>殀o"<22><0F><11><>|オヨ殀o<E6AE80>*<2A><0F>|イg}ウo|オツヲPテオP!"<22>*<2A>"<22>テセP*<2A>"<22>"<22><11>!<21>ヘ@dヘソq*<2A>ヘcxQ<00>*<2A>)
^#V<>#<23>!ヘTvヘCp!カヘ@dヘソq*。#<23>#r!カヘ@dヘソq!cヘCp*。)T^#V*カ"カ*クヘcxQ<00>*カ)
^#Vユ砒<11>|オニ<EFBDB5>殀o"<22><0F><11><>|オニ<EFBDB5>殀o<E6AE80>*<2A><0F>|「g}」o|オツセP*<2A>"カテセP*<2A>"。*。<11><>|Uヘソq!鎧ヘgpテPU*<05>|U)レ+Uヘソq!tZヘgpテPU*<11>|レ8U)レGUヘソq!ZZヘgpテPUヘソq!3Zヘgpヘソq!cヘgpヘソq!ZヘCpヘァX!cヘ`n!fヘハf!ヘ"vfヘーL}倒<>メ粂ヘUXヘ
sヘ哿"!*」+"」*」|<7C>ィLオツルL*y+"yヘ?X*y|オハンR*y<11>|レヌL)メモLヘソq!IヘCp*"」*<2A>"カ*<2A>"ク*<2A>|オツ<EFBDB5>*。"ツ*<2A>"。*クヘcxQq*!<0F>!ヘTvヘCpヘ~X*!#"!*!<0F>*ホzャ|<7C>,S}倒<><><11>!<21>ヘ@dヘソq!IヘCp*<2A>ヘcxQ<00>*<2A>)
^#V<>#<23>!ヘTvヘCp*"ミ!テ甦*!)<11>^#Vユ<56><11>|イg}ウo|オツ;J*エ)<11>^#V<><56>・J・JKK*ク#"ク*クヘcxQ<00>*カ)
^#V<>|オヨ殀o"<22><0F><11>|レリJ)?殀o<E6AE80>*<2A><0F>|イg}ウo|オツ訪!nヘ柧!Z範捏ヘセu!ヘTvヘCp*カ"<22>*ク"<22>*クヘcxQ<00>*カ)
^#V<>"ニ*ニ<11>|オツeQ*<0F>*y"ヘワW*クヘcxQ<00>*カ)
s#rテフQ*ニ<11><>|オハQR*ニ<11>|オハンR*ニO)メO!"。*。)T^#V*カ"カ*ク#"タヘFW*タヘcxQ<00>*カ)
^#V<>オツdO*タ#"タ*タ<0F>*<2A>zャ|褜O}倒<>レdOヘFW*ォ|オハoOヘワW*<2A><>薫薫徹徹v!fヘェs|オツ俵*<2A>"ォテ@V*<2A><11>|オハV*<2A>"メ!<>*ヤ)<29><11>^#V<>"<22><0F><11><19>*<2A><0F>s#r*ヤヘcx<00>"<22><0F><19>*<2A>ヘ縋*ヤ+"ヤ*ヤ<0F>*メzャz<EFBDAC>U{布<><00>*カ)
^#V<>オツ^M*クヘcxQ<00>*カ)^#V<>|オヨ殀o"<22><0F><11>|レ@M)?殀o<E6AE80>*<2A><0F>|イg}ウo|オハ^M!"。テワM*。#ヘ<>セPpMワMCNCN*ク+"ク*クヘcxQ<00>|オハンS*!)<29>~"<22><0F>h<19>*<2A><0F>ヘ@dヘソq*!)<29>~^#V<>cxQ"<22><0F>h^#V*<2A>)
^#V<>#<23>!ヘTvヘCp*!#"!*!<0F>*ミzャ|氿S}倒<>メrS*i+"icヘ哿<EFBE8D>*エ)<11>ムs#rテ階*エ)<11>^#V<>)T^#V*カ"カ*クヘcxQ<00>*カ)
^#V<>|オヨ殀o"<22><0F><11>|レ\K)?殀o<E6AE80>*<2A><0F>|イg}ウo|オツ訪*エ)<11>蘓#V<>)<11>|オツフQ!nヘ輹c!Z範捏ヘ哿"ネ*ネ#ヘ<>フQョQタQ*<2A>)^^#V<>"<22>テフQ*<2A>"<22>!"<22>*"ハ!テ6R*!)<11>^#Vユ<56>|オハ2R*!)<29>h^#V*<2A>}ォo*ク+"クテ徹*ク#"ク*クヘcxQ<00>*カ)
^#V<>#ヘ<>?P?P躇?P<>?PソOテ?P*<2A>"<22>"<22>!"。*<2A><11><>|レロO)レ膂!"<22>テセP*<2A>"カ*<2A>"クテRP*<2A>"カ*<2A>"メュU*<2A>)<11><19>*<0F>s#r*<2A>ヘcxfヘ縋テ@V*<2A>#"<22>*<2A><11>|レ=V)レT*ォ|/g}/o|オツ<EFBDB5>>ヘソq!cヘgpヘソq!cヘgpヘソq!cヘgpヘソq!cヘgpヘソq!cヘgpヘソq!*カ)
^#Vユ砒<11>|レ儁)?殀o"<22><0F><11><>|オヨ殀o<E6AE80>*<2A><0F>|イg}ウo|オツセP*<2A>"ク*。<0F>*ツ}ォo|ェオハセP*ツ"。テ^M*ク#"ク*クヘcxQ<00>*カ)
^#V<>|オヨ殀*i|<7C> TオツモF*<2A>"ォ!テ-V*<2A>)<11>^#V*zャ|<7C>0T}倒<>レ)V*N|/g}/o|オツQTc!H[ヘーvヘケXテ@V*<2A>"ォヘソq!7ヘgpヘソq!cヘgpヘソq!cヘgpヘソq!cヘgpヘソq!^^#V疽#r*コ"カ*シ"ク!コヘ@dヘソq*シヘcxQ<00>*コ)
^#V<>#<23>!ヘTvヘCp!カヘ@dヘソq!s[ヘCp*エ)<29>h<19>*カ<0F>s#r<>~<19>*ク<0F>s#r*カ<0F>*<2A>}|ェオヨ殀o"<22><0F>~^#V*<2A>}ォo|ェオヨ殀o<E6AE80>*<2A><0F>|「g}」o|オツンR*!#"!*!<0F>*ハzャ|R}倒<>メリQテコGヘソq!IヘCp*y|<7C>モRオハモR*y"フ!テサR*y+"y*#"*。|オヨ殀o<E6AE80>*。<11><>|オヨ殀oム|イg}ウo|オツRP*。)^^#V<>"。*。"<22>テセP*<2A>+"<22>*<2A>|<7C>RPオツセP*<2A>|/g}/o|オツオP*クヘcxQ<00>*カ)^#Vユ砒<11><>|オヨZヘgp!ヘbヘ煙タb! ヘア<EFBE8D>!ヘャo#! ヘヤo!W*!ヘcx<00>ヘェsヘ学<EFBE8D>*!)<11>^#V<>ヘsムヘCr"<22><0F><19>*<2A><0F>ヘCrfヘーv#!fヘ睦*!ヘ謖*o"<22><11><>|オヨ殀o<E6AE80>*<2A><0F>|イg}ウo"<22><0F><11>|レ+N)?殀o<E6AE80>*<2A><0F>|イg}ウo|オツセPテスM*ク#"ト*トヘcxQ<00>*カ)
^#Vユ<56><11><>|オツ年*トヘcxQ<00>*カ)
scヘgpヘソq!cヘgpヘソq! [ヘgpヘソq!cヘgp*w<>レャT)レサTヘソq!<21>ヘgpテPU*;<3B>レネT)レラTヘソq!ヘZヘgpテPU*<17>レ腟)レ<>ヘソq!ョZヘgpテPU* <0B>|U)ォo|ェオヨ殀o<E6AE80>*ク<0F>*<2A>}ォo|ェオヨ殀oム|「g}」o|オツンR*<2A>|/g}/o|オツmL*ク+"タヘォW*タヘcxQ<00>*カ)
^#V<>オツmL*タ+"タ*タ)レmLヘォW*エ#"エ*エ<0F>*ュzャ|劜ヘワWヘ?X!"・<11>!・ヘ@d*!}<7D>o|<7C>g|オツォRヘ~XテキRc!j[ヘーvヘツX*!#"!*!<0F>*フzャ|昕R}倒<>メrR*k#"kテJDヘソq!IヘCp!ヘェs"ホ!S<11>!<21>ヘ@dヘソ!#"!*!<11>|W)レォV!ヘノ<EFBE8D>!ヘbヘ煙タb! ヘア<EFBE8D>!ヘャo#! ヘヤo!ヘノ<EFBE8D><EFBE89>>*"ヨ!テ淡*<2A>)h^#V*カ}ォo|ェオツ燦*<2A>)~^#V*タ}ォo|ェオツ燦<EFBE82>typing SPACE. But beware of the falling rocks called Der rocks.>ナ]You control Lad by typing the direction buttons and jumpingt ready! 擬Bonus time 兌 Score
ァ[ Levelエ[Lads$サ[Type RETURN to return to main menu: 禺Good luck Lad.!<21>Type an ESCapOREbPRO MEN bPRO LEVELbbY#b&bLADCONF#0bLinking to configuration program...$VbLadder configuration program missing}bUna・<11>!・ヘ@dc!觝ヘーvヘソq!cヘCp!<21>
<EFBFBD>fヘーv!ヘ学<EFBE8D>!fヘ置<EFBE8D>>!
ヘ学<EFBE8D>!fヘ講拑<11>!・ヘ@dヘソq!cヘェsヘEwヘCpノヘ針餾Type RETURN to continue Ladder
`L = Change level of difficulty
+`P = Play game;`Los Angeles, Ca 90024T`10970 Ashton Ave. Suite 312s`(c) 1982, 198*##"*<2A>"ォ*<2A>#"<22>*<2A><0F>*ヨzャ|孖W}倒<>メRWノ*カ<0F>*<2A>}ォo|ェオハシWノ*タ<0F>*<2A>}ォo|ェオハヘWノ*##"*<2A>"ォノ!$"・<11>!・ヘ@d!ヘ}cヘソq!IヘCp*<0F>*o by^treasures and riches.>^dark corridors never before seen by human eyes and find hidden@_^You are a Lad trapped in a maze. e to pause the game.:\Remember, there is more than one way to skin a cat. (Chum)/T\that are left when you have finished the levble to link to LADCONF.COM 拊LADCONF.COMォbLadder not configured
テbLADDER.DATミbRヤb
ラbpbdqPbdbPpo-_軛gpbqp <0B> -=$|VH*^.& <0B>bg-=: ZZUpdating high scores..."ZEnter your name: $6ZYou really don't deserve this but...]ZNot bad for a young LadwZAmazing! 3 Yahoo Software/伝LLLLLLLL aaa aa ddd dd ddd dd eeee rr/ナ`LL aa aa dd dd dd dd ee rr/<2F>LL zャz<EFBDAC> X{布<>Xノ*m#"m*mヘcxd"o*i#"i!"・<11>!・ヘ@d!iヘ}cノ!G"・<11>!・ヘ@d!yヘ}cノ*}"リ!テeX*レ#"レ*レ<0F>*リzャ|偰X}倒<>メaXノ* Your mission is to explore the「^lヲ^Lェ^iョ^Iイ^cカ^Cコ^pセ^P
ツ^Exiting...マ^eモ^Eラ^You eat quiche!饋Come on, we don't have el.=<3D>statues (shown as &). You will receive the bonus time points.ニ\Extra points are awarded for touching the gold2<64>A new Lad$|VH*^.& c c1.30c@<40>€PC<50>z<><00>」p=
ラ#zヘ針(c)1982 Yahoo Software<72><1E><00>aレfc<66>{メfcヨ 痍#ッwノ<77> |キハxc=痍#wノ^#V You rate!!校Looks like we have a Lad-Der hereアZYeah! Now you are a Lad-Wiz!ミZWow! You are now a Lad-Guru!<1C>You are a true La aa aa dd dd dd dd eeeeee rr5)aLL aa aa dd dd dd dd ee ee rr rr4aaLL aaaa ddddd dd"ワ!テ珊*レ#"レ*レ<0F>*ワzャ|奝X}倒<>メ街ノ!゙ヘRc*゙|オツカXノテァX!"<22>テネX!"<22>ヘ4Y*<2A>"<22>!<>!aヘRc*a|オツYヘ~X*<2A>#"<22>*<2A><0F>*<2A>zャ|<7C>Y}倒啾ll day! _Enter one of the above: &_Difficulty level: ;_00 @_Last Score: O_00 V_) [_High Scoresi_Jump = Space Stop = O will be awarded for every 10,000 points.,]bonus time runs out.<C]You must find and grasp the treasure (shown as $) BEFORE the@<40>"馗ッ2鐵ogユ<67>*馗|諤ムツゥc "馗テ縦ユナ>0ア_:鐵キツチc{<7B>0ツチc テニc><3E>2鐵チムツ皇*馗]>0ウ_ヘ<><18><><EFBFBD> ユ~2HeキハdG#^#V!Iew#d-Master!!!:[ YAHOO! YAHOO! YAHOO! YAHOO! YAHOO! YAHOO! YAHOO!K[YOU CHEATED!!! You don't rate.m[Hooka!v[oz[*
~[Geddd eeee rrrrrrr:和LL dd dd tm"ユaLL dd dd 俉PRO SCメラX*_|オハY!"<22>Y*<2A>"<22><11>!・ヘ@dヘソq!cヘェsヘEwヘCpノ*L|/g}/o|オハCYノ*_|オハTY!"<22>テZY*<2A>"<22>!"・<11>!・ヘ@dヘソq!cヘCpノ!Zヘーv!"ther
㍉ Right = 農 Left = <09>_ Down = ャ_Up =
エ_Terminal:
チ_Version : ホ_E = Exit Ladder濱I = Instructions<14>C = Configure<>痿2HfキネG#^#V!Ifw#dノ~2HgキネG#^#V!Igw#ツ*dノ~2Hh2Ih
2Jhノ~G:Ih€2LhG:Jh€2Kh:Heキハ`d!IeGヘ濺:Hh<48>ハ硬<EFBE8A><><EFBE8A>ハ{d:Khヘ鹽テ電:Lhヘ黠ヘ|
STOミヘYmテ針ヘ穃*虔鳬..
. ........ヘカz<EFBDB6>*<2A>|オツ曜:<3A>ァツk*靖|オハkユヘ虱<EFBE8D>*
 s#rム*
 {w#6<00>"<22>*リi<EFBE98>*靖>2<>魃<テ檀ッテ檀=#DM*<00><00>"ホx* |##"フxテj>テ2栄2敬*^#V<>"撹<>##^#V<>"紘 2宿キ!ハンh!!""辛!j" j6#6P><3E>2j>2j><3E>2jノナユ袁韻!<21>fヘ`B!
ヘZB<5A>!f<>=ロCテ<43>>*#"<>*<2A>"_*R"i!"k*T"!"m!d"o*P"q*"s!"u!"w!y*y|オツcヘK;ヘW;!-bヘ];!#bヘ#!"&#*&(ヘ_:!
;#!ヘu;ヘx;"&#*&<>;+<>;!<>;#!<>;ヘ「;"&#*&m~<7E>#~壗m+^#V#<23>##テ<>###テ<>痞オハ(m~#foチノ!<21><>0mチノヘ|
Internal Error - No Line Number
甘&i*~#カハトmヘ| at line<6E>ヘ虱ヘwmテ穃<EFBE83>><04>ォm<dテ電:Khヘ;eテ電:Lhヘ;e:Hfキハ。dG!Ifヘ濺:Hh<48>ハホd<EFBE8E>ハナd<EFBE85>ハシd:Lhヘ鹽テヤd:Khヘ鹽テヤd:Lhヘ;eテヤd:Khヘ;e:HgキネG!Igテ濺~ヘ;e#ツ濺ノ_!<21>|諤ツe <0C><>ヘ穃ヘ|Error -<2D>!-k~<ハ&k=サハ&k#~ァ#<23>kテk#ヘ!|テ核Syntax Error in DATチRETURN without GOSUツ
Type Mismatc<74>Out of Dat<61>Illegal Functihキテ"iナユ袁敬テ"iナ<02>iナ<05>ユ襄<EFBE95>_ヘ<00>ムチノテ<>ヘタ蝦=i!&<26>6C#6O#6M!\>!ヘk<EFBE8D><1D>!\> ヘL届チ<E5B18A>\<ハt<EFBE8A>!9%.淑>AヘL<EFBE8D>.<00>キハ㏍D!"q*s##"s*s<11>|レwD)レ€D!"sテAD*w<>}ナユ袁彩e<E5BDA9>ツb<EFBE82>!ゥ ~#fo"ィo!イ "ェo瞋チノヘ<EFBE89>|キツュj袗<6A>*ィo}登|喩レw<EFBE9A>"ィo*ェo<EFBDAA>"ェo睿,{#s#r++ヘア;.ヘキ;!ヘタ;#!ヘノ;ヘフ;"&#*&ヘロ;1<>;!<>;#!<>;ヘ<>;"&#*&<4 <!<#!<ヘ <"&#*&ヘ/レ仁ヘ、m<EFBDA4>ツzm<7A>ォm<レ仁ニ0ヘw掴、m<EFBDA4>メ稽ノ}点|啗ノ!コmヘG冬#fo<66>><3E><EFBFBD><EFBE89><EFBFBD><EFBFBD><18>リヘ| at address<73>矼|ヘr}ヘr肄テ穃>
ヘw<EFBFBD>>
テw貞!9"ミi睨ム*ミi<EFBE90><69>>0アOxキツey<65>0ハe<06>ヘ;e!<21>|諤ツ%e <0C>exキツ/eyキハ5e>0アヘ;e>0ウテ;e袗ナ_チム睨*:9c -1:€o&"!ムbヘ<62>*"!テe:€*!n&on Cal<61>Overflo<6C>Out of Memor<6F> Subscript Out of Rang<6E> Division By Zer<65>Out of String Spac<61>String Formula Too Comple<6C>RESUME witiotテ|i!#&<>\ムキタ!€>シツ/*OUT OF MEMORY*
$オヨ?殀o<E6AE80>*N|イg}ウo"N*!|オツマ>!"T<>> *!<19>ムs<EFBE91><EFBFBD>ヘppテQqヘ<71>ヘ{pテQqヘ<71><EFBFBD>テQqヘ<71>ヘFpテQqヘ<71>ヘppテnqヘ<71>ヘ{pテnqヘ<71><EFBFBD>テnqヘ<71>ヘリpテ|qヘ<71>ヘppテ!qヘ<71>ヘ{pテ!qヘ<71><EFBFBD>テ!qヘ<71>ヘリpテ!qナユ<EFBE85>Z<>テ叢ナユ<EFBE85>V<7ヘ5<!ヘ><#!ヘG<:ヘ_<#!ヘY<=ヘw<#!<><ヘ"@#!<><ヘ<><"B#!ヘァ<ヘJ<"D!ヘh<#!ヘq<F<><€ナユ<EFBE85>)レPn|オ*レi<EFBE9A>*ワiハ7n袗<6E>)<29>)ワ]n<>)チ <09>)ワ]nチ ワ]n ワ]n"ワi<EFBE9C>"レi<EFBE9A>K<>!€€"]範纜瞋チノ]テ7n<37>!n睨ノヘ縷2_n#耻~#^#V<>
|<7C>++ヘャzムヘ諮レ:ヲヘ::*!#"!*!<0F>*zャ|偰:}倒<>メH:ヘ!ヘbヘタb! !#! !!|/g}/o|オツn;!!タbヘ!cヘヘネ:!cヘホ:ヘhout Erro<72>2Field Overflo<6C>3Internal Erro<72>4Bad File Numbe<62>5File Not Foun<75>6Bad File Mod<6F>7File Already Ope<70>9Disk I/O Erro<72>:File Alre!<21><>>ヘ<>>ヘ.cヘ<63>>"T!9"リi*<10>*
キハ,j<>!<19>6#}サツ,j|コツ,j6!゙i6#zウツ?j*|オハ`j>
ュj6テ#s#r#=ツUj>ロ2メi>モ2ユi>ノ2ヤi2ラi"レi!&i"虔ヘォhテニ<EFBE83>テ叢"Z版ユ<E78988>テ嗔H~#
ツ恥x2T|:jァツHqヘqツヌpヘJ€ヘ頚<<>~ァハテpヘ繿#テキp瞋チノヘJ€~ァハテp<EFBE83> ト繿#テハp>2T|:jァナユ蠶HqF#~#foxqフ<71>qq~#F!F<0F>!ヘム<ムヘY:Fヘラ<!テ€=*!ヘネ<#!<><ヘシ<"&*&|オツC=*!)<11>[[[[ BASLIB #500203 5.2 - OWNED BY MICROSOFT, 1979 nキノヘ<EFBE89>ナユ<EFBE85>*緤|オツ「n!ヲnヘ頚ヘ孵ムヘウv<EFBDB3>チノ*<2A>i颪ヘyC!ソヘCヘ<43>!Q\ヘ<>ヘ気!cヘ舛ヘ任!\ヘ咾ヘ戮!cヘ」CヘヲC!<21>ヘャCヘッC!cヘオCヘクC!゚[ヘセCヘチC!cヘヌCヘハC!ク[ヘム:!ィbヘラ:!ヘbヘ<62>:喘! <>:!<>:#! <>:!ヘィ:!ヘョ:|/g}/o|オツP;!ヘソ:!喘ヘナ:ヘレ:!cヘ<63>:ヘ*;!cヘ0;ヘ3;!zbヘ9;ヘ<;!SbヘB;ヘ!ヘ!;ヘE;!ady Exist<73>=Disk Ful<75>>Input Past En<45>?Bad Record Numbe<62>Bad File Nam蕕Too Many File<6C>Unprintable Erro<72>ナ!9N#F*ユ~<7E>#~來m~+カハヘ繿テ侊ヘq瞋チテャzヘqネ>"テ繿ナG:
jァxチノヘqハ拠<EFBE8A>* j+~<ハDq=ハDq###~<7E>ツDq<44>*j翹眦拠<E79CA6>!テp<EFBE83>*j鱧* j~<7E>=ヨメXq/<<><EFBFBD>wq<77>=テdqヘ|qタ:jキタ> テ繿ヘqネw瞋ノヘ<EFBE89>テュjヘ<6A>|ァツュj<EFBDAD>!9>ヘ孵<EFBE8D><E5ADB5>ユ^#V#耋<>ヘソw<EFBDBF>肭ノヘ<EFBE89>ナユヘR慯チノヘ<EFBE89><EFBFBD>エwムノ<EFBE91>ユ^#V肭テヲw耻^#袁<01>Z範)乍ム翹ユナ袁2憮チムノヘ<EFBE89>ユナヘxチムノヘ<EFBE89>ユナヘxテ盃>テ盃>テ盃>テ盃>袁{x矼ハ」u~#fo翹##翹耻ナヘ 顛#V#褄ヘ<E8A484>ヘQ壯チム翹耻ナテュu耻ナ^#袁禿ウu耻ナヘ 顛#V#褄ヘ<E8A484>ヘR帋チム翹耻ナテヨu耻ナ^#袁禿ワu耻ナヘ顛+6+6ノメx<EFBE92>xr椥ネ<E6A4A5>ヘw提#=ツ|ノ耋!|翹~<7E>ヘw沈#タテ!|Pヘ<50>*カ"<22>*ク"<22>*クヘホPQ<00>*カ)
^#V<>"ニ*ニ<11><EFBFBD>||*Z媒/o|/g#"Z培蕫オタヘュ|ヘ2愿||!\梅4瞋チ
ツisッ2*sム眞ヘャz<EFBDAC>ャz**s&ノナユ袁レ敍ハ帋ムチノ~<7E>ャz<EFBDAC>&ノ~ァハュjユ#^#V++<>ャz<EFBDAC>&ノI*>"ヒs!ヒsテ゚s>テ゚s><>テ孵ヘ<E5ADB5>ナユ袁ウtヘ榎Z<>>テ$tヘ<74>ナユ袁zxシツzDMテネy~#zテネyYP+++<2B>"ハx6@###{廟z弩+r+sムノキハhz<68>*ミx|オツFzヘ<7A>テァj<EFBDA7><EFBFBD>x綽#V+<2B>"ミx碵<78>#s#r++<2B>+r+s##<23>!oztzノ<>*|{布<>* >,ヘ繿<EFBE8D>ノ袗ナW* j#^
フォqハ・q+<2B>=サレ・qヘ拠zチム皎ノ<E79A8E><1E>レスq<EFBDBD>_<>ッq<EFBDAF><71>!j" j!"緤ッ2jヘユq睨! j~6#wノ痿!<21>
rNハ<EFBFBD><0E><EFBFBD>i&テクj<05><05> <0B>チムノ!nヘQ塹ハ崚エ<E5B49A>!<21>mヘワ模1陛y俯耻^#V#耋<>ヘ;x<>肭ノヘ<EFBE89><EFBFBD>;xムノヘ<EFBE89>ナユzウハUx|オハUx|キ<><EFBDB7>R憮<52>y罹ムチノ<EFBE81>ユ^#V肭テ#x<>ユ^#V#耋sx<73>肭ノユナヘ棡チムノナユ襄#V#褄ヘ<E8A484>ヘ苺眞ム翹耻ナテ<EFBE85>u耻ナ^#袁禿vヘ<76>|ァツュjナBKヘ\vPYチノヘ<EFBE89>|ァツュjナBK
編Mv
oッ_テ0vヘ<76>zエツュjナユzウハdv
サメjv_匿メpvo

W}<7D>孵ム胛€wノッ2]繁ヘェ<EFBE8D>坥|ヘxヘュ|ノ*Z範ュ|テ2慙ェ<E68599><EFBDAA>|ヘb<EFBE8D>>>テR~~キネヘi#テイ|テiK|!`氾ミ|><3E>!`<60>V<>2ラ|ッ<1A>#
ツヨ|ノ!`氾ワ<E6B0BE>!`範キ}ヘt<EFBE8D>>ネ><>><3E>ァノ|賃}鴇tヘu~ヘメtヘ<74>|V<>>テ$tヘ<74>ナユ袁ウtヘ蕓Z<>>砒ヘL乍ムチノヘ<EFBE89>ナユ袁シt~,<2C>"ツAt#"<22>~ァハXtクハXt# ツDtヘ<74>テュj<EFBDAD>"ツ^t#ヘメt痒ヘ孵ムヘウv<EFBDB3>チノユ<EFBE89>*^#V#{イツt!<21>"|<7C>?メ額}倒墫ノ蠻<0E>~# ァツ諏yチ睨ナユG袁3z繆<7A>L乍ムチノヘuzミヘ,{テv{ナユ<EFBE85>*|<7C>* |<7C>Z凸ロzヘッ{ハユzヘ,{袁v{<7B>###テシz瞋チノヘ{ヘ| during G.C.
甘&iヘ{ヘ|
甘&ナG~#クハrァ#ツ r++エチノ<EFBE81>ヘ%r<>ニ0<EFBE86>:レ0rニテw竹キツュj}<7D>レュj!jwノヘ<EFBE89><1A>ュjユ袗ヘ3z耋dr矼ヘdrヘャzム睿ャz<EFBDAC>蛬#<23>#fo<66>ヘL畷睨目睦ナユ褄#N#GNァハァxyァハァx#~#fo<66>#foセツーx#ハヲx
ツ堀
yーハーxyヨ<.レコx)ハコx)<29>瞋チ<E79E8B>ャz<EFBDAC>ャz<EFBDAC>|オヨ湟xユx<EFBE95>x瞻xg゙xo痊ツ艀*輾"黜*喆<>x<0F>o<EFBFBD><EFBFBD>P<EFBFBD>ナヘャzDM睨耻ヘ <0C>:]肌ハ要<EFBE8A>2]<5D>#ム耙テェj:]斐ァハェv<EFBDAA>2]<5D>#耙テェjヘ<6A>ナヘuzヤ咩<EFBE94>#カ#カ++ト,{ユ>ヘL<EFBE8D>+V+^+<2B>キハ炯+r+s睿v{チノ眞ノヘ<EFBE89><EFBFBD>ウvムノ~#ユ^#V<>テ孵!ッテ<EFBDAF>v>2ノ+ノ!m~テ苺ヘ}ヘケ<EFBE8D>+6ク!\<5C>>ク析%弍2U繁!i~テニ<EFBE83>!e~テ苺!`氾苺~ダ#~蓋#~碓ノヘ榲T<E6A6B2>!.<2E>Q塹慊R}ッノ<EFBDAF><タヨノ睨o&ヘュ|テ2罹*Z斐<5A>*\斐褄ノヘ<EFBE89><EFBE8D>"Z覗i"\罷ノ!゚i<EFBE9F>"疂瞋>2<>ノヘnt翡ユN#F#<23>*゚i~=ハョt}掃來ョtヘ舩テ冲瞋チ翹ヘシtヘ|~テメt:<3A>ァフnt*゚iヘ;冬=タヘ<EFBE80>テーjヘ;冬<>,ツ炙#"゚iノァツ<EFBDA7>*疂"゚i+V+^<5E>"疂ノヘ<EFBE89>テカjヘ<6A>~<ハュiヘ|
Internal Error - String Space Corrup<75>#ナN#F<>*フxy富憇q{*ホxy富慥q{瞰++藾i+V+^睿Z督<5A>##ム6+6+~6  >@チノ<EFBE81>++チノユ<EFBE89>*ミx<EFBE90>"ミxsfiヘスr<EFBDBD>#N#fi<66>L乍ムチテャzナユ<EFBE85>芳Oメ、rG#~#fo<66>#~#foxヘL土ヘスr瞋チテャzヨリ6 #テスr~<7E>レュj<EFBDAD>#~#fo~#fo耋ャz睨ユZ<>><>V<>>襄=セメs#~#fo<66>ヘL乍ヘャzユ_!ノx4ツy5*ハx"ハx~#N#F#<23>Oy<4F>)y
ヘG禿yy度墺4y テy<>+++6@#y努#x嗹瞋チ+++6###ノ!ノx~6<00>レ`yヘuyテyヘソy*ハx#~<7E>#~墺yヘ<79>テ、jユ!<00>*フx"<22>|ァツ:w+})ムユ<EFBE91>#ケメ6w<36>~#fo<66> 肭:<3A>ァツ)w<><77>!9"リi!゙i4ノ <09><EFBFBD>G<EFBFBD>#蠹ュjヘ<6A> <00>hwムノ~ァハュj<EFBDAD>#~#fon&耋ャz睿<7A><EFBFBD>エツж}ユヘ3z~肭ヨレ『s#テwZ膿#V#N#F#ノ!i~テR嶇<52>x<EFBFBD><78>メ譚!^<5E>6€ヘニ忤g><3E>ヘN<EFBE8D>ノテ
<EFBFBD>テサ}<7D>:T|Gw#ツサ}ノカ}テミ}!`<60>キ}ユZ範ェ<E7AF84>V繁ヘェ<EFBE8D>ョ}*Z培オネ|淆<ノヘェ<EFBE8D>*Z枇<5A>
~ヘハ}!*<2A>トjナユ裹ヘ3z縷<7A>#~#fo<66>袁L<E8A281>6<00>+ヘ水ヘu~ヘ<>|睿ャz瞋チテャz>テHu>テHu>テHu>テHu>テHu>耻^#V#<23>!Z氾」<E6B0BE>>テpu>テpu>テpu>テpu>テpu>ヘ{x!ネ+ノ>テ盃>#r+ムノユナヘソyチ*ハx#~狙#~聾メ毬ヘ<E6AFAC>テウjr+s##6€"ホx###ムノ<EFBE91>!ミx~#foエハテ{ヘZ督ウ{<7B><<3C>*フx"ハx<EFBE8A>*ホx}登|喩<>6@#s#r#6€"ホx* |<7C>*|"ミx}ニw><00>#w##ヘZ督葈+ムノ矣眦ュjッ2]繁ナユ袁ソy*ハx#V#NX!逗"]範纜瞋チノヘ4sチノxァツュjナアハ?s ユ蠣<2*sF<73>腿鋭接鋭<E68EA5>#~#foyヘG二O <0C>#~#foxァハ行ナユ<EFBE85>セツ}s#ツls<6C><73>行!*sハx~#^#V#<23>シy﨏yヘG酉ユテ縹オツァy砒テZ<13>++~ダw#~蓋w#<23>ムムノユヘuy*フxDM~#^#V#<23>z<>yテネy+zセト゚z+{セト゚z##ッ{z<03>#q#p<>ァハネyyスツ}ヘ烟ヘ酢テ
~ヘD}:\塙<>2\<5C>:]<5D>脊㊥ヘ挿:]塙ツ.~<7E>テ3~<7E><>9~|/g}/oテM~!㊥<>:]<5D>脊V~ヘ挿<EFBE8D>"Z<>>2T|ノ€<>ヘJ}タajテL~ <20>フフフフフL}ヘлヘェ|<7C>r<>#<23>=ツc<EFBE82><63>!V範q}テ氛ナ袁D}>ヘ挿ヘt}眞ッ€<>?ヘ/<2F><>ユヘ}<7D>/{棒#z杆#y朧++メウ<EFBE92>2}#ヘt}<7D>p#<23>レ・<EFBE9A>>テ痲ユ<11>>ヘ/<2F><><EFBFBD>#Fナ#肭*Z<>/}登|喩メ<E596A9>"塚ゃチヘJ€+6%ノヘJ}<7D><>ヘョ}ト}<7D>チ愠で_x駐<78>ο<07>C┻ト┻ト/<2F><14>yキトv<76>フけナ<E38191>x昀っ{醒_<EFBD92>ナヘ<07>福ヘ<EFA89B>yヘ3Оッ駐ヘ<E9A790>ナGOヘC<EFBE8D>ア ~<7E><EFBFBD>号!) ユ衫河欠ム碵フ蚊テV税€~#ツ!加ノナ<EFBE89>*緤~<7E>ハ「<EFBE8A>( ~キハK<EFBE8A>+~#5飽 ~キ眞ノ+~キハW河]可-<2D>7眞>ノ*緤ユT]% N#F+q#p##<23>€#6
ツu河秤:ヘロ<EFBE8D>!1|F :W|_<><>€xケ*ツ<>€{<7B><>€Aqヘ水ハタ€<EFBE80>Eハタ€<EFBE80>Dハタ€<EFBE80>0ハ<30>€<EFBFBD>,ハ<>€<EFBFBD>.ツテ€+60{<7B>ハフ€+6${<7B>タ+pノ2W|!1|6 ノヘd}<7D>*V泌*X泌<58>ッ2/|<7C>ヘ〟E蛬クハ(<28>:メ<>ナユ}ヘ彩e<E5BDA9>ハb<EFBE8A>!' ~キハх
<EFBFBD>ハх#~キツy<EFBE82>`iヘ`加テZ<EFBE83>>€飽<>>2-|<7C><01>`hフM~<7E><>&ハナ<EFBE8A>-<2D>、~<7E>+ハ、~+ヘ水レ<E6B0B4><EFBFBD>.ハ1<31>eハカ~<7E>Eツ烝袁水<E8A281>lハホ~<7E>Lハホ~<7E>qハホ~<7E>Q睫゚~:T|<7C><>><>~<7E>%ハ><>#ハO<4F>!ハP<50>dハ<64><EFBE8A>DツキヘYヘ水Z飯疳#<23>=ツ痲ヘ/жムノ<00><><EFBDA2>1ゥ_cイ<63><EFBDB2>ソノ€ソノ€ニ、~<7E>@z<10><00>rN ・ヤ<EFBDA5>钁H<00> T<>;€迄@B<06>*U|<7C>=<3D>ケテょユヘ慾ムッハ<1C>ヘョ}7ト}<7D><EFBFBD><EFBFBD>v€Oz<4F><04>匂ナ<E58C82><EFBFBD><γ<><CEB3>JΡ/<€<<3C>ヘC<EFBE8D><43>ο/<2F><>mο}~<7E>.ト厭"U|<7C>tャ崇ナヘマ<EFBE8D>ムテぷッ<E381B7>hヘZ弦>ツ拷>€痍+wキムノナユ<EFBE85>!(<19>瞋チノヘ+華<>7?タナ<EFBE80>*緤' 6#67眞ノ蛬キハ}染#^#fk_<6B>レン丑#~<1D>:ハ瘟++@ハ}笥ヨ@レ}<7D>メ}<7D><1D> #<1D>2樫<32>.ツ<08>0レ<08> #~キツ<EFBDB7>>DクG<EFBDB8><><EFBE82><EFBFBD>"V覗i"X罷チムノナ#~<7E>+ハo<EFBE8A>-ハF<EFBE8A>0Ox㊦€〟G<E3809F>メo<EFBE92>#~キツ-チx<EFBE81>Eツd【<64><18>>€2/|テt<74><18>\<5C>‰チム<EFBE81>"V覗i"X<>#~ヨ殀oムチノPY!' ナッwヘ秤:蘇ヘZ<EFBE8D><5A>€<EFBE8A>=ハz<EFBE8A>=ツク<EFBE82>テk<EFBE83><ハ€醒!% ^#Vr+sノヘ<EFBE89>}ァハチ固ユ<E59BBA>!"@<40>蛩ヘ
PY<><03>!勀裹`i>テ\<5C>!' ~キヘサ<EFBE8D>水レ<E6B0B4>ッ点蛔神<E89B94><EFBFBD>碵衫[|睿ェ<E79DBF><EFBDAA>!Y}袁V~ノヘェ<EFBE8D> ワYテ、~ヘ水<EFBE8D>!Y}<7D>!蕓襄テキヘYヘ水テ袗ナ<E8A297><EFBFBD><E6A68E>|チム睨ネ<E79DA8><EFBFBD>芫}<7D>&}<7D>=ノユ襄ヘェ<EFBE8D><EFBFBD>''<27>d
#~<7E>:ミ<> ハ水<EFBE8A> ハ水<EFBE8A>
ハ水<EFBFBD>0?<=ノ:T|<7C>メキ<EFBE92>キ7ノヨキノ<15>-ネ<14>+ネ+ノヘ水ヘM<EFBE8D>Oハヨ<EFBE8A>Hハヨ<EFBE8A>+ヘ竇レ<E7AB87><EFBE9A>M~<7E><>H#ハ<17><><EFBFBD>テェjナM<EFBE85>!<03><01>堆ェ<E5A086><EFBFBD>:]<5D>待。<E5BE85><12>!`範キ}ヘ,}<7D>
<EFBFBD><EFBFBD>ヘモο<EFBFBD><EFBFBD>C<><11>ヘJ}テシ<EFBE83><1A><EFBFBD><E8ABAB>ヘi<69><EFBFBD>ヘx<78><EFBFBD>キムノヘェ<EFBE8D>t<><11>#ヘJ}テ<>"<22>諫碪ヌ<E7A2AA>キネ=60#テ<><00>ヘ/<2F> 寄7<E5AF84><37>#<>ッ2)<29>磆ヘャz<EFBDAC>z<EFBFBD> ハ}<7D>レ}席> <1E><12>> ツ7甘<>ナユ褄ヘタ<EFBE8D><1D><ハt<EFBE8A>!
<EFBFBD><1D>> ヘL乍袁タ<E8A281>:<1D>!
<EFBFBD>ツヰ<1D><>ムヘt}#<23>Wヘ}<7D><03>:/|キ<>‰づャ‰<EFBDAC><EFBFBD>コメー<EFBE92><G>磆ヘ<1C>60フ厭ヘC<EFBE8D>+~<7E>0ハソ<EFBE8A>.ト厭<EFBE84><E58EAD><EFBFBD><EFBFBD>>"舜#<23>6+<2B><>6-/</
メ艨ニ:#p#w#6<00>!1|ノ#ナ<>zメrて順ムヘ秤チヘエ冴ムチノヘ<EFBE89>ナユ}ヘ彩e<E5BDA9>!&ツ+<2B>!ョ ~+ngムチノヘ<EFBE89>ナユ}ヘ彩e<E5BDA9>! n&ムチノ碵襄*緤~<7E>ハ_<EFBE8A>ハt杖ユナDM<44>'~<7E>€衫欠<E8A1AB>4N#<23>V<EFBFBD>
pハ€鞍炳<EFBFBD> }<7D>}<7D>ム<ノユx烏ナ蛬ヨ0<EFBE96><EFBFBD>*Z<> ヘ礰メタT])))<29> |キ悊"Z批チムテ、~y<>慾7メ<37>t<>$ヘJ}<7D>ヘ急<EFBE8D><E680A5>テクヘァ|ヘ&}ヘハ}<7D>[}ヘァ|ヘ烟テクヘd}ヘ[}チムテ>}{<7B>ァチノヨ0?ミ<>ミ)リ)リ)リオo<03>M<EFBFBD>!ヘ)<29>レ'<27>息チノヘM<EFBE8D>0?ミ<>
レ?<3F>?ミ<>ミニ
)リ)リ)リ)リオoテ)<29>aリ<61>{ミヨ ノ蕓ナヘェ<EFBE8D>:]<5D>逝:\塙<>€<>テ>}<7D>:-|2.|<7C>ッ2-|<7C>60#=テ<>{<7B><G<ヨ <0C>O:W|襦タOノ<05>0<EFBFBD>"U|6.#60ツ%<25>#Hノツ;<3B>6."U|#Hノ
タ6,#ノユヘェ<EFBE8D>嫡ナ袁ハ}!*<2A>ト}ヘ烟ッヘ }眞:<3A>>
ヘ/<2F><>/砒>槝ヘ|メl<EFBE92>>赦ヘ|<7C>p<ツn<EFBE82>
<EFBFBD>瞋チノユナ*>㍻キハb<EFBE8A>#N#F++ヘャz
<02>Oハヒ<EFBE8A><01>Iハヒ<EFBE8A><03>Rツb<EFBE82>*@<40>オツヒ<EFBE82>!€"@<40>ユ}ム_ユヘ債゙艦エ砿ヘ債q績z眷ユヘタ禾チナ<EFBE81>
<EFBFBD><EFBFBD>"緤<>#<1D>> ヘL<0F><14>zヨ<05>οロкキフ}=<3D><>ヘム睫'#6!0|#:U|葡ネ~<7E> ハ,<2C>*ハ,<2C>+襄@でヘ水<EFBE8D>-ネ<>+ネ<>$ネチ<EFBE88>0ツj<EFBE82>#ヘ水メj<EFBE92>++w<>`っテ-んハjゃ6%ノ<>μ獅2<><09>ムw睨+s#r#6€#6€矼DM<44>:宿キハォ<EFBE8A>!" s#r#6<>!
{zVコハ闊ユ<E9978A>ムユム碵wユユヘム<ツ謌<ハ€醒ム!! {<7B>w<7F>:O盛ツ<E79B9B>囲`蚊ノ!!
€<07><07>0_<30>テキテG€<47>!\範ェ<E7AF84>'€:f氾(€yョ眦G€:^氾C€<43><C280>:\<5C>テG€<47>:^<5E>/テG€テ㊥ッヘモ€<EFBE93>ハU€6+<2B>ワ}<7D>g€6-ナ袁[|眞エ#60:W|W:T|レ<><EFBFBD><EFBE8A>メワ€ノヘ<EFBE89>テェjヘ<6A>テェj<00>66ムユヘ秤砒~<7E>ツ*琴<ハ€静?<3F><ツ?錦ユ<1A>ツt<EFBE82>錦ユ!%ッw#w#w#w痿<77>ハ[<5B>タヘ]暇) €p#
ツa極袗ナヘチ<EFBFBD><00>
<00>惣q#ヘー替
<EFBFBD>>
ヘー堆ロ孫ハ酎<EFBFBD>
<EFBFBD>テ﨎:_n<5F>フュ賊wノテ穃テw禎>^ヘー拓<EFBDB0>@ヘー堆ュ拓ノ~ァネ<EFBDA7>
ツヤ託>
ヘー拓ヘー<EFBFBD>#テナ堆i<>ノテ|<7C>* j<>
ハ咜<EFBFBD>#~+<ハ<>=勿拠<E58BBF><E68BA0>
フb掴ナ<EFBFBD>!ア <19><>!( V6<00>
ハ搶ニ炳ホw<>ム睨ユヘホ礁w析ナ<E69E90>!ア ~キム眞ノ!ゥテタ<EFBE83>!ー ^#Vノ!ー s#rノDMヘス衝ヘキ壌ムヘP惜ナユ}ヘ彩e<E5BDA9><><EFBE8A>ツb秦i"緤!<00>"<22>ムチテ-<2D>キユハ!<21>GワS力Q<E58A9B>
姪圏!\範-佚夢j<E5A4A2>「0 TeツBラウ]<5D>h!「レI<>.嫐チ<E5AB90>
€∝ヘ虚睿レ斛b佚h門ヘ虚睿Y<E79DBF>!`氾苺ベq!]<5D><0E>q#~諤<>+++<2B>*G㎏#r!ケ DM眦、<E79CA6>*@<40> DMヘ<4D>ムs#r#<23> 6# xアツァ冴ムチノナユ<EFBE85> !<21>T]~#foエハe靭シツソ酵スツソ降#~+<2B>*<2A><>"<22>s#r瞋チノ<00>タ*@<40>€|オハ<>-<2D>、~<7E>+ハ、~+ヘuレ<75><EFBFBD>.ハ1<31>eハカ~<7E>Eツ烝袁・~<7E>lハホ~<7E>Lハホ~<7E>qハホ~<7E>Q睫゚~:T|<7C><>><>~<7E>%ハ><>#ハO<4F>!ハP<50>dハ<64><EFBE8A>DツキヘYヘサ~6#ヨメh繁ヘ利g<>キハ」範
<EFBFBD>チム睨ヘ<E79DA8>ナユ袁タ<E8A281><1D><ムユ<EFBE91><00>ハt<EFBE8A>瞋チノヘ<EFBE89>ナユ<EFBE85>!<1D>6# ヘR古メ僅<EFBE92>ナユ袁タ憶2)<29>!<1E>ヘN<EFBE8D>!&<26>ヘN<EFBE8D><1D><00><>ハt先<>フe<EFBE8C> <0B>4+~#<ハ:<3A>=ツ^提<> ハi低ヘi<>
<EFBFBD>:jGハ7脹ナヘiチテ*鎮<>:鑛ァツS<EFBE82><2鑛<32>*虔"瘻!葡"虔碵<E89994> ハi掴i睨*<2A>i<EFBFBD>6ノ5タ4ノ> ヘ繿~=<3D>ツi低ノ<E4BD8E>* j<>!j"ヘ・禍ヘ<E7A68D>!>テクjヘ<6A>|イツュj,ハ'<27>-:駟キハe仙*麒翹!i"<22>ナユ{ヘ3z蘿$%ハK跡<4B>!D仙*<2A>鱆ムテ6雪ムチノ|賃}橡<>!"緤睨<E7B7A4>ノ>6>4>?>=>:>7>5>2>3>@w+qツヶテ
<EFBFBD>€DNn<4E>"~€<EFBCA1>3<EFBFBD>5】マム<EFBE8F>r1{マム<EFBE8F>r1€タh!「レIは利ハ
框蕫O2f氾笆ヘ利ハ
<EFBFBD>:]塙ハn武メ<E6ADA6>/<<3C>n報<6E>9メ
樸:f念ヘケ!ゥ s#rッ#w
紗ノ<EFBFBD>2<EFBFBD>}ヘ<16>ツb税!ュ ^#V<13>:D<>ツ5<EFBE82>*E<>痣イハh<EFBE8A>+s#rチナ!ー ッw#w!ゥ ~#fo<66><6F>!€ヘP雪ツe<EFBE82>テ」撮K><10>!<00>)耡x<E880A1>)#テy<EFBE83>)肭)<29>Oハィ<EFBE8A>!槫!\醗y<E98697>#<><E9B3B4>+ツ灯チノゥノヘ
<EFBFBD>?ノテ槫ヘ虚睿レ斛b佚チ泌ヘ虚睿Y佻n<E4BDBB>!`範利ハ-<2D>:]塙ハ
<EFBFBD>:g<>/<G:f念ヘェ<EFBE8D>4ヘ<0E>!俣qA藷!`範f<E7AF84><1A>?レ<04>藷!`範㊦O!紙  ~#ヘー惣<EFBDB0>ツ!鯨<><1E>>.ヘー<EFBE8D>
<0B>:jニ
W:jコレ:<3A>> ヘー堆ー袋ュ<E8A28B><1D><00><>ツ絜瞋チノ~<7E>*タ6?#
ツR庫ユOナヘチム<EFBE81>!!4ツr<EFBE82>#4ツr<EFBE82>#4y<34>"ツ㈹<EFBE82><EFBFBD>€<EFBE8A> jヘ繿<EFBE8D>" j睨>
ヘ繿>
テ繿>
i>
i*瘻鯒テョ椎 <09> Gヘヌ帳チ睫ツ蓄#foテト<EFBE83>##ム翹ヘム<EFBE8D>>ァヅ蓄ァネ+~?ノ~ァツ髓<EFBE82>+#<17><><EFBFBD>+
<EFBFBD>脹>C><>o&テクj袗ナ!"緤!ヲn"ヲoヘ、醒ム睨:_n<5F>ツオ析|?<3F>テオ壬ヘロ妥髏:ャ孫>\2ャ堕マ<E5A095>ハエ析ー<E69E90>+ハ辮~ヘー妥<EFBDB0>+ヘー堕<EFBDB0>ヘー堆ュ<E5A086>!ヲn<01>2ャ拓テ﨎ヘロ前<EFBE9B>ハサ頗Gッ2_非!f範%<25>:_<>2U肺!`<60>V<><>力\淋+零4ヘQ<EFBE8D>:U塙<55>?<3F>!^梅諤++ョwテ
<EFBFBD>!V<>4タ#ツD<EFBE82>4ハn<EFBE8A>+6€ノ!`<60>V<><1A>#
ツ\遼ッ<1A>#
ツi遼ヘi淋圏/!U<><>#<23>=ツn枝<6E>_チ}la)レヰメ梹#xキツヰ"骰眞<E9AAB0>!イ "<22>!) "寘砒!€}登|喩ムユヘP接ヘ暫k:<3A>キハ<13>€ヘP脊竡袁0障ナDM*寘<>*<2A>ヘg<EFBE8D>"<22>PYチヘ/障}登|喩オY留レ:\<5C><=<1F>+<2B>!V<>ヘハ<EFBE8D>!藷ヘネ踊キツ齡!]<5D>5ツ齡テn模゙q<EFBE9E>!\年#Fヘケ悵+6ク<36>c<EFBFBD>!\<5C>>ク析%偕<>?留2U<32>:V備ヘ圏ヘ
榁x<EFBFBD>/<ノ!V梅5キ#ハf碧V<>!`<60>Nwy#ツv<EFBE82>>ネ<ノ<>"><3E>>2駟<32>!ン<>"麒<>:輅ァタ<2輅<32>*虔"B<>!ユ<>"虔睨ヘ<E79DA8>"@<40>ユナヘ抽チム睨<EFBE91>*<2A>|オハモ<EFBE8A>##nヘム<EFBE8D>ツ吾ノ.ヘフ<EFBE8D>*B<><EFBFBD><EFBE8D>テ鼬ヘ<E9BCAC>ッ2D<32>ユ蠶<12>"E<><><E8B5A6>テノ<EFBE83>&)))<11> ノ^#V#<23>!Z範)乍ノ^#V#<23>!V範&乍ノヘ)<29>w#w#w#w#ノ#~<7E> ハ:<3A> ハ:橡<>ミ$ノァネナGw#ツP特ノ{ュタzャノヘハ}!*<2A>ト}ヘ烟ヘ酢テ
~ヘD}:{}キ<>2~::ャ孫ハ<10>>\ヘー賊2ャ惣<EFBDAC>ハz<EFBE8A>フウ<EFBE8C>7ネ<37>
ハ。<EFBFBD> ハz<EFBE8A>
ツ4<EFBFBD>ハオ<EFBE8A>テz<EFBE83>フウ駄オ<E9A784>ツR<EFBE82>ハオ析ー<E69E90>> ヘー<EFBE8D>>テワ<EFBE83>ツ\<5C>>#テ辮<EFBE83>ツu打ユ<E68993>6ヘュ<EFBE8D>!ヲnヘナ黛ムチテ<EFBE81><EFBE83><>x<><>ッOy檜#<>ッG:\塙ツオ<EFBE82>!U<>Vwz#
ツ囓xヨ<08>タツ漉テチ<EFBE83>!U範ネ旅<EFBE88>踊キハ+<2B>!]陪wメチ敕+<2B>~w#
ツハ遼袁虚睿レ斛b佚髣袁虚睿Y<EFBFBD>!`氾ワ門ヘ虚睿レ斛b佚伜ヘ<E4BC9C><00>*骰#"骰ツー若瞋チノ袁0障ナDM*<2A><>*寘ヘg壌"<22>PYチテ<EFBE81><EFBE83>2O税ユ<E7A88E>*骰<>!ォ 蛬#foヘP雪s#rツV<EFBE82>:O盛ハc<EFBE8A>!c丞ナ<E4B89E>!& テ㊧瞋チノナ~# xアツh消ノ<E6B688><EFBFBD>Mヘミ礁w枢テ
<EFBFBD>V罷テ囗!V氾利!`氾ョ佻L<E4BDBB>!L吶<4C>!g氾ィ<E6B0BE>!]<5D>>ムF+N+ナ=ツォ簿<EFBDAB>!`氾ソ<E6B0BE>!V<>>ムチq#p#=ツツ簿<EFBE82>!V氾苺<E6B0BE>"雌ヘカ箆・箆装*雌鯱利ハチ<EFBE8A>:]塙ハチ<EFBE8A>!f年#Fヘェ嶇<>ッ2D<32>ユ蠶<13>"E<>而ハe<EFBE8A><ハe<EFBE8A>=_<00>!<21>~#foエハ:<3A>##{セハP<EFBE8A>++テ&<26>*<2A>袁Y<E8A281>"<22>チq#p#s#4#5++###DM
ァ睨ナユ!<21>"G㍻#foエハ注+V+^##<23>*@<40>布憮レ^坑K^#V~<7E>ヘ挿:~キツ.~<7E>テ3~<7E><>9~|/g}/oテM~!~<7E>:#~<7E>脊V~ヘ挿<EFBE8D>"<22>>2T|ノ€<>ヘJ}タajテL~ <20>フフフフフL}ヘлヘェ|<7C><>>2-|<7C><01>`hフM~<7E><>&ハ甫ヘY佻n<E4BDBB>!`氾フ幌2f<32>!\<5C>~q+佶q袒レ<倔<>NsY+ツ1佚'佝 Wッ<57><>~w+ツF佚?<3F>!\<5C>テC佻2愿b佻レ<E4BDBB>ッ!V背#ツh佚
槝y<EFBFBD>ノヘョ佻テエ佻裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ノ!^梅/wッo触}媽}啗}儖ノヘホ慙譚チムノ|オネ<EFBDB5>オネDM!>)<29>)<29><EFBFBD> =ツャ慄!\梅7w?##wy7Oョノ*Z斐<5A>*\斐鱆<E69690>"\批<>"Z繁ajSXヘ*<2A>ハチ扣S\E!]薄メチ<EFBE92>/<wテ。晏裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹蘋#~蓋#~碓メ。<EFBE92>#4ハ雀.ヘd榲。擶触~媽#~啗#~儖ワ●テ纜ヘD愿カ塹﨟ハ
<EFBFBD>>€ゥOテW塹D愿ノ塹﨟ハu慙
槓ッ触ヘェ幎"C罷y2E認ッoヘ懸ヘ復!D<>*Z<>:\<5C>碓メ<06>]罷4<E7BDB7>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ョ佻ケ<E4BDBB>!Y認#^#V#Nテ。斛エ<E6969B>`<60>~#ツ恫キG++Nネyテ<12>V氾囗!Z範レ<E7AF84>>精ハ<E7B2BE>メノ佻゙q<><EFBFBD><EFBE8D><EFBFBD>!^<5E>6€ヘニ徃><3E>ヘN桍<EFBE94>>€ゥイウツテ和kノヘレ敲<EFBE9A>L厦ハ裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹!=梅キツ捶ヨ8ツ扁ノニ@G<>曉(斛u<E6969B><>捶ノ|キツW攘ツ>擺ツG攀ツP數ejSXテW晤テW拂h|キ伃掉_zW}o|gテX<EFBE83>"8罷"6肺ノ<E882BA>!6<>キ~w#裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ハ雀テ嶝ヘ.嬌.<00>*C<>:E<>碓ムz錦メ嶇.嬌.<2E><>*Z<>:\氾孰<=ⅵ學_zWxG)yO滔肓HG眦。斛D愿U嶇﨟ハ譚ヘ
槓ヘェ孳+Fナ+Fナ+Fナw`h縹キハ「<EFBE8A>gy耡<79>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹蝗<E8A3B9>L凖
槝﨟ハZ哇ヘ
槎b吼ヘホ懿*卩ユヘヘ嶝チ<E5B69D>憮|ヘ譚チムメ6<EFBE92>!L吝フG厦ホ慙ニ卉ムヘX崚i<E5B49A>>。Oノ!]梅キネ+>€ョwテ
<EFBFBD>_Yテ缸<EFBE83>u愿
<EFBFBD>:]<5D><EFBFBD><E6839F>hレ<68>ヘホ慙ハ嵌<EFBE8A>ム裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹ツ|昵ノヘu<EFBE8D><>ゥ旌ベq<11><>J!]拝ノx!]塙<>戳#~諤ゥOテ缸 €4タテ駁皹go"Z<>"\繁袁<E7B981>疽#r#q#pテ槝﨟袁譚睨ヘ橄"Z罷`i"\繁*Z罷*\妊Mノ^#V#N裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>:Z秤O|g}oxG<>-|ツz帋繃キツu嶝テ纜瓲laOテt<EFBE83>!]梅€Gィx<EFBDA8>€ハタ掫ヘケ忤+ノキ磅雀テチ斛<EFBE81>x<EFBFBD><78>メ譚!^<5E>6€ヘニ忤g﨓孵ウツ逶
><3E>ヘN桍ヤウ<EFBE94>{<7B>><3E>2]範纜<E7AF84>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹衞<E8A3B9>哇ヘ復ヘケ<EFBE8D>!ゥ厦&埣Jテ\<5C>_Yテ缸ヘ
檄チ敕雀|<7C>t燉&wトz^Pc|<1A>u~r1€∀缸簟厦゙q<EFBE9E>>€2]畑<>!嶹ヘ&夾ヘホ徙殀ヘ2愧ムテW<EFBE83> リ赶かェ}м卅<D0BC><E58D85>(㈱q裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹#F#xキネyテ<12>:]塙ネ:\<5C>濤7タニノ|/G}/O!><11>テ5樸<35> メ4橢7>痣_zW}o|g<>=ツ+桍キg}oノレ]曚ZQテP榿 oッ-ネyOzW{_xGテ`杙罷*\妊Mノ^#V#N裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹リ/<ノxアハ
<EFBFBD>!槫ヘ
框/ネ!\醗~<7E><1F>ゥノ#~クタ+~ケタ+~コタ+~涜矣ノLUX)!逗"]妃●テ纜<EFBE83>ホ罹ヘ2愧ムヘ復ノ<E5BEA9>ウハu忝キB<EFBDB7>忿ィG|オネ|キ<>y愬ヘ橢キ<E6A9A2>罹ノベq憶O点y啗裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹タ㌻<EFBE80><14><1E><>z<02><>ヘホ慝ヘ<E6859D>ヘX帋ヘ&埣ムテX幎ヘホ罹~<7E>#ヘレ暃チム=ネユナ<EFBE95>xアヘU帋ヘ﨟袁W壯テ1塹D愿T塹﨟ハ
<EFBFBD>:]塙ハ缸脊g<E8848A>/<ヘ復<EFBE8D>
樸ヘケ徃<EFBFBD>ヘN橢キ!Z飛劒~<7E>裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹<E8A3B9>