Latest version of BeebEm

discuss bbc micro and electron emulators (including mame) here!
User avatar
hoglet
Posts: 12667
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: Latest version of BeebEm

Post by hoglet »

Diminished wrote: Tue Jun 21, 2022 5:06 pm Could it have something to do with the hardware configuration of the machine that wrote out each individual tape? More frequent IRQs on those machines or something?
Certainly if the ACIA Tx Interrupt is slow to be serviced, then the ACIA master reset write would be delayed.

i.e. there clearly the potential for a race condition between the interrupt handler and the first of the two extra bytes.

This might allow part of the first byte of extra data to "leak out".

Can you say anything about the range of values you see when this extra byte is present. Are the higher numbered bits typically '1'?

The interrupt might be slow to be serviced if another interrupt is pending. But think is unlikely to affect all blocks in the same program equally. It would be pretty random.

I wonder if there is a way the presence of certain paged ROMs might delay the interrupt processing? That might cause the behaviour to be consistent on a particular machine.

Also, it might be different on a Master.

Dave
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: Latest version of BeebEm

Post by Diminished »

I should be making dinner, but apparently this is more important.

So I did indeed manage to find one of the candidate titles within the vanekp WAV tape archive -- Caveman Adventure.

I grabbed "CavemanAdventure(ProgramPower).wav" from this WAV archive, and ran it through Quadbike. By default, Quadbike just produces a CSW output file, but the --inspect-dir debugging option tells it to dump useful intermediate data into various WAV files in a specified directory -- essentially, it allows you to "see what Quadbike is thinking".

Here is the very end of block 0 of the first file on the tape, according to Quadbike.
CavemanAdventure_block00_end.png
The top trace here is the 1-bit (2400 Hz) signal power, according to the Goertzel transform employed by Quadbike to identify bits. Below that is a sync stream derived from it, which shows where each pair of half-bits is sampled from the power. The bottom trace is the resulting decoded bitstream, which I have annotated with the bit values. Remember that bytes are sent LSB first, so the bits in each byte are read right to left, resulting in a sequence of DD 7B 7B as the final three bytes in the block.

Similarly, here's block 1:
CavemanAdventure_block01_end.png
So we would expect sequences of DD 7B 7B, and 80 31 31, for the final three bytes of the first two blocks on the tape. It certainly looks like there is a single duplicated CRC byte involved here, but what does the hacked Cornfield say about the UEF file from Stairway -- "CavemanAdventure_B.uef"? Does it agree?

Code: Select all

  stardot: blk #1: 1 garbage bytes; first matches CRC MSB (7b :: 7bdd)
  0x0153  4e dd 7b 7b
  stardot: blk #2: 1 garbage bytes; first matches CRC MSB (31 :: 3180)
  0x027d  69 80 31 31
You bet it does.
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: Latest version of BeebEm

Post by Diminished »

hoglet wrote: Tue Jun 21, 2022 6:57 pm Can you say anything about the range of values you see when this extra byte is present. Are the higher numbered bits typically '1'?
Good question. Not really. There seems to be a fairly even distribution for the most part, and all possible byte values seem to appear at least once. However, &FB is overwhelmingly the most common repeated CRC byte (62 occurrences, versus just 34 for its nearest rival, &D1). If I had to guess, I'd suggest that this is just because certain CRCs are more common than others, based on certain code (and therefore blocks) being shared between multiple tapes?

For completeness, here's a list: the frequency first, followed by the byte value it applies to, in case anyone wants to plot a graph or anything:

Code: Select all

  32 00
  18 01
  19 02
  16 03
  27 04
  20 05
  17 06
  27 07
  18 08
  21 09
  25 0a
  15 0b
  20 0c
  24 0d
  14 0e
  14 0f
  24 10
  25 11
  27 12
  16 13
  22 14
  18 15
  32 16
  21 17
  12 18
  20 19
  16 1a
  21 1b
  24 1c
  26 1d
  17 1e
  21 1f
  23 20
  19 21
  18 22
  32 23
  17 24
  10 25
  25 26
  22 27
  15 28
  20 29
  21 2a
  15 2b
  30 2c
  20 2d
  17 2e
  15 2f
  18 30
  19 31
  22 32
  22 33
  27 34
  21 35
  25 36
  23 37
  17 38
  18 39
  16 3a
  20 3b
  12 3c
  24 3d
  14 3e
  25 3f
  20 40
  19 41
  20 42
  21 43
  19 44
  32 45
  20 46
  18 47
  20 48
  24 49
  26 4a
  21 4b
  17 4c
  16 4d
  25 4e
  18 4f
  25 50
  20 51
  22 52
  18 53
  23 54
  19 55
  24 56
  18 57
  26 58
  26 59
  27 5a
  23 5b
  16 5c
  24 5d
  28 5e
  11 5f
  16 60
  24 61
  28 62
  18 63
  14 64
  30 65
  18 66
  22 67
  27 68
  27 69
  29 6a
  21 6b
  20 6c
  16 6d
  28 6e
  20 6f
  15 70
  25 71
  23 72
  13 73
  18 74
  18 75
  23 76
  17 77
  14 78
  19 79
  21 7a
  23 7b
  24 7c
  18 7d
  20 7e
  29 7f
  18 80
  16 81
  28 82
  28 83
  23 84
  22 85
  18 86
  24 87
  21 88
  26 89
  16 8a
  12 8b
  25 8c
  19 8d
  19 8e
  16 8f
  19 90
  17 91
  21 92
  19 93
  21 94
  19 95
  25 96
  14 97
  19 98
  19 99
  21 9a
  30 9b
  13 9c
  20 9d
  22 9e
  23 9f
  30 a0
  29 a1
  11 a2
  28 a3
  20 a4
  15 a5
  18 a6
  18 a7
  19 a8
  21 a9
  25 aa
  13 ab
  16 ac
  24 ad
  16 ae
  19 af
  17 b0
  11 b1
  16 b2
  14 b3
  24 b4
  15 b5
  23 b6
  17 b7
  20 b8
  24 b9
  11 ba
  21 bb
  27 bc
  21 bd
  26 be
  22 bf
  21 c0
  10 c1
  17 c2
  16 c3
  24 c4
  21 c5
  15 c6
  23 c7
  15 c8
  20 c9
   9 ca
  22 cb
  21 cc
  13 cd
  16 ce
  17 cf
  13 d0
  34 d1
  22 d2
  20 d3
  14 d4
  16 d5
  27 d6
  21 d7
  12 d8
  15 d9
  11 da
  17 db
  21 dc
  21 dd
  20 de
  16 df
  26 e0
  15 e1
  16 e2
  17 e3
  15 e4
  18 e5
  25 e6
  12 e7
  22 e8
  25 e9
  20 ea
  12 eb
  17 ec
  17 ed
  14 ee
  23 ef
  19 f0
  20 f1
  20 f2
  19 f3
  16 f4
  14 f5
  18 f6
  21 f7
  27 f8
  15 f9
  22 fa
  62 fb
  14 fc
  24 fd
  26 fe
  19 ff
  
