home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
BEEHIVE
/
UTILITYS
/
OPEN63.ARC
/
OPEN.Z80
< prev
next >
Wrap
Text File
|
1991-07-10
|
20KB
|
1,274 lines
ASEG
.Z80
.RADIX 10D
; SOURCE CODE FOR OPEN.COM, VERSION (SEE BELOW!). THIS IS THE ".COM" VERSION
; OF THE BASIC PROGRAMME I WROTE WHICH "OPENS" (THE TERM COMES FROM WAY BACK
; WHEN I WAS GETTING INTO BASIC DATA FILES - AND GRAPHICS - BUT MORE OF THAT
; LATER) AND DISPLAYS, IF YOU LIKE, GRSAVED SCREENS CREATED IN THE "GRSAVE"
; FORMAT USED BY BASIC. IT SUPPORTS NORMAL SCREENS (COLOUR OR NOT), BEING
; 64 CHARACTERS BY 16 LINES, DOUBLE DEPTH SCREENS (64 BY 32); A FORMAT
; DEVEOPED BY S.C.S (BASIC CANNOT SUPPORT IT WITHOUT MODIFICATION) AND THE
; LATEST SCREEN SAVE - MULTI-BANK OR HIRES2.
; THIS LATEST VERSION ALSO RECOGNISES, DISPLAYS AND WILL DUMP 80 BY 24 SCREENS.
; THIS FORMAT MAKES OPEN WORK 100% WITH DEXIGN. IT DETERMINES BETWEEN SCREEN
; TYPES BY CHECKING THEIR LENGTH AS THEY ARE LOADED. OTHER SUPPORTED FEATURES
; ARE: OPTION OF DISPLAYING SCREEN AS A PCG LAYOUT ONLY (DISABLED WITH HIRES2
; SCREENS (OBVIOUSLY) - YOU ONLY SEE ONE BANK), DISPLAYING INVERTED, MULTIPLE
; DRIVES ARE ALLOWED, AND A SUPER SCREEN DUMPER (WORKS WITH WHATEVER
; PRINTER THE SYSTEM IS SET TO - THAT IS PARALLEL OR SERIAL).
; ANYWAY, MODIFY AND HAVE FUN. THANKS ARE IN ORDER TO M.A.S FOR SOME ROOTEENS
; (!). P.S. MY CODING MAY BE CRYPTIC, AND MY LABELS WIERD, BUT AT LEAST IT
; WORKS!!
; P.P.S - THE SCREEN DUMPING ROUTINE COMES FROM AN ANCIENT ONLINE MAGAZINE.
; IT WAS ORIGINALLY IN "USR" FORMAT SO I DISASSEMBLED IT AND GOT IT GOING IN
; VARIOUS MODES. THUS THE REASON FOR THE "LABELX" AND ALL THAT STUFF (IE I
; HAVEN'T GONE THROUGH THE CODE IN GREAT DETAIL). YOU CAN THANK THE FREAKY
; DAZZLESTAR FOR THE FREAKY RADIX - THAT DOG OF A PROGRAMME!
; UPDATES: (FOR VERSION...)
; 6.3 - ADDED SUPPORT FOR CP/M 80 BY 24 SCREENS (ALA DEXIGN)
; 6.2 - ALLOWS THE PROPER "D:FNAME.EXT" FILENAME FORMAT
; 6.1 - DISPLAYED THE DEFAULT DRIVE (HAD A BUG). SUPERCEEDED BY 6.2
; 6.0 - ORIGINAL ".COM" VERSION
CLS MACRO AMOUNT
LD HL,61440
LD DE,61441
LD BC,AMOUNT
LD (HL),32
LDIR
ENDM
PUSHALL MACRO
PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
ENDM
POPALL MACRO
POP IY
POP IX
POP HL
POP DE
POP BC
POP AF
ENDM
BIOS MACRO NUMBER
LD HL,(1)
PUSH DE
LD DE,3*NUMBER
ADD HL,DE
POP DE
LD IX,$+7
PUSH IX
JP (HL)
ENDM
ORG 100H
JP OVER
BDOS EQU 5
CR EQU 0DH
LF EQU 0AH
ESC EQU 27
DB 0DH,0AH,'OPEN.COM super screen displayer/dumper V6.3.',0Dh,0Ah
DB 'By M.L.C for S.C.S. What a nosey person you are!!',0Dh,0Ah,0Dh,0Ah,1Ah
FILNAM: DB ' ' ; FILENAME STORE
PRINT0: DS 1 ; FLAG USED BY "PRINTS"
COLFLG: DS 1 ; COLOUR FLAG - SAME AS BASIC
ATTFLG: DS 1 ; AS ABOVE, FOR ATTRIBUTE RAM
LINES: DS 1 ; NUMBER OF LINES IN PIC FOR DUMPING
MODE: DS 1 ; PRINTING MODE (SMALL, MED OR LARGE)
SPESH: DS 1 ; USED WHEN PRINTING IN 80 BY 24
ANS1: DS 1
ANS2: DS 1
ANS3: DS 1 ; } ANSWERS TO ALL THE QUESTIONS
ANS5: DS 1
ANS6: DS 1
ANS7: DS 1
SAVEEM: DS 2 ; USED BY INPUT:
INITPR: DB ESC,'@$'
ENDSTR: DB 7,7,7,7,7,ESC,'@',0DH,0AH,'$'
DB ESC,'A',8,'$'
BEEPR: DB ESC,'K',0,2,'$'
BEEP1: DB ESC,'K',128,2,'$'
; DB ESC,'Z',0,2,'$'
; DB ESC,'Y',0,2,'$'
; DB ESC,'*',0,0,2,'$'
TOBL: DB ' '
TITLE: DB 0,'----**** OPEN.COM VERSION 6.3. AGE 09/07/91. BY M.L.C ****---- $',15
INSTR: DB 0,'PRESS <CR> TO ACCEPT DEFAULT QUESTION VALUE (SHOWN ON LEFT). $',2
QUES1: DB 0,'What is the name of the screen for opening? $',3
QUES2: DB 0,'[S] Display as a (S)creen or (P)CG layout? $',4
QUES3: DB 0,'[N] Display screen (N)ormally or (I)nverted? $',2
QUES5: DB 0,'[N] Dump screen to a printer after loading? $',3
QUES6: DB 0,'[E] Dump for (E)pson printer or (M)icrobee? $',4
QUES7: DB 0,'[S] (S)mall, (M)edium or (L)arge printout? $',6
DB 6BH,50H,58H,37H,1BH,05H,18H,1AH,48H,0AH,2AH,0AH,20H,0,0
L24END: DB 0 ; CRT FOR CP/M'S 80 BY 24 SCREEN FORMAT
DB 'k@Q7&'
DB 3
DB ' "H'
DB 7
DB 'o' ; CRT DATA FOR 32 LINE DISPLAY
DB 7
DB ' '
DB 0
DB 0FFh
L32END: DB 0FFH
DB 'k@Q7'
DB 12h,9,10h,11h
DB 'H'
DB 0Fh ; AS ABOVE FOR 16 LINES; ALA BASIC
DB '/'
DB 0Fh,0,0,0
CTREND: DB 0
CHKCOL: CALL CHKATT
LD A,103 ; ROUTINE TO CHECK IF MACH HAS COLOUR
LD (63488),A
LD A,64
OUT (8),A
LD A,(63488)
CP 103
JP Z,NOCUL
XOR A
OUT (8),A
LD A,255
LD (COLFLG),A
RET
NOCUL: XOR A
LD (COLFLG),A
RET
CHKATT: LD A,128
OUT (28),A
LD A,103 ; ROUTINE TO CHECK IF MACH IS PREMIUM
LD (63488),A
LD A,129
OUT (28),A
LD A,(63488)
CP 103
JP Z,NOATT
LD A,128
OUT (28),A
LD A,255
LD (ATTFLG),A
RET
NOATT: XOR A
LD (ATTFLG),A
RET
PRTSTR: LD A,(HL) ; PRINT A STRING (PRINTER)
CP '$'
RET Z
CALL OUTCHR
INC HL
JP PRTSTR
SPCOL: LD A,(COLFLG) ; SPECIAL COLOUR ROUTINE - COLOUR LHS OF SCREEN
CP 255
RET NZ
LD A,64
OUT (8),A
LD HL,63488+256+128
LD B,13
GRUNT: LD (HL),15
INC HL
LD (HL),15
INC HL
LD (HL),15
LD DE,62
ADD HL,DE
DJNZ GRUNT
XOR A
OUT (8),A
RET
PRINTS: PUSHALL ; MISC PRINTING ROUTINE; USAGE:
LD A,(HL) ; PCG=1,'STRINGENDINGIN$',COLOUR
LD (PRINT0),A ; THEN LD HL,STING, AND DE, DESTINATION
INC HL
PUSH HL
PUSH DE
PRLP: LD A,(HL)
CP '$'
JP Z,NEXT
EX AF,AF'
LD A,(PRINT0)
CP 1
JP NZ,CONT
EX AF,AF'
ADD A,128
EX AF,AF'
CONT: EX AF,AF'
LD (DE),A
INC HL
INC DE
JP PRLP
NEXT: INC HL
PUSH HL
POP BC
POP DE
POP HL
LD A,(COLFLG)
CP 255
JR NZ,COLNT
LD A,64
OUT (8),A
LD A,(BC)
LD BC,2048
PUSH HL
PUSH DE
POP HL
ADD HL,BC
PUSH HL
POP DE
POP HL
CLP: PUSH AF
LD A,(HL)
CP '$'
JP Z,PREND
INC HL
POP AF
LD (DE),A
INC DE
JP CLP
PREND: POP AF
XOR A
OUT (8),A
COLNT: POPALL
CALL SPCOL
RET
;LIN16A: LD BC,1024
; LD DE, ; NEEDS THE MASK FOR 1024 BYTES
; LD HL,1
; JR LOUP
FADE: ;LD A,(LINES)
; CP 32
; JR NZ,LIN16A
LD BC,2048 ; NUMBER OF LOCS TO BLANK
LD DE,0500H ; SPECIAL MASK
LD HL,1
LOUP: PUSH BC ; ROUTINE TO PICK "RANDOM" NUMBERS ONCE ONLY
LD B,255
CRAP: DEC B
JR NZ,CRAP
POP BC
SRL H
RR L
JP NC,OBER
LD A,H
XOR D
LD H,A
LD A,L
XOR E
LD L,A
OBER: PUSH DE
PUSH HL
LD DE,61440-1
ADD HL,DE
PUSH AF
LD A,(TOBL)
LD (HL),A
PUSH HL
PUSH DE
LD A,(COLFLG)
CP 255
JP NZ,DONOT
LD A,64
OUT (8),A
LD DE,2048
ADD HL,DE
LD (HL),15
XOR A
OUT (8),A
DONOT: POP DE
POP HL
POP AF
POP HL
POP DE
DEC BC
LD A,B
OR C
JP NZ,LOUP
LD HL,61440
LD (HL),64
LD A,(COLFLG)
CP 255
RET NZ
LD A,64
OUT (8),A
LD HL,63488
LD DE,63489
LD BC,2048 ; ALSO CLEARS COLOUR
LD (HL),7
LDIR
XOR A
OUT (8),A
RET
OUTCHR: PUSHALL
LD E,A
LD C,5
CALL BDOS ; SEND CHAR IN "A" TO PRINTER
POPALL
RET
LOADM: PUSHALL ; PRETTY EXPLANITORY!
PUSH HL
XOR A
LD (7CH),A
LD HL,5CH+12
LD DE,5CH+13
LD BC,6
LD (HL),0
LDIR
LD DE,5CH
LD C,15
CALL BDOS
CP 0FFH
JP Z,LODERR
POP HL
LD DE,128
LOOP1: EX DE,HL
PUSH HL
PUSH DE
LD C,26
CALL BDOS ; FILE LOAD ROUTINE
POP DE
POP HL
EX DE,HL
ADD HL,DE
PUSH HL
PUSH DE
LD DE,5CH
LD C,20
CALL BDOS
POP DE
POP HL
OR A
JR Z,LOOP1
LD DE,5CH
LD C,16
CALL BDOS
POPALL
XOR A
RET
LODERR: POP HL
POPALL
LD A,2
RET
INVERT: LD A,(ATTFLG)
CP 255
JP NZ,ONE
LD A,128
ILP2: OUT (28),A ;INVERT ALL 8 BANKS
PUSH AF
LD HL,63488
LD BC,2048
ILP1: LD A,255
SUB (HL)
LD (HL),A
INC HL
DEC BC
LD A,B
OR C
JP NZ,ILP1
POP AF
INC A
CP 136
JP NZ,ILP2
RET
ONE: LD HL,63488
LD BC,2048
ILP3: LD A,255
SUB (HL)
LD (HL),A
INC HL
DEC BC
LD A,B
OR C
JP NZ,ILP3
RET
GETKEY: BIOS 2
CP 32
RET Z
RES 5,A ; ALWAYS UPPER CASE!!
RET
GOCPM: LD A,7FH ; FADE WITH 'DEL CHAR' INSTEAD OF SPACE
LD (TOBL),A
CALL FADE ; RETURN TO CP/M
CLS 2047
BIOS 0 ; WARM BOOT
PUTCRT: LD B,16 ; PUT VALUES POINTED TO BY HL INTO 6545
HYE: LD A,B
DEC A
OUT (12),A
LD A,(HL)
OUT (13),A
DEC HL
DJNZ HYE
RET
INCHR: PUSH BC ; FILNAME INPUT ROUTINE
PUSH HL
PUSH DE
BIOS 2
CP 65
JP C,SPCBB ; FIX CHARS IF LOWER CASE
RES 5,A
SPCBB: POP DE
POP HL
POP BC
RET
INPUT: EX DE,HL
LD HL,QUES1
CALL PRINTS
EX DE,HL
LD HL,61440+256+64+46
LD (SAVEEM),HL
LD B,0
INPUT1: LD (HL),'_'
PUSH IX
PUSH BC
CALL INCHR
POP BC
POP IX
INPUT2: CP 8
JP NZ,INPUT3
LD A,B
CP 1
JP C,INPUT1
LD (HL),32
DEC B
DEC HL
JP INPUT1
INPUT3: CP 13
JP NZ,INPUT4
LD A,B
PUSH AF
PUSH HL
POP DE
LD HL,(SAVEEM)
CALL CNVRT
POP AF
RET
INPUT4: CP 33
JP C,INPUT1
CP 128
JP NC,INPUT1
LD C,A
LD A,B
CP 14
JP Z,INPUT1
INC B
LD (HL),C
INC HL
JP INPUT1
CNVRT: LD DE,FILNAM-1
WHELL: LD A,(HL)
CP '_'
JP Z,OWHELL
INC DE
INC HL
LD (DE),A
JP WHELL
OWHELL: RET
COLOUR: PUSH HL
POP DE
INC DE
LD (HL),A
LDIR
RET
OVER: LD A,144 ; START OF MAIN PROG (FINALLY!)
OUT (28),A
LD HL,61440
LD DE,61441
LD BC,2048
LD (HL),0
LDIR
LD A,128
OUT (28),A
CLS 2048
CALL CHKCOL
LD (18000),A
LD HL,64000
LD DE,64001
LD BC,16
LD (HL),0
LDIR
LD E,1AH
LD C,2
CALL BDOS
LD HL,CTREND
CALL PUTCRT
LD HL,TITLE
LD DE,61440
CALL PRINTS
LD HL,INSTR
LD DE,61440+128
CALL PRINTS
LD A,64
OUT (8),A
LD A,13
LD HL,63488+9
LD BC,7
CALL COLOUR
LD A,14
LD HL,63488+18+8
LD BC,2
CALL COLOUR
LD A,14
LD HL,63488+18+11+6
LD BC,7
CALL COLOUR
LD A,11
LD HL,63488+18+11+10+8
LD BC,5
CALL COLOUR
LD A,15
LD HL,63488+128+7
LD BC,1
CALL COLOUR
XOR A
OUT (8),A
LD A,0C9H
LD (20000),A
LD (16000),A
LD (15000),A
LD (14000),A
LD HL,10000-128
CALL LOADM ; CHECK IF FILENAME GIVEN ON COMMAND
CP 2 ; LINE (IE A>OPEN GOOGLE.SCN)
JP NZ,NOINP
LD A,32
LD (FILNAM),A
LD A,0
LD (5CH),A
LD HL,61440+256+64
CALL INPUT ; NO NAME, SO INPUT ONE
LD A,(FILNAM)
CP 32
JP Z,GOCPM ; NO NAME EVEN NOW, SO QUIT
FINISH: LD A,(FILNAM+1)
CP ':'
JR NZ,NODRIV
LD A,(FILNAM)
SUB 64
LD (5CH),A
LD HL,FILNAM+2
LD DE,FILNAM
LD BC,12
LDIR
NODRIV: LD HL,5DH
LD DE,5EH
LD BC,12
LD (HL),32
LDIR
LD HL,FILNAM-1
LD DE,5CH
LD B,8
NODOT: INC HL
INC DE
LD A,(HL)
CP '.'
JP Z,FOUNIT
LD (DE),A
DJNZ NODOT ; FIX UP THE FILENAME IN 5C HEX
LD HL,FILNAM+9
LD DE,5CH+9
LD BC,3
LDIR
JP FLOK
FOUNIT: INC HL
LD DE,5CH+9
LD BC,3
LDIR
FLOK: LD HL,5DH ; ACTUAL START OF FILENAME
LD B,11 ; NO OF BYTES
NEXB: LD A,(HL)
CP 65
JP C,SPACE
RES 5,A
SPACE: LD (HL),A ; CONVERT LOWER TO UPPER CASE (BUT WATCH SPACES)
INC HL
DJNZ NEXB
LD HL,QUES2
LD DE,61440+6*64 ; AND NOW ASK THE VARIOUS QUESTIONS!
CALL PRINTS
CALL GETKEY
CP 'P'
JP Z,IP1OK
LD A,'S'
IP1OK: LD (ANS2),A
LD (61440+6*64+46),A
LD HL,QUES3
LD DE,61440+7*64
CALL PRINTS
CALL GETKEY
CP 'I'
JP Z,IP2OK
LD A,'N'
IP2OK: LD (ANS3),A
LD (61440+7*64+46),A
LD HL,QUES5
LD DE,61440+8*64
CALL PRINTS
CALL GETKEY
CP 'Y'
JP Z,IP4OK
LD A,'N'
IP4OK: LD (ANS5),A
LD (61440+8*64+46),A
CP 'Y'
JP NZ,NOPR
LD HL,QUES6
LD DE,61440+9*64
CALL PRINTS
CALL GETKEY
CP 'M'
JP Z,IP5OK
LD A,'E'
IP5OK: LD (ANS6),A
LD (61440+9*64+46),A
LD A,(ANS6)
CP 'E'
JP NZ,NOPR
LD HL,QUES7
LD DE,61440+10*64
CALL PRINTS
CALL GETKEY
CP 'S'
JP Z,IP6OK
CP 'M'
JP Z,IP6OK
CP 'L'
JP Z,IP6OK
LD A,'S'
IP6OK: LD (ANS7),A
LD (61440+10*64+46),A
NOPR: LD A,0C9H ; NOW LOAD THE PICTURE!
LD (20000),A ; FOR HIRES2
LD (16000),A ; FOR THIRTY-TWO LINE PIKKIE
LD (15000),A ; FOR 80 BY 24 PIC
LD (14000),A ; FOR NORMAL, OTHER ASSUMED NON_COLOUR
LD HL,10000-128
CALL LOADM
CP 2
JP Z,GOCPM
NOINP: LD A,16
LD (LINES),A
LD A,(20000) ; THE PROGRAMME CHECKS HOW MUCH MEMORY THE
CP 0C9H ; SCREEN TAKES UP AND DISPLAYS ACCORDINGLY
JP NZ,OPIK ; IE NORMALSCREEN<32LINES<HIRES2SCREEN
LD A,(16000)
CP 0C9H
JP NZ,BIGPIC
LD A,(15000)
CP 0C9H
JP NZ,BY24
OPIK: LD A,(14000)
CP 0C9H
JP Z,LESCOL
LD HL,10000
LD DE,63488
LD A,64
OUT (8),A
LD BC,1024
LDIR
XOR A
OUT (8),A
LD A,(20000)
CP 0C9H
JP NZ,HIRES2
LD HL,10000+1024
LD DE,63488
LD BC,2048
LDIR
LD A,(ANS2)
CP 'P' ; DISPLAY AS PCGS IF FLAG SET
JP Z,PCGLAY
LD HL,10000+2048+1024
LD DE,61440
LD BC,1024
LDIR
AFTR: LD A,(ANS3)
CP 'I'
CALL Z,INVERT ; AND ACT UPON VARIOUS OTHER FLAGS
LD A,(ANS5)
CP 'Y'
JP Z,DUMPIC
CALL GETKEY
CP 27 ; QUIT IF ESC PRESSED, ELSE RUN THE
JP Z,GOCPM ; PROGRAMME AGAIN!
CALL FADE
XOR A
LD (5DH),A
JP 100H
LESCOL: LD A,(COLFLG)
CP 255
JP NZ,YNGWIE
LD A,64
OUT (8),A
LD HL,63488
LD DE,63489
LD BC,1024
LD (HL),7
LDIR
XOR A
OUT (8),A
YNGWIE: LD HL,10000 ; SUB TO LOAD ANCIENT NON-COLOUR
LD DE,63488 ; SCREENS (ALA CHOOK, ETC)
LD BC,2048
LDIR
LD A,(ANS2)
CP 'P' ; DISPLAY AS PCGS IF FLAG SET
JP Z,PCGLAY
LD HL,10000+2048
LD DE,61440
LD BC,1024
LDIR
JP AFTR
BY24: LD HL,10000 ; SUB TO DISPLAY AN 80 BY 24 SCREEN
LD DE,63488
LD BC,1920 ; 80*24
LD A,64
OUT (8),A
LDIR
XOR A
OUT (8),A
LD HL,10000+1920
LD DE,63488
LD BC,2048
LDIR
LD A,(ANS2)
CP 'P' ; DISPLAY AS PCGS IF FLAG SET
JP Z,PCGLAY
LD HL,10000+1920+2048
LD DE,61440
LD BC,1920
LDIR
LD HL,L24END
CALL PUTCRT
LD A,24
LD (LINES),A
JP AFTR
HIRES2: LD A,7 ; SUB TO LOAD HIRES2 SCREENS
LD B,8
LD HL,10000+1024
PUSH HL
LOOPIE: ADD A,128
OUT (28),A
SUB 128
POP HL
PUSH HL
LD DE,63488
PUSH BC
LD BC,2048
LDIR
POP BC
DEC A
LD DE,2048
POP HL
ADD HL,DE
PUSH HL
DJNZ LOOPIE
LD HL,10000+1024+8*2048
LD DE,61440
LD BC,1024
LDIR
LD HL,10000+9*2048
LD DE,61440
LD A,144
OUT (28),A
LD BC,1024
LDIR
LD A,128
OUT (28),A
JP AFTR
BIGPIC: LD A,32 ; SUB TO LOAD 32 LINES PICTURES
LD (LINES),A
LD HL,L32END
CALL PUTCRT
LD HL,10000
LD DE,63488
LD A,64
OUT (8),A
LD BC,2048
LDIR
XOR A
OUT (8),A
LD HL,10000+2048
LD DE,63488
LD BC,2048
LDIR
LD A,(ANS2)
CP 'P'
JP Z,PCGLAY
LD HL,10000+4096
LD DE,61440
LD BC,2048
LDIR
JP AFTR
PCGLAY: LD HL,CTREND ; SUB TO DISPLAY AS PCG LAYOUT
CALL PUTCRT
LD A,16
LD (LINES),A
CLS 2048
LD A,(COLFLG)
CP 255
JP NZ,COLNON
LD A,64
OUT (8),A
LD HL,63488
LD DE,63489
LD BC,2047
LD (HL),2
LDIR
XOR A
OUT (8),A
COLNON: LD BC,128
LD HL,0
XOR A
PCGLP: PUSH HL
LD DE,61440
ADD HL,DE
LD (HL),A
INC HL
SET 7,A
LD (HL),A
RES 7,A
DEC HL
POP HL
INC HL
INC HL
INC HL
INC HL
INC A
DEC BC
PUSH AF
LD A,B
OR C
JP Z,OUTLP
POP AF
JP PCGLP
OUTLP: POP AF
LD HL,61440+512+128
LD A,128
LD B,128
LOUP1: LD (HL),A
INC HL
INC A
DJNZ LOUP1
LD HL,FILNAM
LD DE,61440+14*64
LD BC,12
LDIR
JP AFTR
SMAL: LD A,6
LD (MODE),A
RET
MEDI: LD A,4
LD (MODE),A
RET
LARG: LD A,5
LD (MODE),A
RET
.RADIX 16D ; (THANKS TO DZ.COM!)
DUMPIC: LD A,(ANS7) ; SCREEN DUMPING ROUTINE
CP 'S'
CALL Z,SMAL
LD A,(ANS7)
CP 'M'
CALL Z,MEDI
LD A,(ANS7)
CP 'L'
CALL Z,LARG
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,1B
CALL OUTCHR
LD A,'A'
CALL OUTCHR
LD A,8
CALL OUTCHR
LD HL,0F000
LD A,(LINES)
CP 18
JP Z,WIERD
LD B,A
LABEL1: PUSH BC
PUSH HL
PUSH HL
LD DE,0F000
LD C,00
LABEL2: POP HL
LD A,(ANS6)
CP 'E'
JP Z,EPSON
PUSHALL
LD HL,BEEPR
CALL PRTSTR
POPALL
JP MICROB
EPSON: LD A,1B
CALL OUTCHR
LD A,'*'
CALL OUTCHR
LD A,(MODE)
CALL OUTCHR
XOR A
CALL OUTCHR
LD A,02
CALL OUTCHR
MICROB: LD B,'@'
JR LABEL4
LABL13: JR LABEL2
LABEL3: JR LABEL1
LABEL4: PUSH BC
PUSH DE
LD A,(HL)
CP 80
JR C,LABEL5
PUSH AF
LD A,90
OUT (1C),A
LD A,(HL)
OR 80
OUT (1C),A
POP AF
LABEL5: INC HL
PUSH HL
LD H,00
LD L,A
ADD HL,HL ; DON'T BLOODY WELL ASK ME!!!
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,DE ; (ACTUALLY I DO KNOW - GET PCG CHAR + OFFSET)
LD A,01
OUT (0B),A
LD B,08
LD DE,0080
LABEL6: PUSH BC
LD B,08
PUSH HL
LABEL7: LD A,(HL)
AND E
JR Z,LABEL8
CCF
LABEL8: RL D
INC HL
DJNZ LABEL7
POP HL
RR E
LD A,D
CALL OUTCHR
LD D,00
POP BC
DJNZ LABEL6
XOR A
OUT (0B),A
POP HL
POP DE
POP BC
DJNZ LABEL4
LD A,0D
CALL OUTCHR
LD A,0A
CALL OUTCHR
LD A,(LINES)
CP 20
JR NZ,LABL12
LD C,1
POP AF
LABL12: LD DE,0F008
LD A,C
LD C,1
OR A
JR Z,LABL13
POP BC
XOR A
LABEL9: JR Z,LABL10
CP 03
JR Z,LABL11
LABL10: DJNZ LABEL3
LABL11: LD A,1B
CALL OUTCHR
LD A,'2'
CALL OUTCHR
LD HL,ENDSTR ; DON'T YOU HATE USELESS COMMENTS?
CALL PRTSTR
POP HL
POP DE
POP BC
POP AF
CALL FADE
XOR A
LD (5DH),A
JP 100H
SET872: LD B,8 ; SET LINE FEED LENGTH AT 8 PIXELS
CALL SETLFL
PUSH AF
XOR A
LD (SPESH),A
POP AF
RET
SET372: LD B,3 ; SET IT AT 3 PIXELS DOWN (8+3=11)
CALL SETLFL
PUSH AF
LD A,1
LD (SPESH),A
POP AF
RET
SETLFL: LD A,1B
CALL OUTCHR
LD A,'A'
CALL OUTCHR
LD A,B
CALL OUTCHR
RET
WIERD: LD A,(ANS7) ; SCREEN DUMPING ROUTINE FOR 80BY24
CP 'S' ; SCREENS. I'M TO LAZY TO WRITE THIS
CALL Z,SMAL ; INTO THE ABOVE SO I BLOCK COPIED IT!
LD A,(ANS7)
CP 'M'
CALL Z,MEDI
LD A,(ANS7)
CP 'L'
CALL Z,LARG
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD HL,0F000
LD A,18 ; 24 LINES
LD B,A
WABEL1: PUSH BC
PUSH HL
PUSH HL
LD DE,0F000
LD C,00
WABEL2: PUSH AF
LD A,E
CP 0
CALL NZ,SET372
CALL Z,SET872
POP AF
POP HL
LD A,(ANS6)
CP 'E'
JP Z,EPSON1
PUSHALL
LD HL,BEEP1
CALL PRTSTR
POPALL
JP MICRO1
EPSON1: LD A,1B
CALL OUTCHR
LD A,'*'
CALL OUTCHR
LD A,(MODE)
CALL OUTCHR
LD A,80
CALL OUTCHR
LD A,02
CALL OUTCHR
MICRO1: LD B,50 ; 80 ACROSS
JR WABEL4
WABL13: JR WABEL2
WABEL3: JR WABEL1
WABEL4: PUSH BC
PUSH DE
LD A,(HL)
CP 80
JR C,WABEL5
PUSH AF
LD A,90
OUT (1C),A
LD A,(HL)
OR 80
OUT (1C),A
POP AF
WABEL5: INC HL
PUSH HL
LD H,00
LD L,A
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,DE
LD A,01
OUT (0B),A
LD B,08
LD DE,0080
WABEL6: PUSH BC
LD B,08
PUSH HL
WABEL7: LD A,(HL)
AND E
JR Z,WABEL8
CCF
WABEL8: RL D
INC HL
DJNZ WABEL7
POP HL
RR E
PUSH AF
LD A,(SPESH)
CP 1
CALL Z,RES12
POP AF
LD A,D
CALL OUTCHR
LD D,00
POP BC
DJNZ WABEL6
XOR A
OUT (0B),A
POP HL
POP DE
POP BC
DJNZ WABEL4
LD A,0D
CALL OUTCHR
LD A,0A
CALL OUTCHR
WABL12: LD DE,0F008
LD A,C
LD C,1
OR A
JR Z,WABL13
POP BC
XOR A
WABEL9: JR Z,WABL10
CP 03
JR Z,WABL11
WABL10: DJNZ WABEL3
WABL11: LD A,1B
CALL OUTCHR
LD A,'2'
CALL OUTCHR
LD HL,ENDSTR
CALL PRTSTR
POP HL
POP DE
POP BC
POP AF
CALL FADE
XOR A
LD (5DH),A
JP 100H
RES12: RES 0,D
RES 1,D
RES 2,D
RES 3,D
RES 4,D
RET
END ; OR IS IT?
; BORED YET? HOW BOUT THIS... B U R M A S H A V E ! !
; OR BETTER YET.... buy... S U P E R I O R C O M U T E R S O F T W A R E !
; SEE YA 8-)
;
; BY THE WAY, WATCH YOUR CRT FOR THESE SCS RELEASES!
; FIGHTER.COM (ARCADE GAME)
; OPEN.COM (AHEM)
; SCNTODS.COM (HIRES2 TO EP CONVERTER)
; SUPERIOR.ARK (SCS DISK 1)
; FORTRIS.ARK (TETRIS)
; TIMEGAPU.ARK (TIMEGAP-X UNREGISTERED)
; LIBRARY.Z80 (USEFUL ROUTINES - BIT FADES FOR GRLOAD ETC)
; DEXIGN.COM (SUPER DUPER GRAPHIC EDITOR!!!!!)