CASINI = $02 WARMST = $08 DOSINI = $0C RTCLOK = $12 BUFRLO = $32 BUFRHI = $33 BFENLO = $34 BFENHI = $35 VAR30 = $30 VAR31 = $31 VAR36 = $36 VAR37 = $37 VAR38 = $38 VAR39 = $39 VAR3A = $3A VAR3C = $3C VAR40 = $40 CRSINH = $02F0 B0ICCOM = $0342 B0ICBAL = $0344 B0ICBAH = $0345 B0ICBLL = $0348 COLBK = $D01A POT0 = $D200 POT1 = $D201 RANDOM = $D20A IRQST = $D20E SKSTAT = $D20F PORTB = $D301 PACTL = $D302 PBCTL = $D303 DMACTL = $D400 NMIEN = $D40E CIOV = $E456 *= $80 T2_HDR =* T2_HDR_TYPE =* * = * + 1 T2_HDR_NAME_LEN = 10 T2_HDR_NAME =* * = * + T2_HDR_NAME_LEN T2_HDR_START =* T2_HDR_STLO =* * = * + 1 T2_HDR_STHI =* * = * + 1 T2_HDR_LENGTH =* T2_HDR_LENLO =* * = * + 1 T2_HDR_LENHI =* * = * + 1 T2_HDR_RUN =* T2_HDR_RUNLO =* * = * + 1 T2_HDR_RUNHI =* * = * + 1 T2_HDR_END =* *= $80 TU_HDR =* TU_HDR_TYPE =* * = * + 1 TU_HDR_NAME_LEN = 20 TU_HDR_NAME =* * = * + TU_HDR_NAME_LEN TU_HDR_START =* TU_HDR_STLO =* * = * + 1 TU_HDR_STHI =* * = * + 1 TU_HDR_LENGTH =* TU_HDR_LENLO =* * = * + 1 TU_HDR_LENHI =* * = * + 1 TU_HDR_RUN =* TU_HDR_RUNLO =* * = * + 1 TU_HDR_RUNHI =* * = * + 1 TU_HDR_END =* .WORD $FFFF BLK_START = $1400 * = BLK_START - 4 .WORD BLK_START .WORD BLK_END - 1 BLK_AT_LOAD = * BLK_IN_REAL = $0400 BLK_LDRL_DIFF = BLK_AT_LOAD - BLK_IN_REAL * = * - BLK_LDRL_DIFF ;little puzzling code - cleans $80-$FF and then jumps to CASINI CLEANRUN LDA #$00 TAX STA RUNVECT + 2 NOP NOP NOP NOP NOP NOP NOP NOP NOP CR_LP1 STA TU_HDR,X INX BPL CR_LP1 NOP NOP RUNVECT JMP ($0202) * = * + BLK_LDRL_DIFF ;starts by relocating code down RELOC LDY #$00 LDX #>( BLK_END - BLK_START + 1 + $FF ) BLK_SRC_LD LDA BLK_AT_LOAD,Y BLK_DEST_ST STA BLK_IN_REAL,Y INY BNE BLK_SRC_LD INC BLK_SRC_LD + 2 INC BLK_DEST_ST + 2 DEX BNE BLK_SRC_LD ;display warning msg LDX #MSG_WARN JSR $C642 ;set dosini and run it LDA #PRG_START STA DOSINI+1 JMP PRG_START MSG_WARN: .BYTE "P O Z O R! Tzv. Superturbo neni kompa-tibilni s T2000 " .BYTE "(jina delka hlavicky, kmitocty)", $9B * = * - BLK_LDRL_DIFF .BYTE $02, $CA, $8E, $01, $D3, $8E, $F0, $02 PRG_START LDA #MSG_HDR JSR DISPMSG L14A6 JSR DOBEEP LDA #$34 STA PACTL STA PBCTL LD_RESTART JSR SETALL JSR L1645 JSR L15FC LDA VAR38 CMP #$B4 BCC LOAD_T2 LOAD_TU ;sets buffer for SuperTurbo header LDA #TU_HDR_END STA BFENLO ;BEWARE! Works only with $80!!!! LDA # (TU_HDR_NAME - 1) JSR DISPMSG LDA #$32 DOWAIT ADC RTCLOK+2 STILLWAIT CMP RTCLOK+2 BNE STILLWAIT RTS DISPERR LDA #MSG_ERR DISPMSG LDX #$00 STA B0ICBAL STY B0ICBAH LDA #$09 STA B0ICCOM LDA #$FF STA B0ICBLL JMP CIOV LD_TU_BLK STA VAR36 JSR SETALL PHP L15A2 JSR L1692 L15A5 LDY VAR39 JSR L1697 BCC L15A2 CPY VAR3A BCS L15A5 JSR L1697 BCC L15FB LDY VAR38 JMP L15D6 L15BA PLP BNE L15C5 LDA VAR36 EOR VAR3C BNE L15FC BEQ L15D1 L15C5 LDY #$00 LDA VAR3C STA (BUFRLO),Y INC BUFRLO BNE L15D1 INC BUFRHI L15D1 LDY VAR38 INY INY PHP L15D6 LDA #$01 STA VAR3C L15DA JSR L1692 BCC L15FB CPY VAR39 ROL VAR3C LDY VAR38 BCC L15DA LDA VAR31 EOR VAR3C STA VAR31 LDA BUFRLO CMP BFENLO LDA BUFRHI SBC BFENHI BCC L15BA LDA #$00 CMP VAR31 L15FB PLA L15FC LDA #$40 STA NMIEN STA IRQST RTS LD_T2_BLK STA VAR36 JSR SETALL PHP LDA #$B0 STA VAR38 LDA #$D6 STA VAR39 JSR L1692 BCC L15FB LDY #$00 JSR L1692 BCC L15FB L161F LDY #$C8 JSR L1697 BCC L15FB CPY #$D7 BCS L161F JSR L1697 BCC L15FB LDY #$B0 JMP L15D6 SETALL LDY #$00 STY VAR30 STY VAR31 STY NMIEN STY DMACTL STY IRQST CLC RTS L1645 JSR L1692 BCC L1645 LDA #$03 STA VAR37 L164E LDY #$00 STY VAR40 LDX #$03 L1654 JSR L1692 BCC L1645 DEX BNE L1654 TYA LSR PHA EOR #$FF STA VAR38 PLA LSR PHA EOR #$FF STA VAR39 PLA LSR EOR #$FF STA VAR3A LDY #$00 JSR L1697 BCC L1645 L1677 LDY VAR38 JSR L1692 BCC L1645 CPY VAR39 BCC L1645 INC VAR40 BNE L1677 DEC VAR37 BPL L164E LDY #$00 JSR L1697 BCC L1645 RTS L1692 JSR L1697 BCC L16B4 L1697 LDA RANDOM AND #$E4 ORA VAR30 LSR AND VAR37 STA COLBK L16A4 INY BEQ L16B4 LDA SKSTAT AND #$10 CMP VAR30 BEQ L16A4 STA VAR30 SEC RTS L16B4 CLC RTS MSG_HDR .BYTE " Tzv.Universal TURBO (c)1988 RICO", $9B MSG_ERR .BYTE "Load Error - Try again", $9B .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 .BYTE $00 * = * + BLK_LDRL_DIFF BLK_END = * .WORD $02E0 .WORD $02E1 .WORD RELOC