Also, it might be different on a Master.
Or an Electron? I wonder if this is it. I don't know what the date distribution of the titles in that sub-corpus looks like. One of the tapes that exhibits this phenomenon is Snapper, which was obviously an early game -- the UEF claims to be version 1 -- but I'm sceptical of that claim, since the weird Acornsoft "version files" don't appear in the UEF.

Might it go the other way? I wonder if any of these UEFs were saved on OS 0.1? Or 0.1 with the Richard Russell CFS in-memory patch for the filing system bug? Or even OS 1.0 (which I think did briefly exist)?

Hmm ... don't we have the Acorn source code for MOS somewhere?
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

The problem is not with any build UEF files (so not with CSW or makeuef) but the extra CRC bytes appear ONLY when you save something in BeemEm to a UEF image that it adds extra CRC bytes.
If I raw dump a tape file on the BBC there are no extra bytes if I raw dump a uef made in BeemEm then it has the extra CRC bytes in the file.
Regards Peter.
User avatar
SKS1
Posts: 327
Joined: Sat Sep 19, 2020 12:04 am
Location: Highland Perthshire
Contact:

Re: Latest version of BeebEm

Post by SKS1 »

Diminished wrote: Tue Jun 21, 2022 10:25 pm Hmm ... don't we have the Acorn source code for MOS somewhere?
Here you go: https://github.com/stardot/AcornOS120
Miserable old curmudgeon who still likes a bit of an ARM wrestle now and then. Pi 4, 3, ARMX6, SA Risc PC, A540, A440
User avatar
hoglet
Posts: 12667
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: Latest version of BeebEm

Post by hoglet »

SKS1 wrote: Thu Jun 23, 2022 10:30 am
Diminished wrote: Tue Jun 21, 2022 10:25 pm Hmm ... don't we have the Acorn source code for MOS somewhere?
Here you go: https://github.com/stardot/AcornOS120
Here's the part of the source we have been discussing:
https://github.com/stardot/AcornOS120/b ... MOS74#L665
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: Latest version of BeebEm

Post by Diminished »

vanekp wrote: Thu Jun 23, 2022 9:15 am The problem is not with any build UEF files (so not with CSW or makeuef) but the extra CRC bytes appear ONLY when you save something in BeemEm to a UEF image that it adds extra CRC bytes.
If I raw dump a tape file on the BBC there are no extra bytes if I raw dump a uef made in BeemEm then it has the extra CRC bytes in the file.
No. It is not that simple.

I've already found real tape dumps that contain 1 extra byte after the CRC -- there is at least 1 of them in your own tape archive:


wrong.png
SKS1 wrote: Thu Jun 23, 2022 10:30 am
Diminished wrote: Tue Jun 21, 2022 10:25 pm Hmm ... don't we have the Acorn source code for MOS somewhere?
Here you go: https://github.com/stardot/AcornOS120
hoglet wrote: Thu Jun 23, 2022 10:41 am Here's the part of the source we have been discussing:
https://github.com/stardot/AcornOS120/b ... MOS74#L665
Thanks ... yeah, I was just looking at this. I was hoping there might be a comment that provided some insight, but there's nothing compelling.

I still want to know why a minority of real-world tapes are leaking a single duplicate CRC byte.

I would try MOS 0.1 if I had a way of getting it into ROM, but I don't.
User avatar
hoglet
Posts: 12667
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: Latest version of BeebEm

Post by hoglet »

Diminished wrote: Thu Jun 23, 2022 11:32 am I still want to know why a minority of real-world tapes are leaking a single duplicate CRC byte.
I'm still not sure about this either.

All of the critical stuff is occurring during the stop bit (at the end of the second CRC byte), so it's useful to consider the timeline of this bit:

Code: Select all

  0us: beginning of stop bit
416us: ACIA asserts IRQ (Tx Data Empty)
478us: IRQ Handler writes to TxD and ACIA releases IRQ
516us: resetACIA code writes to ACIA Control, setting a Master Reset
832us: end of stop bit
From the distribution of the extra byte values, there isn't much evidence of the ACIA stopping mid-way through the byte. So it's likely that once the next start bit happens, the ACIA is committed to sending the byte.

So for the extra byte to be present, somehow the resetACIA call must be delayed by > 316us.

There is very often another interrupt correlated with the stop bit, and I haven't yet worked out what it is. But it never seems to delay things enough that I see an extra byte being transmitted. I did over a hundred tests in a loop.

Dave

Dave
User avatar
hoglet
Posts: 12667
Joined: Sat Oct 13, 2012 7:21 pm
Location: Bristol
Contact:

Re: Latest version of BeebEm

Post by hoglet »

hoglet wrote: Thu Jun 23, 2022 1:52 pm From the distribution of the extra byte values, there isn't much evidence of the ACIA stopping mid-way through the byte. So it's likely that once the next start bit happens, the ACIA is committed to sending the byte.
So it appears this is not the case...

I did an experiment where I revectored IRQV1 to a delay loop, allowing me to introduce different amounts of delay. Once the delay exceeds ~400us you start to see the extra byte after the CRC, but it's clear the Master Reset takes effect immediately.

The data on the distribution of the extra bytes does not suggest the are being chopped in this way. So something else must be going on.

Looking at a disassembly of OS 0.10, the code after the CRC is different:

Code: Select all

    JSR .saveChecksumToTape                             ; save checksum to TAPE

