;Test aller A 5105 - Versionsnummern ;FILE :VERSION.INC ;AUTOR:Lutz Elssner ###### Programm darf nicht auf 4000-7FFF stehen ###### ;STAND:07.11.89 ;Steuervariablen fuer bedingte Uebersetzung: SCP ;Adressen, wo Zeichenketten der Versionsnummern stehen: CGGAD, DSEAD ;Versionsnummern: SCPV, CGGV, DSEV ;Unterprogramme: PRNST, PRNAD ;================================ IF SCP ;Pruefung SCP-Systemkennzeichen (Soemmerdaer Vorspann) LD IX,(6) LD A,(IX+20) CP 'M' JR NZ,SYF LD A,(IX+21) CP 'D' JR NZ,SYF LD A,(IX+22) CP 2 JR Z,VT1 SYF: LD DE,VTX1 JP PRNST ; VTX1: DB ' ACHTUNG PROGRAMM NUR FUER BIC MIT SCPX 5105 !$' ;================================ ;Pruefung der SCP-Versionsnummer VT1: LD HL,SCPV LD A,L OR H JR Z,VT3 ;kein Versionstest LD C,(IX+14) LD B,(IX+15) ;Test auf Version z.B.:02.0x (letzte Tetrade beliebig, wenn SCPV=020F) LD A,L AND 0FH ;0000xxxx CP 0FH ;00001111 ? JR NZ,VT2 ;nein -> vollst. Versionstest LD A,C ;E=xxxx1111 OR 0FH LD C,A ;L=xxxx1111 Bit 0-3 beliebig VT2: OR A ;CY=0 SBC HL,BC JR Z,VT3 ;richtige Versionsnummer LD DE,VTX2 LD HL,SCPV JR VTA ; VTX2: DB ' Falsche SCP-Version !$' ;================================ ENDIF ;SCP ;================================ ;Pruefung der CGG-Versionsnummer VT3: LD HL,CGGV LD A,L OR H JR Z,VT5 ;kein Versionstest LD DE,CGGAD LD C,00000000B ;4000-7FFF Bank 0 (32 K ROM) CALL VK JR C,VT41 ;Test auf Version z.B.:02.0x (letzte Tetrade beliebig, wenn SCPV=020F) LD A,L AND 0FH ;0000xxxx CP 0FH ;00001111 ? JR NZ,VT4 ;nein -> vollst. Versionstest LD A,C ;E=xxxx1111 OR 0FH LD C,A ;L=xxxx1111 Bit 0-3 beliebig VT4: OR A ;CY=0 SBC HL,BC JR Z,VT5 ;richtige Versionsnummer VT41: LD DE,VTX3 LD HL,CGGV VTA: PUSH HL CALL PRNST LD DE,VTXA CALL PRNST POP HL JP PRNAD ; VTX3: DB ' Falsche CGG-ROM Version !$' VTXA: DB ' geforderte Versionsnummer:$' ;================================ ;Pruefung der DSE-Versionsnummer VT5: LD HL,DSEV LD A,L OR H JR Z,VT7 ;kein Versionstest LD DE,DSEAD LD C,00000100B ;4000-7FFF Bank 1 (16 K DSE ROM) CALL VK JR C,VT61 ;Test auf Version z.B.:02.0x (letzte Tetrade beliebig, wenn SCPV=020F) LD A,L AND 0FH ;0000xxxx CP 0FH ;00001111 ? JR NZ,VT6 ;nein -> vollst. Versionstest LD A,C ;E=xxxx1111 OR 0FH LD C,A ;L=xxxx1111 Bit 0-3 beliebig VT6: OR A ;CY=0 SBC HL,BC JR Z,VT7 ;richtige Versionsnummer VT61: LD DE,VTX4 LD HL,DSEV JR VTA ; VTX4: DB ' Falsche DSE-ROM Version !$' ;================================ ;Unterprogramm Versionsnummer aus ROM zurueckkonvertieren VK: IN A,(PPIA) PUSH AF AND 11110011B ;4000-7FFF Bank 0 oder 1 OR C OUT (PPIA),A ; LD A,(DE) INC DE SUB '0' LD B,A ;B=High-Teil Einer ; LÄ A,(DE) INC DE ;'.' CP '.' JR NZ,VKF ; LD A,(DE) INC DE SUB '0' LD C,A ;C=Low-Teil Zehner AND 11110000B JR NZ,VKF SLA C ;....xxxx SLA C SLA C ;CY <---- 0 SLA C ;xxxx0000 ; LD A,(DE) SUB '0' LD D,A AND 11110000B JR NZ,VKF OR D LD C,A ;C=Zehner komplett ; POP AF OUT (PPIA),A OR A RET ;-------------------------------- VKF: POP AF OUT (PPIA),A SCF RET ;================================ VT7: