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
/
SIMTEL
/
CPMUG
/
CPMUG035.ARK
/
GETW.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
2KB
|
57 lines
HIGH2 EQU 03FH
LONYB EQU 0FH
HINYB EQU 0F0H
* THIS ROUTINE TAKES A GIVEN CO-ORDINATE PAIR (REGS B, C IN 64 X 64
* DAZZLER MODE AND RETURNS THE PIXEL LOCATED ON THE SCREEN AT
* THAT LOCATION. IF THE CO-ORDINATE PAIR LOCATES OUT OF THE SCREEN
* AREA, IT IS "WRAPPED AROUND" THE SCREEN UNTIL IT IS DISPLAYABLE.
* IT IS ASSUMED THAT THE HIGH-ORDER NYBBLE OF D IS CLEAR.
ORG 50EAH
ONBUF EQU 5090H
GETW: PUSH H
LHLD ONBUF ;GET START @ OF BUFFER INTO HL
* SET UP Y CO-ORDINATE PART OF ADDRESS (FROM REG C)
MOV A,C ;GET Y CO-ORDINATE
CMA ;ADJUST FROM SCREEN TO DAZZLER CO-ORDS
RAL ;SET THE CARRY IF WE WILL BE
RAL ;IN ONE OF THE LOWER TWO DAZZLER
RAL ;QUADRANTS
JNC $+3+4 ;UPPER HEMISPHERE REQUIRES NO @ ADJUSTMENT
INR H ;HOWEVER, THE LOWER HEMISPHERE REQUIRES
INR H ;BIT 3 OF H SET
INR H
INR H
RAL ;SET BIT 0 OF H IF THE FIFTH (I.E. BIT 4) BIT
JNC $+3+1 ;OF Y IS SET
INR H
ANI HINYB ;THE TOP NYB OF A IS NOW PROPERLY SET AS
MOV L,A ;THE TOP NYB OF THE LO-BYTE OF THE ADDRESS
* SET UP X CO-ORDINATE PART OF ADDRESS (FROM REG B)
MOV A,B ;GET X CO-ORDINATE
ANI HIGH2 ;CLEAR HI-BITS AND CY (WRAPAROUND)
RAL ;ARE WE IN THE RIGHT OR LEFT QUADRANT OF
RAL ;OUR GIVEN HEMISPHERE. SET THE CARRY TO
RAL ;FIND OUT
JNC $+3+2 ;JUMP IF LEFT QUAD
INR H ;ELSE ADJUST REG H
INR H
RRC ;MOVE ZEROS TO HI-NYBBLE OF A AND SET
RRC ;CARRY ACCORDING TO WHETHER THE
RRC ;COLOR IS TO BE STORED IN THE HI OR LO-
RAR ;ORDER NYBBLE
* GET THE SPECIFIED COLOR FROM MEMORY INTO D
PUSH PSW ;SAVE THE CY FOR FURTHER REFERENCE
ORA L ;COMPLETE THE ADDRESS
MOV L,A
POP PSW ;GET THE CY BACK
MOV A,M ;GET THE TWO PIXELS POINTED TO BY THE @
JNC $+3+4 ;IF WE WANT LO-NYB PIXEL, WE'RE OKAY
RRC ;ELSE--GET HI-NYB PIXEL INTO LO-NYB
RRC ;OF A
RRC
RRC
ANI LONYB ;STRIP THE SUPERFLOUS HI-NYBBLE
MOV D,A ;GET PIXEL INTO PROPER REG AND RETURN
POP H
RET