.saveFinalTwoBytes
    JSR .saveByteAToTapeInternal                        ;
    INC .fsGotACharacterToReadOrWriteFlag               ;
    JSR .saveByteAToTapeInternal                        ;
    JSR .resetACIA                                      ;
and

Code: Select all

; ***************************************************************************************
.saveByteAToTapeInternal
    LDA #12                                             ;
    STA .verticalSyncCounter                            ; set to 12 vsyncs
-
    BIT .fsGotACharacterToReadOrWriteFlag               ;
    BMI +                                               ; if (byte written) then branch
    BIT .verticalSyncCounter                            ; check vertical sync counter
    BPL -                                               ; if (not timeout) then branch (loop back)
    JSR .checkForEscapeDuringCassetteOperation          ;
    BMI .saveByteAToTapeInternal                        ;

+
    ; byte is now read / written
    PHP                                                 ; store flags
    LDA #0                                              ; A=0
    STA .fsGotACharacterToReadOrWriteFlag               ; clear flag, we no longer have a byte
    PLP                                                 ; recall flags
    RTS 
So I think the behavoiur of this is well worth someone investigating.

Dave
Coeus
Posts: 3557
Joined: Mon Jul 25, 2016 12:05 pm
Contact:

Re: Latest version of BeebEm

Post by Coeus »

Dave,

Looking at the Acorn source you linked above, the routine that Toby calls 'saveByteAToTapeInternal' is called IWAIT and does not necessarily cause a byte to be written to tape. It is doing nothing with any of the ACIA regisrters. Instead it just waits for a flag byte, IFLAG, to go negative:

Code: Select all

IWAIT JSR ESCAPE
 BIT IFLAG
 BPL IWAIT

 LDAIM &00
 STA IFLAG ;Zero IFLAG
 LDA IBUF ;Restore A
 RTS  ;Note V preserved
IFLAG is obviously being set in the interrupt service routine. Here is the start of that:

Code: Select all

IRUPT

 DEC IFLAG
 LDA SROMSW ;Is SFS active ?
 BEQ NOTSPK ;Nope
At the point IFLAG is decremented and presumably becomes negative, the routine does not yet know what the cause of the interrupt is. Of course, the code looping on that flag won't see the change until the ISR returns so this could be undone again but that does not seem to be the case during the transmit code path.

As nothing new is loaded into IBUF, I think that means the two calls to IWAIT could cause up to two further copies of the last byte to be retransmitted, provided the source of the interrupt is the TX register becoming empty, but IWAIT will be satisfied by any interrupt from any source and in the case of non-tx-register-empty interrupts, nothing further will be transmitted.
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

I've changed BeebEm so that writing a master reset to the ACIA control register stops transmission, and this means BeebEm now writes only one duplicate CRC byte instead of two. I also fixed the UEF output so that the whole file is gzip compressed rather than compressing each UEF chunk separately, which fixes the incompatibility with other emulators.
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: Latest version of BeebEm

Post by Diminished »

hoglet wrote: Thu Jun 23, 2022 3:06 pm So I think the behavoiur of this is well worth someone investigating.
A bit more on a possible OS 0.1 connection with that single repeated byte of CRC.

There are a total of 100 UEF files from Stairway that have a garbage byte that matches the CRC. I was able to find 76 of these on bbcmicro.co.uk, which enabled me to look up their year of release.

Out of 76 UEF files, well over half (45) have a release year of 1982. A further 28 are from 1983. Just three titles have release dates of 1984 or later (and bbcmicro.co.uk might have incorrect dates for one or more of these).

My money is now on the OS 0.1 CFS being responsible for the single-byte leak. hoglet's investigations seem to point quite strongly towards OS 1.2 not leaking anything, and this is backed up by the mass of UEFs that do not exhibit this phenomenon.

Can anyone test it on hardware? All we need is some programs saved using the cassette filing system with an OS 0.1 ROM installed, and then uploaded somewhere as WAV or FLAC. (The OS 0.1 block-zero cassette filing system bug in-memory patch by Richard Russell isn't compulsory for this, since it doesn't really matter if the start of a block gets corrupted.)
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

After the comment from Diminished I went though and checked my collection here is a list of the programs that did have it:-
  • Adventure200(FoilkadeLtd)1982a 1982 (on every block of the file)
    BeebInvaders(Niblesoft) 1982 (on every block of the file)
    Billiards(HandHsoftware) 1983 (on every block of the file)
    Biology1a(RevisionSoftware) 19?? (only on one block X 0B and only Biology1a)
    Boffin1(Addictive) 1985 (only has it on block 11 Boffin last block)
    CavemanAdventure(ProgramPower) 1983 (on every block of the file)
    Cobra16k RoboSwamp(SoftwareForAll) 1982 (on every block of the file)
    Footer(MicroPower) 1982 (on every block of the file)
    Fortress(Amcom)(B)[TapeSideLabel] 1983 (only has it on one block ? 2D and only SideLabel of tape)
    GeoffCapesStrongman(Martech) 1984 (only on one block GEOFFCAPES 00)
    GrandPrix(SoftwareForAll) 1982 (on every block of the file)
    JR(SoftwareForAll) 1982 (on every block of the file)
    MoonRaider(ProgramPower) 1983 (on every block of the file)
    Robot(Viking Software) 1982 (on every block of the file)
    RowofFour(SoftwareForAll) 1982 (only has it on block ROW-OF-4 00)
    scdump (????) 19?? (on every block of the file)
    sLife-cLife(Golem) 1982 (only has it on block C_life 05)
    Space Hi-way (Amcom) (B) (Tape) [side-smalltabs] 1983 (on every block of the file)
    SpaceHi-Way(Amcom) 1983 (on every block of the file)
    YieArKung~FU(Imagine)(B)[SideLabel] 1985 (only has it on block YIE4 12 last block)
    YieArKung~FU(Imagine)(B)[SideNoLabel] 1985 (has it only on 3 blocks)
some have it on every block some have it only on one or two blocks, I have also put the (c) date that I found in the program if there was one.
This is from a collection of 239 program that I have myself converted either from original tapes or from wav files that where given to my by a forum member.
Regards Peter.
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

