ref: 705e6824687ed247a28cfbaedd47bf33bd1da32a
dir: /common/serial.asm/
Serial: ; 6ef ; The serial interrupt. push af push bc push de push hl ld a, [$ffc9] and a jr nz, .asm_71c ld a, [$c2d4] bit 0, a jr nz, .asm_721 ld a, [$ffcb] inc a jr z, .asm_726 ld a, [rSB] ld [hSerialReceive], a ld a, [hSerialSend] ld [rSB], a ld a, [$ffcb] cp $2 jr z, .asm_752 ld a, 0 << rSC_ON ld [rSC], a ld a, 1 << rSC_ON ld [rSC], a jr .asm_752 .asm_71c call Function3e80 jr .asm_75a .asm_721 call Function2057 jr .asm_75a .asm_726 ld a, [rSB] cp $1 jr z, .asm_730 cp $2 jr nz, .asm_752 .asm_730 ld [hSerialReceive], a ld [$ffcb], a cp $2 jr z, .asm_74f xor a ld [rSB], a ld a, $3 ld [rDIV], a .asm_73f ld a, [rDIV] bit 7, a jr nz, .asm_73f ld a, 0 << rSC_ON ld [rSC], a ld a, 1 << rSC_ON ld [rSC], a jr .asm_752 .asm_74f xor a ld [rSB], a .asm_752 ld a, $1 ld [$ffca], a ld a, $fe ld [hSerialSend], a .asm_75a pop hl pop de pop bc pop af reti ; 75f Function75f: ; 75f ld a, $1 ld [$ffcc], a .asm_763 ld a, [hl] ld [hSerialSend], a call Function78a push bc ld b, a inc hl ld a, $30 .asm_76e dec a jr nz, .asm_76e ld a, [$ffcc] and a ld a, b pop bc jr z, .asm_782 dec hl cp $fd jr nz, .asm_763 xor a ld [$ffcc], a jr .asm_763 .asm_782 ld [de], a inc de dec bc ld a, b or c jr nz, .asm_763 ret ; 78a Function78a: ; 78a xor a ld [$ffca], a ld a, [$ffcb] cp $2 jr nz, .asm_79b ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a .asm_79b ld a, [$ffca] and a jr nz, .asm_7e5 ld a, [$ffcb] cp $1 jr nz, .asm_7c0 call Function82b jr z, .asm_7c0 call .asm_825 push hl ld hl, $cf5c inc [hl] jr nz, .asm_7b7 dec hl inc [hl] .asm_7b7 pop hl call Function82b jr nz, .asm_79b jp Function833 .asm_7c0 ld a, [rIE] and $f cp $8 jr nz, .asm_79b ld a, [$cf5d] dec a ld [$cf5d], a jr nz, .asm_79b ld a, [$cf5e] dec a ld [$cf5e], a jr nz, .asm_79b ld a, [$ffcb] cp $1 jr z, .asm_7e5 ld a, $ff .asm_7e2 dec a jr nz, .asm_7e2 .asm_7e5 xor a ld [$ffca], a ld a, [rIE] and $f sub $8 jr nz, .asm_7f8 ld [$cf5d], a ld a, $50 ld [$cf5e], a .asm_7f8 ld a, [hSerialReceive] cp $fe ret nz call Function82b jr z, .asm_813 push hl ld hl, $cf5c ld a, [hl] dec a ld [hld], a inc a jr nz, .asm_80d dec [hl] .asm_80d pop hl call Function82b jr z, Function833 .asm_813 ld a, [rIE] and $f cp $8 ld a, $fe ret z ld a, [hl] ld [hSerialSend], a call DelayFrame jp Function78a .asm_825 ld a, $f .asm_827 dec a jr nz, .asm_827 ret ; 82b Function82b: ; 82b push hl ld hl, $cf5b ld a, [hli] or [hl] pop hl ret ; 833 Function833: ; 833 dec a ld [$cf5b], a ld [$cf5c], a ret ; 83b Function83b: ; 83b ld hl, $cf56 ld de, $cf51 ld c, $2 ld a, $1 ld [$ffcc], a .asm_847 call DelayFrame ld a, [hl] ld [hSerialSend], a call Function78a ld b, a inc hl ld a, [$ffcc] and a ld a, $0 ld [$ffcc], a jr nz, .asm_847 ld a, b ld [de], a inc de dec c jr nz, .asm_847 ret ; 862 Function862: ; 862 call Function309d callab Function4000 call Function87d jp Function30b4 ; 871 Function871: ; 871 call Function309d callab Function4000 jp Function87d ; 87d Function87d: ; 87d ld a, $ff ld [$cf52], a .asm_882 call Function8c1 call DelayFrame call Function82b jr z, .asm_89e push hl ld hl, $cf5c dec [hl] jr nz, .asm_89d dec hl dec [hl] jr nz, .asm_89d pop hl xor a jp Function833 .asm_89d pop hl .asm_89e ld a, [$cf52] inc a jr z, .asm_882 ld b, $a .asm_8a6 call DelayFrame call Function8c1 dec b jr nz, .asm_8a6 ld b, $a .asm_8b1 call DelayFrame call Function908 dec b jr nz, .asm_8b1 ld a, [$cf52] ld [$cf51], a ret ; 8c1 Function8c1: ; 8c1 push bc ld b, $60 ld a, [InLinkBattle] cp $1 jr z, .asm_8d7 ld b, $60 jr c, .asm_8d7 cp $2 ld b, $70 jr z, .asm_8d7 ld b, $80 .asm_8d7 call Function8f3 ld a, [$cf56] add b ld [hSerialSend], a ld a, [$ffcb] cp $2 jr nz, .asm_8ee ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a .asm_8ee call Function8f3 pop bc ret ; 8f3 Function8f3: ; 8f3 ld a, [hSerialReceive] ld [$cf51], a and $f0 cp b ret nz xor a ld [hSerialReceive], a ld a, [$cf51] and $f ld [$cf52], a ret ; 908 Function908: ; 908 xor a ld [hSerialSend], a ld a, [$ffcb] cp $2 ret nz ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a ret ; 919 Function919: ; 919 ld a, [InLinkBattle] and a ret nz ld a, $2 ld [rSB], a xor a ld [hSerialReceive], a ld a, $0 ld [rSC], a ld a, $80 ld [rSC], a ret ; 92e