;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ;Û Û ;Û SYSTEM PROCEDURES Û ;Û Û ;Û These procedures are not optimized. Û ;Û Û ;Û NOTE: '&' - this char can use only with PROC/PROCS and MACRO. Û ;Û Û ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ;----------------------------------------------------------------------------- ; Turn on ROM. ;----------------------------------------------------------------------------- ROM&ON MACRO lda #255 sta $D301 ENDM ;----------------------------------------------------------------------------- ; Copy ROM to RAM. ;----------------------------------------------------------------------------- ROM&OFF PROC ;przygotowanie ldy #159 LDA #0 sta $0244 sta _gdzie_+1 sta _po_+1 ;przenosimy ROM do RAM _trs_: iny sty _gdzie_+2 sty _po_+2 ldx #0 _po_: lda $A000,x sta $6000,x inx bne _po_ jsr _trbyt_ cpy #$CF bne _cnt_ ldy #$D7 _cnt_: cpy #$FF bne _trs_ LDA #254 sta $D301 rts ;gˆ¢wna procedura _trbyt_: sei lda #$FE sta $D301 lda <_rti_ sta $FFFA sta $FFFE lda >_rti_ sta $FFFA+1 sta $FFFE+1 ldx #0 _skad_: lda $6000,x _gdzie_: sta $A000,x inx bne _skad_ cli LDA #255 sta $D301 rts _rti_: rti ENDP ;----------------------------------------------------------------------------- ; Quit to DOS. ;----------------------------------------------------------------------------- Dos MACRO jmp (10) ENDM ;----------------------------------------------------------------------------- ; Quit to SELF TEST. ;----------------------------------------------------------------------------- Bye MACRO jmp $e480 ENDM ;----------------------------------------------------------------------------- ; Convert DECIMAL to BINARY. ; in: ((32)) - word. (DECIMAL) ; ((34)) - adres of 16 free bytes (BINARY) ;----------------------------------------------------------------------------- Bin PROC ((32)),((34)) lda 35 ldy #7 _bin0_: lsr 33 bcs _bin1_ lda #'0' bne _bin2_ _bin1_: lda #'1' _bin2_: sta (34),y dey bpl _bin0_ ldy #15 _bin3_: lsr 32 bcs _bin4_ lda #'0' BNE _bin5_ _bin4_: lda #'1' _bin5_: sta (34),y dey cpy #8 bpl _bin3_ rts ENDP ;----------------------------------------------------------------------------- ; Convert DECIMAL to HEXIMAL. ; in: ((32)) - word. (DECIMAL) ; ((34)) - adres of 4 free bytes (HEXIMAL) ;----------------------------------------------------------------------------- Hex PROC ((32)),((34)) _Hex_: ldx 34 ldy #1 lda 33 jsr _hexbyte_ ldy #3 LDA 32 _hexbyte_: pha and #%00001111 tax lda _hextab_,x sta (34),y dey pla lsr @ lsr @ lsr @ lsr @ tax lda _hextab_,x sta (34),y rts _hextab_0123456789ABCDEF' ENDP ;----------------------------------------------------------------------------- ; Convert DECIMAL to BINARY. ; in: ((32)) - address of string (ASCII+Zero) ; out: A - length of text. ;----------------------------------------------------------------------------- Length PROC AX stx 32 sta 33 ldy #255 _loop_length_: iny lda (32),y beq _length1_ cpy #255 beq _length1_ cmp #155 bne _loop_length_ _length1_: tya rts ENDP ;----------------------------------------------------------------------------- ; Random number. ; out: A - number. ;----------------------------------------------------------------------------- Random MACRO lda 53770 ENDM ;----------------------------------------------------------------------------- ; Set single byte. ; in: address ; byte ;----------------------------------------------------------------------------- Poke MACRO address,byte lda #byte sta address ENDM ;----------------------------------------------------------------------------- ; Set single word. ; in: address ; byte ;----------------------------------------------------------------------------- DPoke MACRO address,word lda word sta address+1 ENDM