I am trying to compile the latest version of beebem on Windows 10 but get the following problems when I try to compile it what am I doing wrong, can anyone point me in the right direction. (I followed the steps in the readme.txt correctly as far as I know)

Code: Select all

Build started...
1>------ Build started: Project: OpusDDOS, Configuration: Debug x64 ------
2>------ Build started: Project: Watford, Configuration: Debug x64 ------
3>------ Build started: Project: Acorn1770, Configuration: Debug x64 ------
1>opus.cpp
2>Watford.cpp
3>Acorn.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
1>Done building project "OpusDDOS.vcxproj" -- FAILED.
3>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
2>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
3>Done building project "Acorn1770.vcxproj" -- FAILED.
2>Done building project "Watford.vcxproj" -- FAILED.
4>------ Build started: Project: BeebEm, Configuration: Debug x64 ------
4>z80dis.cpp
4>d:\downloads\beebem-windows-master\src\z80dis.cpp(20): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>z80_support.cpp
4>d:\downloads\beebem-windows-master\src\z80_support.cpp(21): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>z80.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>video.cpp
4>c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
4>via.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>uservia.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>userkybd.cpp
4>d:\downloads\beebem-windows-master\src\userkybd.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>uefstate.cpp
4>d:\downloads\beebem-windows-master\src\uefstate.cpp(24): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>uef.cpp
4>d:\downloads\beebem-windows-master\src\uef.cpp(26): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>tube.cpp
4>c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
4>teletext.cpp
4>d:\downloads\beebem-windows-master\src\teletext.cpp(50): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>sysvia.cpp
4>d:\downloads\beebem-windows-master\src\sysvia.cpp(28): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>serialdevices.cpp
4>d:\downloads\beebem-windows-master\src\serialdevices.cpp(40): fatal error C1083: Cannot open include file: 'process.h': No such file or directory
4>serial.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>scsi.cpp
4>d:\downloads\beebem-windows-master\src\scsi.cpp(33): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>sasi.cpp
4>d:\downloads\beebem-windows-master\src\sasi.cpp(33): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>romconfig.cpp
4>d:\downloads\beebem-windows-master\src\romconfig.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>preferences.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>music5000.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>main.cpp
4>d:\downloads\beebem-windows-master\src\main.cpp(25): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>Generating Code...
4>Compiling...
4>log.cpp
4>d:\downloads\beebem-windows-master\src\log.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>ide.cpp
4>d:\downloads\beebem-windows-master\src\ide.cpp(43): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>filedialog.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>econet.cpp
4>d:\downloads\beebem-windows-master\src\econet.cpp(31): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>discedit.cpp
4>d:\downloads\beebem-windows-master\src\discedit.cpp(27): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>disc8271.cpp
4>d:\downloads\beebem-windows-master\src\disc8271.cpp(26): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>disc1770.cpp
4>d:\downloads\beebem-windows-master\src\disc1770.cpp(28): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>debug.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>csw.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>beebwinspeech.cpp
4>d:\downloads\beebem-windows-master\src\beebwinspeech.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>beebwinprefs.cpp
4>d:\downloads\beebem-windows-master\src\beebwinprefs.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>beebwinio.cpp
4>d:\downloads\beebem-windows-master\src\beebwinio.cpp(24): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>beebwindx.cpp
4>d:\downloads\beebem-windows-master\src\beebwindx.cpp(23): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>beebwin.cpp
4>d:\downloads\beebem-windows-master\src\beebwin.cpp(32): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>beebsound.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>beebmem.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>avi.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>atodconv.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>XAudio2Streamer.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\guiddef.h(146): fatal error C1083: Cannot open include file: 'string.h': No such file or directory
4>UserPortBreakoutBox.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>Generating Code...
4>Compiling...
4>TapeMap.cpp
4>c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
4>StringUtils.cpp
4>c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
4>SprowCoPro.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>SoundStreamer.cpp
4>c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
4>SelectKeyDialog.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>Master512CoPro.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>FolderSelectDialog.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>DirectSoundStreamer.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>DebugTrace.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>ArmDisassembler.cpp
4>d:\downloads\beebem-windows-master\src\armdisassembler.cpp(28): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>Arm.cpp
4>d:\downloads\beebem-windows-master\src\arm.cpp(28): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>armdis.cpp
4>d:\downloads\beebem-windows-master\src\armulator\armdis.cpp(22): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
4>6502core.cpp
4>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
4>Generating Code...
4>Done building project "BeebEm.vcxproj" -- FAILED.
========== Build: 0 succeeded, 4 failed, 0 up-to-date, 0 skipped ==========
Regards Peter.
User avatar
tricky
Posts: 7699
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Latest version of BeebEm

Post by tricky »

I seem to remember that ctype is an old vs new compiler/language thing.
Are you using the supplied .vcxproj or another method?
If the vcxproj, did you upgrade it out leave it as it was?
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

I guess the one that comes with the downloaded beebem-windows-master from github.
would not know how to upgrade it, I am a newbie if it comes to compilers, normally stay well clear as I normally don't have much success.
tricky wrote: Mon Jul 11, 2022 9:20 pm I seem to remember that ctype is an old vs new compiler/language thing.
Are you using the supplied .vcxproj or another method?
If the vcxproj, did you upgrade it out leave it as it was?
Regards Peter.
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

I'm (slowly) implementing the 6850 TDR and TDSR for cassette output in BeebEm.

I have a question about the TDR empty interrupt. If a write to TDR happens when TDR and TDSR are both empty (and so the TDRE bit is set), how long does it take for the data to move from TDR to TDSR, and when should the TDR empty interrupt fire?

At the moment I've implemented that on a write, TDRE is cleared for a short time, after which TDR is copied to TDSR and TDRE is set and IRQ asserted. Is this the right approach, and how long should TDRE be cleared for in this case?
Last edited by chrisn on Wed Jul 13, 2022 8:48 pm, edited 1 time in total.
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

vanekp wrote: Mon Jul 11, 2022 9:03 pm I am trying to compile the latest version of beebem on Windows 10 but get the following problems when I try to compile it what am I doing wrong, can anyone point me in the right direction.
It looks like some of the Visual Studio files are missing, or the include paths aren't configured correctly. Did you install the 2019 version of Visual Studio Community? There's a 2022 version available, but I haven't tried it yet, so for now I'd recommend sticking with 2019.
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

