PrintShopCompanion-Apple-II/PSC Source Disk 2 - Editors.../S_GREDIT4.txt

377 lines
6.4 KiB
Plaintext

;
; S:GREDIT4
;
; Print Shop Companion
;
; Creature Maker
;
; by Roland Gustafsson
; Copyright 1985
;
;
YPOS1 = 93
YPOS2 = 121
YPOS3 = 149
;
CRPART1 = 18
CRPART2 = 17
CRPART3 = 17
;
CREATURS = $6000
CRCOUNT = CREATURS
;
;
CRMAKER LDA #ESC
STA CRMOD
JSR SETMAX
JSR CLSCREEN
LDX #26
LDY #13
LDA #0
JSR SHOWAROW
;
JSR PRINT
BYT RTOSWITE,0,0,25,16
BYT PRCNTR,PRINVR
.DA #PRLOC,88,#4
.DA #PRSTR,TXTCMAKE,#CR
;
BYT PRNORM,PRRITE
BYT RTOSWITE,26,0,14,2
.DA #PRLOC,279,#11
BYT PRCSPACE,1,PRSPC,11
BYT 'USE UP &',CR
BYT 'DOWN TO',CR
BYT 'SELECT',CR
BYT 'PART. USE',CR
.DA #PRHTAB,231
BYT PRCSPACE,2
BYT PRCNTR
BYT 'LEFT & RIGHT',CR
BYT 'TO SELECT',CR
BYT 'CREATURE.',CR
;
BYT PRINVR
;
BYT RTOSWITE,26,YPOS1,14,2+11
BYT PRVTAB,YPOS1+3
BYT 'HEAD',CR
;
BYT RTOSWITE,26,YPOS2,14,2+11
BYT PRVTAB,YPOS2+3
BYT 'BODY',CR
;
BYT RTOSWITE,26,YPOS3,14,2+11
BYT PRVTAB,YPOS3+3
BYT 'LEGS',CR
;
BYT RTOSWITE,26,177,14,2
BRK
;
LDA PART
PHA
LDA #0
STA PART
JSR MOVEPIEC
INC PART
JSR MOVEPIEC
INC PART
JSR MOVEPIEC
PLA
STA PART
;
; Do the creature selection stuff
;
CRMAKER2 JSR BLAKBOTM
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#185
.DA #PRSTR,TXTPRET
BYT ' '
.DA #PRSTR,TXTWD,#CR
BRK
JSR CRSELECT
;
ESC4CR LDA #1
JSR SAVESPEC
BCC >0
JMP CRMAKER
;
^0 JSR JMPVECTS
ADR CRSAVE
ADR GREDIT2
ADR MAINMENU
;-----------
;
; Save the creature!
;
CRSAVE JSR SETTYPE
BYT 'GRAPHIC',0
TXTCMAKE BYT 'CREATURE MAKER',0
BYT 0
BYT 4
ADR EDITBUFF
ADR $240
JSR SAVEFILE
JMP ESC4CR
;-----------
;
; Build a creature
;
CRSELECT JSR SHOWGR
CRSELEC1 LSR CRARROWF
;
CRSELEC2 JSR CRARROWT
JSR FLSHINIT
;
^0 JSR POLEBTN
BMI >1
DEC FLASHLO
BNE <0
DEC FLASHHI
BPL <0
BMI CRSELEC2
;
^1 PHA
JSR CRARROW0
PLA
LDX PART
LDY PART1,X
JSR >2
BCS CRSELECT
BCC CRSELEC1
;
^2 JSR PARSE
.DA #'I',CRUP
.DA #$0B,CRUP
.DA #'M',CRDOWN
.DA #$0A,CRDOWN
.DA #'J',CRLEFT
.DA #$08,CRLEFT
.DA #'K',CRRITE
.DA #$15,CRRITE
;
.DA #CR,CRDONE
.DA #ESC,CRESC
;
BRK
CLC
RTS
;
CRESC PLA
PLA
PLA
PLA
JSR CMDQUIT2
JMP CRMAKER2
;
CRDONE PLA
PLA
RTS
;
CRUP DEX
BPL >0
LDX #1
;
CRDOWN INX
CPX #3
BLT >0
LDX #0
^0 STX PART
CLC
RTS
;
CRLEFT DEY
BPL >0
LDY CRCOUNT
DEY
DEY
;
CRRITE INY
CPY CRCOUNT
BLT >0
LDY #0
^0 TYA
STA PART1,X
JSR MOVEPIEC
SEC
RTS
;-----------
;
; Move piece from CRDATA to EDITBUFF
; and print it's name.
;
; PART is given in PART
; PIECE 0-9 is given in PART1,2 or 3
;
MOVEPIEC LDY PART
LDA PART1,Y
ASL
TAX
LDA CRADR,X
ADC CROFFSTL,Y
STA TMP0
LDA CRADR+1,X
ADC CROFFSTH,Y
STA TMP1
;
LDA #EDITBUFF
ADC CROFFSTL,Y
STA TMP2
LDA /EDITBUFF
ADC CROFFSTH,Y
STA TMP3
;
LDA CRLENGTH,Y
TAY
;
; Move piece over to EDITBUFF
;
^0 DEY
CPY #$FF
BEQ >1
LDA (TMP0),Y
STA (TMP2),Y
BLT <0
;
; Now print name of that piece
;
; First get address of text
;
^1 LDA CRCOUNT
ASL
TAY
LDA CRADR,Y
STA TMP0
LDA CRADR+1,Y
STA TMP1
;
LDY PART
LDX PART1,Y
;
LDY #0
;
; Find text location
;
^0 DEX
BMI >2
^1 LDA (TMP0),Y
PHA
INC TMP0
BNE *+4
INC TMP1
PLA
BNE <1
BEQ <0
;
^2 LDY TMP0
LDA TMP1
STY >5+0
STA >5+1
;
JSR GETYPOS
ADC #17
STA >3+0
STA >4+0
JSR PRINT
BYT RTOSBLAK,29
^3 BYT 0,11,7
.DA #PRLOC,203
^4 HEX 00
BYT PRSTR
^5 .DA 0000,#CR,#0
RTS
;-----------
CRARROWF HEX 00
;
; Toggle arrow on or off
;
CRARROWT LDA CRARROWF
EOR #$80
STA CRARROWF
BMI CRARROW1
;
; Erase arrow
;
CRARROW0 JSR GETYPOS
ADC #16
STA >0+0
JSR PRINT
BYT RTOSBLAK
BYT 26
^0 BYT 0,3,9,0
RTS
;
; Draw arrow
;
CRARROW1 JSR GETYPOS
ADC #16
STA >0+0
JSR PICDRAW
BYT 26
^0 BYT 0,3,9
HEX 810E8238826001C207C21FC207816001
HEX 8138820E00
RTS
;-----------
;
; LOOKUP TABLES....
;
CLEN = 11*52
;
C = CREATURS+1
;
; Address of each piece
;
CRADR ADR C+0*CLEN
ADR C+1*CLEN
ADR C+2*CLEN
ADR C+3*CLEN
ADR C+4*CLEN
ADR C+5*CLEN
ADR C+6*CLEN
ADR C+7*CLEN
ADR C+8*CLEN
ADR C+9*CLEN
ADR C+10*CLEN
;-----------
;
; Offsets for each of the 3 parts
;
CROFF1 = 0
CROFF2 = 11*CRPART1
CROFF3 = 11*CRPART1+CRPART2
;
CROFFSTL BYT CROFF1,CROFF2,CROFF3
CROFFSTH HBY CROFF1,CROFF2,CROFF3
;
; Length of each part
;
CRLENGTH BYT 11*CRPART1
BYT 11*CRPART2
BYT 11*CRPART3
;-----------
;
; Y position for each part
;
GETYPOS LDY PART
LDA YPOS,Y
CLC
RTS
;
YPOS BYT YPOS1,YPOS2,YPOS3
;-----------
;
; DATA
;
PART HEX 00
PART1 BRK
PART2 BRK
PART3 BRK
;
;
;
USR "GREDIT,S4",ORG
;
ICL "S:COMMONEDIT"