home *** CD-ROM | disk | FTP | other *** search
- .Z80
- ASEG
- ORG 0100H
- ;
- ; EQUATES
- ;
- BLK EQU 08EH ; BLOCK CHAR
- CR EQU 13
- LF EQU 10
- EOS EQU "$" ; END OF STRING MARKER
- ;
- WBOOT EQU 0 ; WARM BOOT
- BDOS EQU 5 ; BDOS CALL LOCATION
- BINASC EQU 0042BH ; CONVERT HL --> (IX) ASCII STRING
- SCRNPR EQU 0046BH ; PRINT (HL) STRING TO SCREEN, END AT 0FFH
- LCDOUT EQU 00483H ; DIRECT LCD SCREEN OUTPUT
- CONINP EQU 01066H ; READ THE KB
- USERB EQU 0EA80H ; START OF USER BIOS ROUTINE
- DMA EQU USERB-080H ; DMA AREA
- ASCNUM EQU DMA+16 ; USE THIS SPACE TO PUT THE ASCII NUMBER
- SUSERB EQU 0F00BH ; USER BIOS SIZE IN PAGES
- MODEFG EQU 0F0B8H ; MODE FLAG, MENU..SYS-SCRN...
- PF1VEC EQU 0F1C0H ; CTRL-PF1 JUMP VECTOR
- LCDMOD EQU 0F2C9H ; LCD MODE, 0,1,2,OR 3
- LCDVS EQU 0F2CAH ; V. SCREEN 0 OR 1
- USERNO EQU 0F33BH ; CURRENT USER NUMBER
- SELDSK EQU 0FDABH ; SELECT DISK
- SETTRK EQU 0FDAEH ; SELECT TRACK
- SETSEC EQU 0FDB1H ; SELECT SECTOR
- SETDMA EQU 0FDB4H ; SELECT DMA ADDRESS
- READ EQU 0FDB7H ; READ THE SECTOR
- DSKSPC EQU 0F543H ; WORK SPACE FOR THE DISK
- ;
- ; DUMMY CODE USED TO SEE IF THE RELOCATED CODE IS THE CORRECT SIZE
- ;
- LD HL,NOMORE ; SHOULD BE = 0EC00H
- ;
- ; START OF PROGRAM
- ;
- LD C,9 ; BDOS PRINT STRING FUNCTION NUMBER
- LD DE,WELCOM ; PRINT WELCOME MESSAGE
- CALL BDOS
- CALL WAITKB ; WAIT FOR KB INPUT TO GO ON
- ; TEST THE OS ROM DATE
- LD IX,(WBOOT+1) ; GET WBOOT JUMP ADDRESS
- LD BC,060H ; OFFSET ADDED TO IX
- ADD IX,BC ; ADD IN THE OFFSET TO THE WBOOT ADDRESS
- LD HL,07FD0H ; STARTING ADDRESS IN ROM
- LD DE,TSTROM ; WHERE TO PUT THE DATA
- LD BC,7 ; JUST MOVE 7 BYTES
- LD A,0 ; FROM OS ROM INTO RAM
- CALL IXJMP ; JMP (IX)
- ; COMPARE THE 2 STRINGS
- LD DE,TSTSTR-1 ; POINT TO CORRECT STRING
- LD HL,TSTROM ; POINT TO WHAT'S IN THE OS ROM
- LD BC,7 ; TEST ONLY 7 BYTES
- TSTLOP:
- INC DE ; NEXT BYTE IN STRING
- LD A,(DE) ; READ CORRECT BYTE IN
- CPI ; COMPARE TO (HL),INC HL, DEC BC
- JP NZ,ROMERR ; WRONG VERSION
- JP PE,TSTLOP ; JMP IF NOT DONE
- ;
- ; VERSION MATCHES, GIVE CORRECT VERSION MESSAGE
- ;
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,ROMOK ; THE STRING
- CALL BDOS
- ;
- ; CHECK FOR USER BIOS HEADER IF ANY
- ; IF NONE, JUMP TO THE CHECK FOR USER BIOS SIZE (CHKSIZ)
- ;
- LD A,(HEADER) ; IF THERE IS A HEADER I'LL FIND "UB" OR "US"
- CP "U"
- JP NZ,CHKSIZ ; IF <> "U", THERE'S NOT A HEADER
- ;
- LD A,(HEADER+1) ; THIS IS A "B" OR "S"
- CP "S" ; IF "S", IT'S SCHEDULER DATA
- JP NZ,CHK4AB ; NO, TEST FOR A "B"
- ;
- LD DE,SCHMSG ; PRINT MESSAGE, THIS HAS SCHEDULER DATA
- LD C,9 ; BDOS PRINT STRING FUNCTION
- CALL BDOS
- CALL WAITKB ; WAIT FOR KB INPUT
- JP FEEDER ; PRINT SEVERAL LINE FEEDS
- ;
- CHK4AB:
- CP "B" ; IS IT A "B" ?
- JP NZ,CHKSIZ ; NO,SKIP THE REST
- ; TEST FOR CHECKSUM ERROR IN THE HEADER
- LD HL,HEADER ; LOOK AT THE START OF THE HEADER
- LD B,15 ; WE TEST ONLY 15 BYTES
- LD A,0 ; 0 -(HEADER --> HEADER+15)
- ;
- CHKLOP:
- SUB (HL)
- INC HL
- DJNZ CHKLOP
- ; COMPARE COMPUTED CHECKSUM WITH REAL CHECKSUM
- CP (HL) ; DO THEY MATCH, THEY SHOULD
- JP Z,PRNHDR ; YES, GO ON
- ; NO, PRINT CHECK SUM ERROR MESSAGE
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,CHKERR ; THE MESSAGE
- CALL BDOS
- ; PRINT THE MESSAGE OF THE USER BIOS FILE NAME FOUND
- PRNHDR:
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,NAMMSG ; FOUND ... NAME MESSAGE
- CALL BDOS
- ;
- LD B,8 ; PRINT THE NEXT 8 BYTES FROM THE HEADER
- LD HL,HEADER+2 ; POINT TO THE NAME
- LD C,2 ; BDOS CON: OUT FUNCTION
- ;
- OUTLOP:
- PUSH BC ; SAVE THE CRITICAL REGs
- PUSH HL
- LD E,(HL) ; GET THE NAME BYTES INTO Ereg FOR PRINTING TO CON:
- CALL BDOS ; PRINT THE CHAR
- POP HL
- POP BC
- INC HL ; POINT TO THE NEXT BYTE
- DJNZ OUTLOP ; COUNT DOWN ON Breg TILL 0, ELSE LOOP
- ; PRINT THE REST OF THE NAME FOUND MESSAGE
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,NA2MSG ; THE STRING
- CALL BDOS
- ; WAIT FOR KB INPUT TO CONTINUE
- CALL WAITKB
- ; IS THIS ROUTINE OK TO RELEASE ???
- LD A,(HEADER+11) ; RELEASE FLAG, IF =0 DON'T RELEASE
- OR A ; TEST BITS
- JP NZ,RELEASE ; IF <> 0, OK TO RELEASE
- ; ELSE PRINT ERROR MESSAGE
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,LOCKED ; ERROR MESSAGE
- CALL BDOS
- CALL WAITKB
- JP WBOOT
- ;
- RELEASE:
- LD IX,(HEADER+12) ; GET THE ADDRESS OF THE RELEASE ROUTINE
- CALL IXJMP ; RUN THE RELEASE ROUTINE
- ; MOVE IN A BUNCH OF SPACES OVERLAY THE OLD HEADER
- LD HL,SPACES ; MOVE SPACES
- LD DE,HEADER ; INTO THE HEADER AREA
- LD BC,16 ; 16 BYTES MOVED
- LDIR
- ; PRINT A BUNCH OF LINE FEEDS
- FEEDER: LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,FEED ; CR,LF,LF,... STRING
- CALL BDOS
- ;
- ; CHECK USER BIOS SIZE, IT MUST BE 2 PAGES IN SIZE
- ;
- CHKSIZ: LD A,(SUSERB) ; GET ITS SIZE IN PAGES
- CP 2 ; IS IT 2 PAGES ???
- JP NZ,SIZBAD ; NO, GIVE ERROR MESSAGE
- ;
- ; USER BIOS IS 2 PAGES, GIVE THE USER THE OPTION TO LOAD/OR NOT TO LOAD
- ;
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,OKSIZE ; SIZE OK MESSAGE
- CALL BDOS
- CALL WAITKB ; WAIT FOR KB INPUT
- ;
- ; MOVE THE PROGRAM INTO THE USER BIOS AREA
- ;
- LD HL,START ; MOVE START
- LD DE,USERB ; TO 0EA00H
- LD BC,ZEND-START ; NUMBER OF BYTES
- LDIR
- ;
- ; CHANGE THE JUMP VECTOR FOR CTRL-PF-1
- ;
- LD HL,USERB ; HERE IS THE LOCATION WHERE TO GO
- LD (PF1VEC),HL ; CTRL-PF1 VECTOR
- ;
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,FINISH ; PRINT FINISHED MESSAGE
- CALL BDOS
- ;
- JP WBOOT ; WARM BOOT
- ;
- ; GO HERE IF THEY HAVE THE WRONG VERSION ROM
- ;
- ROMERR:
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,ROMBAD ; THE ERROR MESSAGE
- CALL BDOS
- CALL WAITKB ; WAIT FOR KB INPUT TO CONTINUE
- JP WBOOT
- ;
- ; ERROR MESSAGE FOR THE WRONG USER BIOS SIZE
- ;
- SIZBAD:
- LD C,9 ; BDOS PRINT STRING FUNCTION
- LD DE,BADSIZ ; THE ERROR MESSAGE
- CALL BDOS
- CALL WAITKB ; WAIT FOR KB INPUT
- JP WBOOT
- ;
- ; SUBROUTINES
- ;
- IXJMP:
- JP (IX)
- ;
- ; WAIT FOR A KEY TO BE PRESSED
- ;
- WAITKB:
- LD C,9 ; BDOS STRING OUT FUNCTION
- LD DE,CONT ; PRINT "PRESS RETURN TO ..."
- CALL BDOS
- LD C,1 ; CON: INPUT FUNCTION
- CALL BDOS
- CP 03H ; IS IT A CTRL-C ?
- JP Z,WBOOT ; YES, QUIT
- RET
- ;
- ; RELOCATED CODE STARTS HERE
- ;
- START:
- .PHASE USERB
- ;
- ; THIS SECTION OF CODE GETS MOVED UP TO USERBIOS AREA
- ;
- LD A,(MODEFG) ; SEE WHERE WE WERE CALLED FROM
- AND 037H ; TEST ONLY PWORD,MENU,SYS SCR,&ALARM
- RET NZ ; DON'T RUN IF IN THOSE MODES
- ;
- LD A,(LCDMOD) ; RUN ONLY IN MODE 0
- OR A ; IS A=0 ?
- RET NZ ; IF NOT, RETURN
- ;
- LD A,(RFLAG) ; ARE WE ALREADY RUNNING THIS ?
- OR A ; LIKE PRESSING CTRL PF1 TWICE?
- RET NZ ; DON'T LET A USER DO THAT, JUST RETURN
- ;
- LD A,0FFH ; SET RFLAG SHOWING THAT THE PROGRAM IS BEING RUN
- LD (RFLAG),A ; SO THAT A RET WILL OCCUR IF PF PRESS AGAIN
- ;
- ; SAVE WORK SPACE FIRST
- ;
- LD HL,DSKSPC ; SAVE THIS DISK WORK SPACE
- LD DE,SAVEWS ; SAVE INTO MY SCRATCH AREA
- LD BC,22 ; SAVE 22 BYTES
- LDIR ; MOVEIT
- ;
- CALL SWAPVS ; CHANGE V. SCREENS
- ;
- ; CLEAR SCREEN & DISPLAY HEADER
- ;
- LD C,0CH ; CLS CHARACTER
- CALL LCDOUT ; CLEAR LCD
- ;
- LD B,5 ; PRINT THE STRING 5 TIMES
- PLOOP: PUSH BC ; SAVE COUNT IN Breg
- LD HL,STRING
- CALL SCRNPR ; PRINT (HL) STRING TO SCREEN
- POP BC ; RESTORE THE COUNT IN Breg
- DJNZ PLOOP ; KEEP ON LOOPING
- ;
- ; READ & PRINT DRIVE A:
- ;
- LD C,0 ; SELECT DRIVE A:
- CALL SELDSK
- ;
- ; *** FOR LATER EXPANSION OF THE PROGRAM
- ;
- ; LD (DPB),HL ; SAVE DPB, USED FOR LATER PROG EXP
- ;
- LD BC,DMA ; POINT DMA INTO USER BIOS
- CALL SETDMA
- ;
- LD BC,0 ; SELECT TRACK 0
- CALL SETTRK
- ;
- LD A,0 ; WE START AT SECTOR #0
- ;
- ; GET THE NEXT SECTOR ROUTINE
- ;
- GETSEC:
- LD (SEC),A ; STORE THIS NUMBER
- LD B,0 ; HIGH BYTE = 0
- LD C,A ; MOVE SECTOR NUMBER INTO Creg
- CALL SETSEC ; SELECT THIS SECTOR
- ;
- ; READ THE SECTOR INTO DMA
- ;
- CALL READ ; READ IT INTO DMA
- ;
- LD A,4 ; HEADER COUNT = 4
- LD (HEADCT),A ; SAVE THIS COUNT
- ;
- HEADP:
- LD A,(DMA) ; SEE IF USER # = CURRENT AREA
- LD HL,USERNO ; LOOK TO CURRENT USER NUMBER
- CP (HL) ; ARE THEY = ?
- JR NZ,NEXTHD ; NO, SKIP THIS
- ;
- LD A,(DMA+15) ; DON'T PRINT ANYTHING THAT MIGHT BE A
- CP 080H ; A MULTIPLE EXT. THIS KEEPS THE SAME FILE NAME
- JR Z,NEXTHD ; FROM SHOWING UP MORE THAN ONCE.
- ;
- ; FIND FILE SIZE & PLACE INTO HLreg
- ;
- LD A,(DMA+15) ; FIND FILE SIZE IN SECTORS
- ADD A,07H ; ROUND UP ANY FRACTION OF K BYTES
- RRCA ; Areg/8=SIZE IN K BYTES
- RRCA
- RRCA
- AND 01FH ; MASK OUT HIGH GARBAGE CAUSED BY SHIFT
- LD B,A ; SAVE FOR LATER ADDITION
- ;
- LD A,(DMA+12) ; GET FILE SIZE IN 16k BLOCKS
- RLCA ; A=A*16
- RLCA
- RLCA
- RLCA
- AND 0F0H ; MASK OUT ANY HIGH GARBAGE CAUSED BY SHIFT
- ADD A,B ; A NOW HAS THE FILE SIZE IN K BYTES
- LD L,A ; BIN-ASC REQUIRES THIS BE IN THE HLreg
- LD H,0 ; 255K IS THE MAXIMUM FILE SIZE
- ;
- CALL CNVASC ; CONVERT HL->ASCII TEXT
- ;
- ; OK, PRINT IT
- ;
- LD A,0FFH ; END OF STRING MARKER
- LD (DMA+12),A ; PLACE AT THE END OF THE STRING
- LD HL,DMA+1 ; POINT TO THE START OF THE STRING
- CALL SCRNPR ; PRINT THIS STRING
- ;
- ; PRINT THE FILE SIZE
- ;
- LD HL,ASCNUM+1 ; POINT TO THE ASCII STRING
- CALL SCRNPR ; PRINT THE ASCII NUMBER
- ;
- ; PRINT A BLOCK
- ;
- LD C,BLK ; PUT THE CODE FOR A BLOCK INTO Creg
- CALL LCDOUT ; PRINT Creg
- ;
- NEXTHD:
- LD HL,DMA+32 ; MOVE DOWN NEXT HEADER
- LD DE,DMA ; INTO THIS ADDRESS
- LD BC,96 ; NUMBER OF BYTES MOVED
- LDIR ; MOVE IT
- ;
- LD HL,HEADCT ; GET COUNTER
- DEC (HL) ; COUNT DOWN
- JR NZ,HEADP ; IF NOT = 0, DO MORE
- ;
- ; ALL THE HEADERS TRIED AT THIS POINT, GO ON TO THE NEXT SECTOR
- ;
- LD A,(SEC) ; GET THE SECTOR COUNT
- INC A ; NEXT SECTOR
- CP 8 ; HAVE WE GONE PAST OUR COUNT ???
- JR NZ,GETSEC ; NO, DO SOME MORE
- ;
- ; READ THE BIT MAP & COUNT THE FREE K BLOCKS
- ;
- LD HL,0F5D9H ; LOOK AT THE START OF A: BITMAP
- LD A,(0F291H) ; FIND THE DISK SIZE IN K BYTES
- LD D,A ; Dreg WILL BE USED AS THE BLOCK COUNTER
- INC D ; ADD 1 TO Dreg TO TAKE INTO ACCOUNT THE DIR BLOCK
- LD C,0 ; STARTING COUNT = 0
- ; EVERYTHING IS SET UP & READY, LET'S START COUNTING
- NEWBYT: LD A,(HL) ; GET A BYTE FROM THE BITMAP
- LD B,8 ; WE TEST ALL 8 BITS
- ; NOW WE SHIFT THROUGH THE BYTE TESTING ALL 8 BITS
- BITCHK: RLCA ; THE BIT UNDER TEST GOES INTO THE CARRY
- JR C,NOTFRE ; BLOCK IN USE, IT'S NOT FREE
- INC C ; THIS BLOCK IS FREE, COUNT IT
- NOTFRE: DEC D ; THIS IS OUR COUNT DOWN BLOCK COUNTER
- JR Z,DONE ; WHEN D=0, WE ARE DONE COUNTING
- DEC B ; COUNT DOWN ON OUR BIT COUNTER
- JR NZ,BITCHK ; AS LONG AS B>0, THERE ARE MORE BITS TO TEST
- INC HL ; IF ALL BITS ARE TESTED, GO UNTO THE NEXT BYTE
- JR NEWBYT
- ;
- ; PRINT "nnnK FREE"
- ;
- DONE: LD L,C ; PUT THE FREE BLOCK COUNT INTO Lreg
- LD H,0 ; THE HIGH BYTE IS ALWAYS ZERO
- CALL CNVASC ; CONVERT HL --> ASCII NUMBER
- ; PRINT IT
- DEC HL ; GOTO 1 BEFORE
- LD A,"(" ; PUT THIS INTO THE STRING
- LD (HL),A
- CALL SCRNPR ; PRINT IT
- ; PRINT FREE MESSAGE
- LD HL,FREMSG ; POINT TO FREE MESSAGE
- CALL SCRNPR ; PRINT IT
- ;
- ; AT THIS POINT WE SEEM TO BE DONE, JUST WAIT FOR KB INPUT TO RETURN
- ;
- CALL CONINP ; READ KB
- ;
- ; OK DONE, RETURN EVERYTHING
- ;
- LD DE,DSKSPC ; MOVE INTO THIS DISK WORK SPACE
- LD HL,SAVEWS ; MY SCRATCH AREA THAT WAS SAVED
- LD BC,22 ; MOVE 22 BYTES
- LDIR ; MOVEIT
- ;
- CALL SWAPVS ; RETURN TO FIRST VS
- LD A,0 ; RESET RFLAG SO THAT THIS PROGRAM WILL RUN AGAIN
- LD (RFLAG),A
- RET
- ;
- ; SUBROUTINES
- ;
- SWAPVS:
- LD A,(LCDVS) ; FIND CURRENT VS
- XOR 1 ; SWAP THE FIRST BIT
- LD (SELVS+2),A ; STORE IT AS A SELECTION
- LD HL,SELVS ; PRINT THIS ESC STRING
- CALL SCRNPR ; PRINT IT
- RET
- ;
- ; CONVERT THE HLreg INTO A ASCII NUMBER AT DMA+16
- ; ON RETURN LEADING ZEROs ARE KILLED AND HLreg POINTs TO THE FIRST
- ; PRINTABLE DIGIT.
- ;
- CNVASC:
- LD IX,ASCNUM ; POINT TO WHERE TO PUT THE RESULT
- CALL BINASC ; CONVERT HL TO ASCII NUMBER
- ;
- LD HL,ASCNUM ; POINT TO THE START ON THE NUMBER
- LD B,4 ; KILL ONLU THE FIRST 4 DIGITS IF REQUIRED
- ;
- CNVLOP:
- LD A,(HL) ; GET AN ASCII DIGIT
- CP "0" ; IS IT A LEADING 0 ?
- JR NZ,CNVRET ; IF NOT RETURN
- LD A," " ; IF 0, REPLACE WITH A SPACE
- LD (HL),A
- INC HL ; NEXT BYTE
- DJNZ CNVLOP ; DO SOME MORE IF B<>0
- ;
- CNVRET:
- LD A,0FFH ; PLACE AN END OF STRING MARKER AFTER
- LD (ASCNUM+5),A ; THE LAST DIGIT
- RET
- ;
- ; THIS IS THE ROUTINE THAT'S CALLED TO RESTORE CTRL-PF1 TO THE
- ; DEFAULT VALUE.
- ;
- OVERWR:
- LD HL,03970H ; DEFAULT VALUE FOR CTRL-PF1
- LD (PF1VEC),HL ; RESTORE PF1
- RET
- ;
- ; STRINGS
- ;
- SELVS: DB 27,209,0,0FFH
- STRING: DB "FilenameExtSize",BLK,0FFH
- FREMSG: DB "K Free)",0FFH
- ;
- RFLAG: DB 0 ; IF =0, OK TO RUN THIS PROG, ELSE RETURN
- ;
- ; THIS NEXT ITEM IS FOR LATER EXPANSION IN THE PROGRAM
- ;
- ;DPB: DW 0 ; THE DISK PARAMETER BLOCK
- ;
- SEC: DB 0 ; SECTOR COUNT
- HEADCT: DB 0 ; COUNTER FOR THE HEADERS
- SAVEWS: DB 0,0,0,0,0,0,0,0,0,0,0 ; DISK WORK SPACE AREA
- DB 0,0,0,0,0,0,0,0,0,0,0
- DB "Bob Diaz Was Here" ; I JUST WANTED TO PUT MY NAME HERE
- ;
- ; THIS IS THE PROPER HEADER FOR THE USER BIOS AREA
- ;
- HEADER: DB "UB" ; MARKS A LEGAL HEADER
- DB "PF1DIR11" ; ROUTINE NAME
- DB 2 ; SIZE IN PAGES
- DB 255 ; OVERWRITE ALLOWED
- DW OVERWR ; ADDRESS OF A RELEASE (OVERWRITE) ROUTINE
- DB 0 ; NOT USED, BUT REQUIRED
- DB 0D3H ; CHECKSUM OF THE FIRST 15 BYTES
- NOMORE: ; THIS SHOULD BE AT ADDRESS 0EC00H
- ;
- .DEPHASE
- ZEND:
- ;
- TSTSTR: DB "5/28/84"
- TSTROM: DB "1234567" ; THE DATE ON THE OS ROM IS PLACED HERE
- ;
- WELCOM: DB CR,LF,LF
- DB "This program is designed to place a DIR "
- DB "function under the CTRL-PF1 key. The",CR,LF
- DB "program requires 2 pages of User BIOS "
- DB "area in order to function. In addition",CR,LF
- DB "your PX-8 computer MUST HAVE the latest "
- DB "OS ROM (CP/M ver 2.2B).",CR,LF,LF
- DB EOS
- ;
- ROMOK: DB CR,LF,LF,LF
- DB "Your PX-8 has the correct version"
- DB " of the OS ROM in order to use this program."
- DB CR,LF,EOS
- ;
- ROMBAD: DB CR,LF,LF,LF
- DB "Your PX-8 has the old version of the "
- DB "OS ROM. I can't continue, sorry."
- DB CR,LF,EOS
- ;
- SCHMSG: DB CR,LF
- DB "WARNING: You have SCHEDULER DATA in the "
- DB "User BIOS Area. Press the RED STOP Key",CR,LF
- DB "to avoid overwriting it or RETURN to "
- DB "continue.",CR,LF,EOS
- ;
- CHKERR: DB "((((This is odd, but there's a checksum "
- DB "error in the header.))))",7,EOS
- ;
- NAMMSG: DB CR,LF
- DB 'I found "',EOS
- ;
- NA2MSG: DB '" Loaded into the User BIOS Area, press the RED STOP',CR,LF
- DB "KEY to avoid disabling it or RETURN to continue.",CR,LF,LF
- DB EOS
- ;
- LOCKED: DB CR,LF,LF,LF,LF,LF,LF
- DB "*** CAN'T RELEASE THIS ROUTINE, IT'S LOCKED! ***"
- DB CR,LF,7,7,7,EOS
- ;
- SPACES: DB " "
- ;
- FEED: DB CR,LF,LF,LF,LF,EOS
- ;
- BADSIZ: DB CR,LF,"WARNING: I can't continue, the USER "
- DB "BIOS Area is NOT set to 2 pages.",CR,LF
- DB "If you wish to use this program, run "
- DB "CONFIG and set USER BIOS to 2 pages first.",CR,LF,LF
- DB EOS
- ;
- OKSIZE: DB CR,LF
- DB "I am ready to copy the program into the "
- DB "USER BIOS Area, if that's OK, just press",CR,LF
- DB "the RETURN Key. If you don't want this "
- DB "to happen, press the Red STOP Key.",CR,LF,LF,EOS
- ;
- CONT: DB CR,LF,"(PRESS THE RETURN KEY TO CONTINUE"
- DB " OR CTRL-C TO ABORT) ",7,EOS
- ;
- FINISH: DB CR,LF,LF,"PROGRAM LOADED: ",7,7,7,7,EOS
- ;
- DW 0,0,0,0,0,0,0,0
- ;
- DB "This Program was written by: *** BOB DIAZ *** "
- DB "From EPSON America December 24, 1985.",10,13
- DB "VERSION 1.1 ","$",0FFH
- ;
- END 0100H