chrisn wrote: Wed Jul 13, 2022 8:47 pm
vanekp wrote: Mon Jul 11, 2022 9:03 pm I am trying to compile the latest version of beebem on Windows 10 but get the following problems when I try to compile it what am I doing wrong, can anyone point me in the right direction.
It looks like some of the Visual Studio files are missing, or the include paths aren't configured correctly. Did you install the 2019 version of Visual Studio Community? There's a 2022 version available, but I haven't tried it yet, so for now I'd recommend sticking with 2019.
Oh I though I did but just checked as see its ver 2022, thanks for the tip, will try to find the correct version as microsoft keeps trying to direct you to the latest one. sigh stupid microsoft it gives a link https://visualstudio.microsoft.com/vs/older-downloads/ wich just takes me back to downloading version 2022 GRRRRR
Regards Peter.
User avatar
vanekp
Posts: 1413
Joined: Thu Nov 30, 2000 7:09 am
Location: The Netherlands
Contact:

Re: Latest version of BeebEm

Post by vanekp »

Thanks again chrisn for your help/tip.
Right after lots of loop hunting I finally found ver 2019, I am now able to compile it I successfully, I take it these warning error messages are normal as the program does run.

Code: Select all

Build started...
1>------ Build started: Project: Acorn1770, Configuration: Debug x64 ------
2>------ Build started: Project: Watford, Configuration: Debug x64 ------
3>------ Build started: Project: OpusDDOS, Configuration: Debug x64 ------
2>Watford.cpp
1>Acorn.cpp
3>opus.cpp
2>   Creating library D:\beebem-windows\Src\x64\Debug\Watford.lib and object D:\beebem-windows\Src\x64\Debug\Watford.exp
3>   Creating library D:\beebem-windows\Src\x64\Debug\OpusDDOS.lib and object D:\beebem-windows\Src\x64\Debug\OpusDDOS.exp
1>   Creating library D:\beebem-windows\Src\x64\Debug\Acorn1770.lib and object D:\beebem-windows\Src\x64\Debug\Acorn1770.exp
1>Acorn1770.vcxproj -> D:\beebem-windows\Src\x64\Debug\Acorn1770.dll
1>Acorn1770.vcxproj -> D:\beebem-windows\Src\x64\Debug\Acorn1770.pdb (Full PDB)
3>OpusDDOS.vcxproj -> D:\beebem-windows\Src\x64\Debug\OpusDDOS.dll
3>OpusDDOS.vcxproj -> D:\beebem-windows\Src\x64\Debug\OpusDDOS.pdb (Full PDB)
2>Watford.vcxproj -> D:\beebem-windows\Src\x64\Debug\Watford.dll
2>Watford.vcxproj -> D:\beebem-windows\Src\x64\Debug\Watford.pdb (Full PDB)
4>------ Build started: Project: BeebEm, Configuration: Debug x64 ------
4>z80_support.cpp
4>z80dis.cpp
4>z80.cpp
4>XAudio2Streamer.cpp
4>d:\beebem-windows\src\xaudio2streamer.cpp(91): warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
4>d:\beebem-windows\src\xaudio2streamer.cpp(138): warning C4267: '=': conversion from 'size_t' to 'UINT32', possible loss of data
4>video.cpp
4>via.cpp
4>uservia.cpp
4>UserPortBreakoutBox.cpp
4>userkybd.cpp
4>uefstate.cpp
4>uef.cpp
4>tube.cpp
4>d:\beebem-windows\src\tube.cpp(592): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(833): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(842): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(960): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(965): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(970): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(987): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(993): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1003): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1008): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1013): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1027): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1034): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1050): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1070): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1116): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1116): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1120): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1120): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1222): warning C4244: 'initializing': conversion from 'int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1233): warning C4244: 'initializing': conversion from 'int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1784): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1848): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1893): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1958): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1982): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1982): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1986): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1990): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(1994): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2003): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2012): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2020): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2020): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2036): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2036): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2040): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2040): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2048): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2048): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2061): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2065): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2065): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2069): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2077): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2077): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2118): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2127): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2184): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2230): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2293): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\tube.cpp(2401): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>teletext.cpp
4>TapeMap.cpp
4>sysvia.cpp
4>StringUtils.cpp
4>SprowCoPro.cpp
4>SoundStreamer.cpp
4>serialdevices.cpp
4>serial.cpp
4>Generating Code...
4>Compiling...
4>SelectKeyDialog.cpp
4>scsi.cpp
4>sasi.cpp
4>romconfig.cpp
4>preferences.cpp
4>music5000.cpp
4>d:\beebem-windows\src\music5000.cpp(138): warning C4267: '=': conversion from 'size_t' to 'UINT32', possible loss of data
4>Master512CoPro.cpp
4>d:\beebem-windows\src\master512copro.cpp(250): warning C4389: '==': signed/unsigned mismatch
4>d:\beebem-windows\src\master512copro.cpp(264): warning C4244: '=': conversion from 'int' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(298): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(305): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(312): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(319): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(326): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(333): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(350): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(357): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(364): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(371): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(378): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(385): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(399): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(410): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(420): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(428): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(436): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(444): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(464): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(475): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(485): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(493): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(501): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(509): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(526): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(533): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(540): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(547): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(554): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(561): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(579): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(586): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(593): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(600): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(607): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(614): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(632): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(639): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(646): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(653): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(660): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(667): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(988): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(989): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(990): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(991): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(992): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(993): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(994): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1011): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1012): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1013): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1014): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1015): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1016): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1017): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1034): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1035): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1036): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1037): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1038): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1039): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1040): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1057): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1058): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1059): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1060): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1061): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1062): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1063): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1083): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1084): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1090): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1091): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1098): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1105): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1112): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1119): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1139): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1234): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1240): warning C4244: '=': conversion from 'uint16_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1247): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1255): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1263): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1271): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1421): warning C4244: '+=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1464): warning C4244: '+=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1510): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1511): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1512): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1513): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1528): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1529): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1530): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1531): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1718): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1732): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1841): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1880): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1881): warning C4244: '=': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1902): warning C4244: '=': conversion from 'int32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1903): warning C4244: '=': conversion from 'int32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1937): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1945): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1978): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(1979): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2000): warning C4244: '=': conversion from 'int32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2001): warning C4244: '=': conversion from 'int32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2058): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2067): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2091): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2100): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2106): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2113): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2115): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2120): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2125): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2131): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2389): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2433): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2449): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2477): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2480): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2484): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2506): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2507): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2508): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2509): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2531): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2532): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2533): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2534): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2549): warning C4244: 'argument': conversion from '' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2557): warning C4244: 'argument': conversion from 'unsigned int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2584): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2585): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2586): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2587): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2609): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2610): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2611): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2612): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2733): warning C4244: '+=': conversion from 'int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2745): warning C4244: '=': conversion from 'uint16_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(2988): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3004): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3015): warning C4244: '=': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3075): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3085): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3097): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3109): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3121): warning C4244: 'argument': conversion from 'uint32_t' to 'uint8_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3133): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3788): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\master512copro.cpp(3796): warning C4244: 'argument': conversion from 'uint32_t' to 'uint16_t', possible loss of data
4>main.cpp
4>log.cpp
4>ide.cpp
4>d:\beebem-windows\src\ide.cpp(152): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>FolderSelectDialog.cpp
4>filedialog.cpp
4>econet.cpp
4>d:\beebem-windows\src\econet.cpp(369): warning C4244: 'argument': conversion from 'unsigned int' to 'u_short', possible loss of data
4>d:\beebem-windows\src\econet.cpp(403): warning C4244: 'argument': conversion from 'unsigned int' to 'u_short', possible loss of data
4>d:\beebem-windows\src\econet.cpp(552): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(564): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(641): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1028): warning C4244: 'argument': conversion from 'unsigned int' to 'u_short', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1042): warning C4456: declaration of 'i' hides previous local declaration
4>d:\beebem-windows\src\econet.cpp(970): note: see declaration of 'i'
4>d:\beebem-windows\src\econet.cpp(1297): warning C4244: 'argument': conversion from 'unsigned int' to 'u_short', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1481): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1482): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1497): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\econet.cpp(1498): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
4>discedit.cpp
4>d:\beebem-windows\src\discedit.cpp(367): warning C4244: 'initializing': conversion from 'int' to 'char', possible loss of data
4>d:\beebem-windows\src\discedit.cpp(571): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\discedit.cpp(577): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>disc8271.cpp
4>d:\beebem-windows\src\disc8271.cpp(288): warning C4389: '==': signed/unsigned mismatch
4>d:\beebem-windows\src\disc8271.cpp(310): warning C4389: '!=': signed/unsigned mismatch
4>d:\beebem-windows\src\disc8271.cpp(314): warning C4389: '!=': signed/unsigned mismatch
4>d:\beebem-windows\src\disc8271.cpp(1743): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
4>disc1770.cpp
4>d:\beebem-windows\src\disc1770.cpp(577): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>DirectSoundStreamer.cpp
4>d:\beebem-windows\src\directsoundstreamer.cpp(90): warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
4>d:\beebem-windows\src\directsoundstreamer.cpp(100): warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
4>d:\beebem-windows\src\directsoundstreamer.cpp(155): warning C4267: '+=': conversion from 'size_t' to 'DWORD', possible loss of data
4>DebugTrace.cpp
4>debug.cpp
4>d:\beebem-windows\src\debug.cpp(1619): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\debug.cpp(2087): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
4>d:\beebem-windows\src\debug.cpp(2087): warning C4267: 'initializing': conversion from 'size_t' to 'const int', possible loss of data
4>d:\beebem-windows\src\debug.cpp(2247): warning C4244: '=': conversion from 'int' to 'char', possible loss of data
4>d:\beebem-windows\src\debug.cpp(3173): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
4>csw.cpp
4>Generating Code...
4>Compiling...
4>beebwinspeech.cpp
4>beebwinprefs.cpp
4>beebwinio.cpp
4>beebwindx.cpp
4>d:\beebem-windows\src\beebwindx.cpp(601): warning C4244: '+=': conversion from 'int' to 'char', possible loss of data
4>beebwin.cpp
4>beebsound.cpp
4>d:\beebem-windows\src\beebsound.cpp(554): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
4>beebmem.cpp
4>avi.cpp
4>atodconv.cpp
4>armdis.cpp
4>ArmDisassembler.cpp
4>Arm.cpp
4>6502core.cpp
4>d:\beebem-windows\src\6502core.cpp(505): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(514): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(633): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(638): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(643): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(662): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(668): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(678): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(683): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(688): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(707): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(714): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(734): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(758): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(845): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(849): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(915): warning C4244: 'initializing': conversion from 'int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(926): warning C4244: 'initializing': conversion from 'int' to 'uint16_t', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(1136): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(1322): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(1827): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(1938): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2035): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2151): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2210): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2224): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2230): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2235): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2240): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2250): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2256): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2271): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2281): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2292): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2305): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2315): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2321): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2336): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2347): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2361): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2367): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2372): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2376): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2384): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2401): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2412): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2423): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2474): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2483): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2578): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2588): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2659): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2765): warning C4244: 'argument': conversion from 'int' to 'unsigned char', possible loss of data
4>d:\beebem-windows\src\6502core.cpp(2953): warning C4244: 'argument': conversion from 'int' to 'const unsigned char', possible loss of data
4>Generating Code...
4>thumbemu.c
4>bag.c
4>armsupp.c
4>d:\beebem-windows\src\armulator\armsupp.c(705): warning C4100: 'instr': unreferenced formal parameter
4>d:\beebem-windows\src\armulator\armsupp.c(741): warning C4100: 'state': unreferenced formal parameter
4>arminit.c
4>d:\beebem-windows\src\armulator\arminit.c(109): warning C4245: '=': conversion from 'int' to 'ARMword', signed/unsigned mismatch
4>d:\beebem-windows\src\armulator\arminit.c(286): warning C4459: declaration of 'isize' hides global declaration
4>d:\beebem-windows\src\armulator\armemu.h(18): note: see declaration of 'isize'
4>armemu.c
4>d:\beebem-windows\src\armulator\armemu.c(710): warning C4456: declaration of 'dest' hides previous local declaration
4>d:\beebem-windows\src\armulator\armemu.c(495): note: see declaration of 'dest'
4>d:\beebem-windows\src\armulator\armemu.c(843): warning C4456: declaration of 'temp' hides previous local declaration
4>d:\beebem-windows\src\armulator\armemu.c(496): note: see declaration of 'temp'
4>d:\beebem-windows\src\armulator\armemu.c(1584): warning C4456: declaration of 'temp' hides previous local declaration
4>d:\beebem-windows\src\armulator\armemu.c(496): note: see declaration of 'temp'
4>d:\beebem-windows\src\armulator\armemu.c(1754): warning C4456: declaration of 'dest' hides previous local declaration
4>d:\beebem-windows\src\armulator\armemu.c(495): note: see declaration of 'dest'
4>Generating Code...
4>d:\beebem-windows\src\armulator\armemu.c(841): warning C4701: potentially uninitialized local variable 'do_int' used
4>zutil.c
4>uncompr.c
4>trees.c
4>d:\beebem-windows\src\zlib\trees.c(724): warning C4244: '+=': conversion from 'int' to 'ush', possible loss of data
4>inftrees.c
4>inflate.c
4>inffast.c
4>gzwrite.c
4>d:\beebem-windows\src\zlib\gzwrite.c(212): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data
4>d:\beebem-windows\src\zlib\gzwrite.c(232): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data
4>d:\beebem-windows\src\zlib\gzwrite.c(371): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
4>gzread.c
4>d:\beebem-windows\src\zlib\gzread.c(317): warning C4245: '=': conversion from 'int' to 'unsigned int', signed/unsigned mismatch
4>d:\beebem-windows\src\zlib\gzread.c(319): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data
4>d:\beebem-windows\src\zlib\gzread.c(400): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data
4>d:\beebem-windows\src\zlib\gzread.c(472): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
4>gzlib.c
4>gzclose.c
4>deflate.c
4>d:\beebem-windows\src\zlib\deflate.c(1495): warning C4127: conditional expression is constant
4>d:\beebem-windows\src\zlib\deflate.c(1693): warning C4244: '=': conversion from 'unsigned int' to 'Bytef', possible loss of data
4>d:\beebem-windows\src\zlib\deflate.c(1694): warning C4244: '=': conversion from 'unsigned int' to 'Bytef', possible loss of data
4>d:\beebem-windows\src\zlib\deflate.c(1695): warning C4244: '=': conversion from 'unsigned int' to 'Bytef', possible loss of data
4>d:\beebem-windows\src\zlib\deflate.c(1696): warning C4244: '=': conversion from 'unsigned int' to 'Bytef', possible loss of data
4>crc32.c
4>d:\beebem-windows\src\zlib\crc32.c(215): warning C4127: conditional expression is constant
4>adler32.c
4>Generating Code...
4>BeebEm.vcxproj -> D:\beebem-windows\Src\x64\Debug\BeebEm.exe
4>BeebEm.vcxproj -> D:\beebem-windows\Src\x64\Debug\BeebEm.pdb (Full PDB)
4>Done building project "BeebEm.vcxproj".
========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Regards Peter.
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

That's good news. The warnings are to be expected, I'm gradually working to remove them.
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
User avatar
tricky
Posts: 7699
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Latest version of BeebEm

Post by tricky »

I can't remember if there is any profiling support in beebem, and can't find any reference to it, but I have added it to my version:

Code: Select all

6502core.cpp

int profile_counts[0x10000];

		profile_counts[ins.PC] += Cycles + CyclesTable[CurrentInstruction];



debug.cpp

extern int profile_counts[0x10000];
struct LabelCounts
{
	const Label * label;
	int cycle_count;
} label_counts[0x10001];


				case IDC_PROFILE:
					Profiling = (SendDlgItemMessage(hwndDebug, IDC_PROFILE, BM_GETCHECK, 0, 0) == BST_CHECKED);
					if (Profiling)
					{
						memset(profile_counts, 0, sizeof(profile_counts));
					}
					else if (FILE * file = log_fopen("profile.csv", "wt"))
					{
						memset(label_counts, 0, sizeof(label_counts));
						for (const Label & label : Labels)
						{
							label_counts[label.addr].label = &label;
						}
						std::vector<int> labels(1, 0x10000);
						for (int addr = 0; addr < 0x10000; ++addr)
						{
							if (label_counts[addr].label)
							{
								labels.resize(label_counts[addr].label->depth + 1, 0x10000);
								labels[label_counts[addr].label->depth] = addr;
							}
							for (int base : labels) label_counts[base].cycle_count += profile_counts[addr];
						}
						for (int addr = 0; addr < 0x10000; ++addr)
						{
							if (label_counts[addr].label)
							{
								const char * name = label_counts[addr].label->name;
								for (int i = 0; i < label_counts[addr].label->depth; ++i) name = strchr(name, '.') + 1;
								fprintf(file, "\"%s\",\"&%04X\",%i,%i,%s\"%s\"\n", label_counts[addr].label->name, addr, label_counts[addr].label->depth, label_counts[addr].cycle_count, ",,,,,,,,,,,,,,,,"+16-label_counts[addr].label->depth, name);
							}
						}
						fclose(file);
					}
					break;
It uses the labels exported from beebasm with the '.'s in to delimit sections of code.
.fun1
.fun1.sub1
.fun1.sub2
.fun2
Will show the total cycles from fun1 up to fun2 against fun1 and from fun1.sub1 up to fun1.sub2 against fun1.sub1 and then fun1.sub2 up to fun2 against fun1.sub1 so that fun1 will always be at least fun1.sub1 + fun1.sub2.
This is don't by summing the cycle counts for each address and then summing these for the ranges covered by the labels.
The results are written to profile.csv and look like:

Code: Select all

".fun1","&1000",1234,,"fun1"
".fun1.sub1","&1010",656,,,"sub1"
".fun1.sub2","&1020",512,,,"sub2"
...
I use a checkbox for controlling profiling, but it should work the same off the menu.
Enabling it clears the counts and then disabling it dumps the totals to "profile.csv".
While I have the cycle counts, I might add the instructions with counts too, similar to what I think Hoglet's code does for a HW capture.
User avatar
tricky
Posts: 7699
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Latest version of BeebEm

Post by tricky »

I've just added a bit to the end of the output to dump the individual instruction costs:

Code: Select all

						fprintf(file, "\"Disassembly\"\n");
						for (int addr = 0; addr < 0x10000; ++addr)
						{
							if (profile_counts[addr])
							{
								if (label_counts[addr].label) fprintf(file, "\"%s\"\n", label_counts[addr].label->name);
								char opstr[256]; DebugDisassembleInstruction(addr, true, opstr);

								fprintf(file, ",%i,\"&%04X\",\"%c%c%c\",\"%c%c%c\",\"%c%c%c\",\"%s\"\n", profile_counts[addr], addr, opstr[5]==' '?' ':'&', opstr[5], opstr[6], opstr[8]==' '?' ':'&', opstr[8], opstr[9], opstr[11]==' '?' ':'&', opstr[11], opstr[12], opstr+14);
							}
						}
goes just before the fclose(file).

Produces this with a bit of manipulation of the existing DebugDisassembleInstruction() output.

Code: Select all

.wait_frame_mid						
	325	&04E5	&A5	&08	   	 LDA 08                   
.wait_frame_mid.wait						
	1340155	&04E7	&C5	&06	   	 CMP 06                   
	804031	&04E9	&F0	&FC	   	 BEQ 04E7                 
	390	&04EB	&60	   	   	 RTS                      
.wait_frame_mid_btm						
	390	&04EC	&20	&E5	&04	 JSR 04E5                 
.wait_frame_btm						
	325	&04EF	&A5	&08	   	 LDA 08                   
.wait_frame_btm.wait						
	578200	&04F1	&C5	&07	   	 CMP 07                   
	346855	&04F3	&F0	&FC	   	 BEQ 04F1                 
	585	&04F5	&E6	&08	   	 INC 08                   
	390	&04F7	&60	   	   	 RTS                      
The instructions will be what they were at thte end of the capture, so any self-modding may make the output make less sense.

PS Looks like some of the instruction timings are off at the point that I grabbed them so I might need to do some investigating.

PPS Fix is to move:
profile_counts[ins.PC] += Cycles + CyclesTable[CurrentInstruction];
to after:
Cycles += CyclesTable[CurrentInstruction] -
CyclesToMemRead[CurrentInstruction] - CyclesToMemWrite[CurrentInstruction];
and just use:
profile_counts[ins.PC] += Cycles;
which was what I had first and can't reproduce what I did to convince myself that I was wrong!
User avatar
archie456
Posts: 180
Joined: Sat Sep 07, 2019 4:22 pm
Location: Chelmsford
Contact:

Re: Latest version of BeebEm

Post by archie456 »

Hi,

I've just posted an issue on github about an issue I'm having when a sw ram back is paged in and a break point is set above &8000 on the code running in the bank... hopefully that was the right place to post the problem:

https://github.com/stardot/beebem-windows/issues/110

Cheers.
Fraser
Posts: 628
Joined: Tue May 20, 2003 8:21 pm
Contact:

Re: Latest version of BeebEm

Post by Fraser »

I also discovered the extra byte on the end of some cassette blocks. I would guess it was fixed along with the introduction of the dummy byte in the carrier tone. It would be useful to update BeebWiki about this and also the empty block flag of BBC blocks.
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

archie456 wrote: Mon Nov 14, 2022 9:54 pm I've just posted an issue on github about an issue I'm having when a sw ram back is paged in and a break point is set above &8000 on the code running in the bank... hopefully that was the right place to post the problem:

https://github.com/stardot/beebem-windows/issues/110
Either GitHub or here is fine, thank you for posting. I just PM''d you a link to a private build that hopefully fixes the problem you're having.
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
User avatar
archie456
Posts: 180
Joined: Sat Sep 07, 2019 4:22 pm
Location: Chelmsford
Contact:

Re: Latest version of BeebEm

Post by archie456 »

chrisn wrote: Fri Nov 18, 2022 8:00 pm
archie456 wrote: Mon Nov 14, 2022 9:54 pm I've just posted an issue on github about an issue I'm having when a sw ram back is paged in and a break point is set above &8000 on the code running in the bank... hopefully that was the right place to post the problem:

https://github.com/stardot/beebem-windows/issues/110
Either GitHub or here is fine, thank you for posting. I just PM''d you a link to a private build that hopefully fixes the problem you're having.
Hi Chris,

Apologies for the delay in responding to you, I've been away. Thanks for sending the new build through - much appreciated.

I'm still getting the crash unfortunately, the same thing happens when the breakpoint is hit with code between &8000 to CFFF.

I can send you though my code if thats of use to you.

Thanks.
chrisn
Posts: 980
Joined: Sat Apr 19, 2014 12:31 pm
Location: UK
Contact:

Re: Latest version of BeebEm

Post by chrisn »

That might be helpful to track this bug down. Thank you!
Atom / BBC B with Music 5000/4000/2000 / Electron / A3000 / Master 128
User avatar
richmond62
Posts: 325
Joined: Sun Apr 16, 2017 4:15 pm
Location: Bulgaria
Contact:

Re: Latest version of BeebEm

Post by richmond62 »

I am assuming (on little or no evidence) that Richard Bannister's Horizon has not 'been back' to look at BeebEm's code since he
hived the thing off from MacBeebEm?

So, basically, any improvements he has are related to its performance on Macs rather than BBC Emulation?

Getting an answer out of him is not much easier than getting milk out of a stone.

So, would be grateful to a pointer towards any sort of Mac port (I have played around with a MacBeebEm 5 beta)
that is vaguely uptodate with BeebEm.
Last edited by richmond62 on Sat Nov 19, 2022 3:24 pm, edited 1 time in total.
User avatar
tricky
Posts: 7699
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Latest version of BeebEm

Post by tricky »

I can't help with beebem, but I think beebjit works on Mac.
b2 is also for Mac, why do I keep forgetting b2!
Last edited by tricky on Sun Nov 20, 2022 8:22 am, edited 1 time in total.
Post Reply

Return to “8-bit acorn emulators”